mgv-backoffice 1.43.3 → 1.45.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,148 +1,154 @@
1
- import { Fragment as e, Teleport as t, Text as n, Transition as r, cloneVNode as i, computed as a, createBlock as o, createCommentVNode as s, createElementBlock as c, createElementVNode as l, createSlots as u, createStaticVNode as d, createTextVNode as f, createVNode as p, defineComponent as m, effectScope as h, guardReactiveProps as g, mergeProps as _, nextTick as v, normalizeClass as y, normalizeProps as b, normalizeStyle as x, onBeforeUnmount as S, onMounted as C, onScopeDispose as w, onUnmounted as T, openBlock as E, reactive as D, readonly as O, ref as k, renderList as A, renderSlot as j, resolveComponent as M, resolveDynamicComponent as N, toDisplayString as P, unref as F, useId as ee, useSlots as te, vModelCheckbox as ne, vModelDynamic as re, vModelText as ie, vShow as ae, watch as I, withCtx as L, withDirectives as R, withKeys as oe, withModifiers as z } 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 B } 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";
1
+ import { Fragment as e, Teleport as t, Text as n, Transition as r, cloneVNode as i, computed as a, createBlock as o, createCommentVNode as s, createElementBlock as c, createElementVNode as l, createSlots as u, createStaticVNode as d, createTextVNode as f, createVNode as p, defineComponent as m, effectScope as h, getCurrentScope as g, guardReactiveProps as _, mergeProps as v, nextTick as y, normalizeClass as b, normalizeProps as x, normalizeStyle as S, onBeforeUnmount as C, onMounted as w, onScopeDispose as T, onUnmounted as E, openBlock as D, reactive as O, readonly as ee, ref as k, renderList as A, renderSlot as j, resolveComponent as M, resolveDynamicComponent as N, toDisplayString as P, unref as F, useId as te, useSlots as ne, vModelCheckbox as re, vModelDynamic as ie, vModelText as ae, vShow as oe, watch as I, withCtx as L, withDirectives as R, withKeys as se, withModifiers as z } from "vue";
2
+ import { ArrowDownIcon as ce, ArrowRightStartOnRectangleIcon as le, ArrowUpIcon as ue, Bars3Icon as de, BellIcon as fe, CheckCircleIcon as pe, CheckIcon as me, ChevronDoubleLeftIcon as he, ChevronDoubleRightIcon as ge, ChevronDownIcon as _e, ChevronRightIcon as ve, ClipboardDocumentCheckIcon as ye, ClipboardDocumentIcon as be, DocumentDuplicateIcon as xe, ExclamationCircleIcon as Se, ExclamationTriangleIcon as Ce, FolderIcon as we, InformationCircleIcon as Te, MagnifyingGlassIcon as Ee, MinusIcon as De, MoonIcon as Oe, SunIcon as ke, XMarkIcon as Ae } from "@heroicons/vue/24/outline";
3
+ import { HomeIcon as je } from "@heroicons/vue/24/solid";
4
+ import { RouterLink as Me, useRoute as Ne, useRouter as Pe } from "vue-router";
5
+ import { VueDatePicker as Fe } 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 = k(!1), Pe = !1, U = "mgv-theme";
10
- function Fe(e) {
11
- if (Pe) {
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 = k(!1), Ie = !1, H = "mgv-theme";
10
+ function Le(e) {
11
+ if (Ie) {
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 (Pe = !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 (Ie = !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" && h(!0).run(() => {
20
- I(H, (e) => {
21
- document.documentElement.classList.toggle("dark", e), window.localStorage?.setItem(U, e ? "dark" : "light");
20
+ I(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 Ie(e) {
26
- Fe(e?.storageKey ?? U);
25
+ function Re(e) {
26
+ Le(e?.storageKey ?? H);
27
27
  }
28
- function W(e) {
29
- Fe(e?.storageKey ?? U);
28
+ function U(e) {
29
+ Le(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 Le = { class: "min-w-0 flex-1" }, Re = {
40
+ var ze = { class: "min-w-0 flex-1" }, Be = {
41
41
  key: 0,
42
42
  class: "font-medium"
43
- }, ze = /* @__PURE__ */ m({
43
+ }, Ve = /* @__PURE__ */ m({
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
  }, i = a(() => n.value ? r[t.color].dark : r[t.color].light), u = a(() => {
72
72
  switch (t.color) {
73
- case V.SUCCESS: return fe;
74
- case V.WARNING: return Se;
75
- case V.INFO: return we;
76
- default: return xe;
73
+ case B.SUCCESS: return pe;
74
+ case B.WARNING: return Ce;
75
+ case B.INFO: return Te;
76
+ default: return Se;
77
77
  }
78
78
  }), d = a(() => {
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
  });
86
- return (t, n) => (E(), c("div", {
86
+ return (t, n) => (D(), c("div", {
87
87
  role: "alert",
88
- class: y(["flex gap-3 mb-4 rounded-lg border text-sm transition-colors", [e.compact ? "items-start px-3 py-2 text-xs" : "items-start p-4", i.value]])
89
- }, [(E(), o(N(u.value), {
90
- class: y(["shrink-0", [e.compact ? "w-4 h-4 mt-px" : "w-5 h-5 mt-0.5", d.value]]),
88
+ class: b(["flex gap-3 mb-4 rounded-lg border text-sm transition-colors", [e.compact ? "items-start px-3 py-2 text-xs" : "items-start p-4", i.value]])
89
+ }, [(D(), o(N(u.value), {
90
+ class: b(["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"])), l("div", Le, [e.title ? (E(), c("p", Re, P(e.title), 1)) : s("", !0), j(t.$slots, "default")])], 2));
92
+ }, null, 8, ["class"])), l("div", ze, [e.title ? (D(), c("p", Be, P(e.title), 1)) : s("", !0), j(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
96
  }({});
97
97
  //#endregion
98
98
  //#region src/utils/humanize.ts
99
- function Be(e) {
99
+ function He(e) {
100
100
  return e == null ? "" : String(e).replace(/_/g, " ");
101
101
  }
102
- function Ve(t, r = []) {
102
+ function Ue(t, r = []) {
103
103
  return t.map((t) => {
104
- if (t.type === n && typeof t.children == "string") return f(Be(t.children));
104
+ if (t.type === n && typeof t.children == "string") return f(He(t.children));
105
105
  if (t.type === e && Array.isArray(t.children)) {
106
106
  let e = i(t);
107
- return e.children = Ve(t.children, r), e;
107
+ return e.children = Ue(t.children, r), e;
108
108
  }
109
109
  if (typeof t.type == "string" && r.includes(t.type)) {
110
110
  let e = i(t);
111
- return typeof t.children == "string" ? e.children = Be(t.children) : Array.isArray(t.children) && (e.children = Ve(t.children, r)), e;
111
+ return typeof t.children == "string" ? e.children = He(t.children) : Array.isArray(t.children) && (e.children = Ue(t.children, r)), e;
112
112
  }
113
113
  return t;
114
114
  });
115
115
  }
116
116
  //#endregion
117
117
  //#region src/components/BaseBadge.vue?vue&type=script&setup=true&lang.ts
118
- var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
118
+ var We = "bg-red-100 text-red-700 border-red-200", Ge = /* @__PURE__ */ m({
119
119
  __name: "BaseBadge",
120
- props: { color: {
121
- type: String,
122
- required: !1
123
- } },
120
+ props: {
121
+ color: {
122
+ type: String,
123
+ required: !1
124
+ },
125
+ blink: {
126
+ type: Boolean,
127
+ default: !1
128
+ }
129
+ },
124
130
  setup(e) {
125
- let t = te(), n = a(() => !!t.default), r = () => Ve(t.default?.() ?? []), i = e, o = {
126
- [G.RED]: "bg-red-100 text-red-700 border-red-200",
127
- [G.GREEN]: "bg-green-100 text-green-700 border-green-200",
128
- [G.BLUE]: "bg-blue-100 text-blue-700 border-blue-200",
129
- [G.YELLOW]: "bg-yellow-100 text-yellow-700 border-yellow-200",
130
- [G.GRAY]: "bg-gray-100 text-gray-700 border-gray-200",
131
- [G.BLACK]: "bg-gray-800 text-gray-100 border-gray-700",
132
- [G.NONE]: "bg-gray-50 text-gray-600 border-gray-200"
133
- }, l = a(() => `inline-flex items-center gap-1 font-semibold text-xs leading-none px-3 py-1.5 rounded-full border ${i.color && o[i.color] || He}`);
134
- return (e, t) => n.value ? (E(), c("span", {
131
+ let t = ne(), n = a(() => !!t.default), r = () => Ue(t.default?.() ?? []), i = e, o = {
132
+ [W.RED]: "bg-red-100 text-red-700 border-red-200",
133
+ [W.GREEN]: "bg-green-100 text-green-700 border-green-200",
134
+ [W.BLUE]: "bg-blue-100 text-blue-700 border-blue-200",
135
+ [W.YELLOW]: "bg-yellow-100 text-yellow-700 border-yellow-200",
136
+ [W.GRAY]: "bg-gray-100 text-gray-700 border-gray-200",
137
+ [W.BLACK]: "bg-gray-800 text-gray-100 border-gray-700",
138
+ [W.NONE]: "bg-gray-50 text-gray-600 border-gray-200"
139
+ }, l = a(() => `inline-flex items-center gap-1 font-semibold text-xs leading-none px-3 py-1.5 rounded-full border ${i.color && o[i.color] || We}${i.blink ? " animate-pulse motion-reduce:animate-none" : ""}`);
140
+ return (e, t) => n.value ? (D(), c("span", {
135
141
  key: 0,
136
- class: y(l.value)
142
+ class: b(l.value)
137
143
  }, [p(r)], 2)) : s("", !0);
138
144
  }
139
- }), We = {
145
+ }), Ke = {
140
146
  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",
141
147
  "aria-label": "Breadcrumb"
142
- }, Ge = { class: "inline-flex items-center whitespace-nowrap space-x-1 md:space-x-3" }, Ke = {
148
+ }, qe = { class: "inline-flex items-center whitespace-nowrap space-x-1 md:space-x-3" }, Je = {
143
149
  class: "inline-flex items-center",
144
150
  style: { "margin-left": "0" }
145
- }, qe = /* @__PURE__ */ m({
151
+ }, Ye = /* @__PURE__ */ m({
146
152
  __name: "BaseBreadcrumb",
147
153
  props: {
148
154
  items: {
@@ -167,17 +173,17 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
167
173
  });
168
174
  return (t, n) => {
169
175
  let i = M("router-link");
170
- return E(), c("nav", We, [l("ol", Ge, [l("li", Ke, [p(i, {
176
+ return D(), c("nav", Ke, [l("ol", qe, [l("li", Je, [p(i, {
171
177
  to: "/",
172
178
  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"
173
179
  }, {
174
- default: L(() => [p(F(ke), { class: "h-4 w-4 text-gray-500 mr-2" }), n[0] ||= f(" Home ", -1)]),
180
+ default: L(() => [p(F(je), { class: "h-4 w-4 text-gray-500 mr-2" }), n[0] ||= f(" Home ", -1)]),
175
181
  _: 1
176
- })]), (E(!0), c(e, null, A(r.value, (e, t) => (E(), c("li", {
182
+ })]), (D(!0), c(e, null, A(r.value, (e, t) => (D(), c("li", {
177
183
  key: t,
178
184
  class: "inline-flex items-center",
179
185
  style: { "margin-left": "0" }
180
- }, [p(F(_e), { class: "h-4 w-4 text-gray-500" }), p(i, {
186
+ }, [p(F(ve), { class: "h-4 w-4 text-gray-500" }), p(i, {
181
187
  to: e.url,
182
188
  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"
183
189
  }, {
@@ -186,21 +192,21 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
186
192
  }, 1032, ["to"])]))), 128))])]);
187
193
  };
188
194
  }
189
- }), K = /* @__PURE__ */ function(e) {
195
+ }), G = /* @__PURE__ */ function(e) {
190
196
  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;
191
- }({}), q = /* @__PURE__ */ function(e) {
197
+ }({}), K = /* @__PURE__ */ function(e) {
192
198
  return e.EXTRA_SMALL = "EXTRA_SMALL", e.SMALL = "SMALL", e.BASE = "BASE", e.LARGE = "LARGE", e.EXTRA_LARGE = "EXTRA_LARGE", e;
193
- }({}), Je = [
199
+ }({}), Xe = [
194
200
  "type",
195
201
  "disabled",
196
202
  "onClick"
197
- ], Ye = {
203
+ ], Ze = {
198
204
  key: 0,
199
205
  class: "inline-flex items-center"
200
- }, Xe = { key: 1 }, Ze = { key: 2 }, Qe = ["type", "disabled"], $e = {
206
+ }, Qe = { key: 1 }, $e = { key: 2 }, et = ["type", "disabled"], tt = {
201
207
  key: 0,
202
208
  class: "inline-flex items-center"
203
- }, et = { key: 1 }, tt = { key: 2 }, nt = /* @__PURE__ */ m({
209
+ }, nt = { key: 1 }, rt = { key: 2 }, it = /* @__PURE__ */ m({
204
210
  __name: "BaseButton",
205
211
  props: {
206
212
  description: {
@@ -210,7 +216,7 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
210
216
  color: {
211
217
  type: String,
212
218
  required: !1,
213
- default: K.GREEN
219
+ default: G.GREEN
214
220
  },
215
221
  to: {
216
222
  type: String,
@@ -254,103 +260,103 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
254
260
  }
255
261
  },
256
262
  setup(e) {
257
- let { isDark: t } = W(), n = e;
263
+ let { isDark: t } = U(), n = e;
258
264
  function r() {
259
265
  let e = {
260
- [K.BLUE]: {
266
+ [G.BLUE]: {
261
267
  light: "text-blue-700 border-blue-300 hover:bg-blue-50",
262
268
  dark: "text-blue-400 border-blue-500/40 hover:bg-blue-500/10"
263
269
  },
264
- [K.GREEN]: {
270
+ [G.GREEN]: {
265
271
  light: "text-green-700 border-green-300 hover:bg-green-50",
266
272
  dark: "text-green-400 border-green-500/40 hover:bg-green-500/10"
267
273
  },
268
- [K.EMERALD]: {
274
+ [G.EMERALD]: {
269
275
  light: "text-emerald-700 border-emerald-300 hover:bg-emerald-50",
270
276
  dark: "text-emerald-400 border-emerald-500/40 hover:bg-emerald-500/10"
271
277
  },
272
- [K.RED]: {
278
+ [G.RED]: {
273
279
  light: "text-red-700 border-red-300 hover:bg-red-50",
274
280
  dark: "text-red-400 border-red-500/40 hover:bg-red-500/10"
275
281
  },
276
- [K.YELLOW]: {
282
+ [G.YELLOW]: {
277
283
  light: "text-yellow-700 border-yellow-300 hover:bg-yellow-50",
278
284
  dark: "text-yellow-400 border-yellow-500/40 hover:bg-yellow-500/10"
279
285
  },
280
- [K.PURPLE]: {
286
+ [G.PURPLE]: {
281
287
  light: "text-purple-700 border-purple-300 hover:bg-purple-50",
282
288
  dark: "text-purple-400 border-purple-500/40 hover:bg-purple-500/10"
283
289
  },
284
- [K.SKY]: {
290
+ [G.SKY]: {
285
291
  light: "text-sky-700 border-sky-300 hover:bg-sky-50",
286
292
  dark: "text-sky-400 border-sky-500/40 hover:bg-sky-500/10"
287
293
  },
288
- [K.AMBER]: {
294
+ [G.AMBER]: {
289
295
  light: "text-amber-700 border-amber-300 hover:bg-amber-50",
290
296
  dark: "text-amber-400 border-amber-500/40 hover:bg-amber-500/10"
291
297
  },
292
- [K.GRAY]: {
298
+ [G.GRAY]: {
293
299
  light: "text-gray-700 border-gray-300 hover:bg-gray-50",
294
300
  dark: "text-gray-300 border-gray-600 hover:bg-gray-800"
295
301
  },
296
- [K.DARK]: {
302
+ [G.DARK]: {
297
303
  light: "text-gray-700 border-gray-300 hover:bg-gray-50",
298
304
  dark: "text-gray-300 border-gray-600 hover:bg-gray-800"
299
305
  },
300
- [K.WHITE]: {
306
+ [G.WHITE]: {
301
307
  light: "text-gray-700 border-gray-300 hover:bg-gray-50",
302
308
  dark: "text-gray-300 border-gray-600 hover:bg-gray-800"
303
309
  }
304
- }, r = e[n.color] ?? e[K.BLUE], i = t.value ? r.dark : r.light;
310
+ }, r = e[n.color] ?? e[G.BLUE], i = t.value ? r.dark : r.light;
305
311
  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}`;
306
312
  }
307
313
  function i() {
308
314
  let e = {
309
- [K.BLUE]: {
315
+ [G.BLUE]: {
310
316
  light: "text-blue-600 hover:bg-blue-50",
311
317
  dark: "text-blue-400 hover:bg-blue-500/10"
312
318
  },
313
- [K.GREEN]: {
319
+ [G.GREEN]: {
314
320
  light: "text-green-600 hover:bg-green-50",
315
321
  dark: "text-green-400 hover:bg-green-500/10"
316
322
  },
317
- [K.EMERALD]: {
323
+ [G.EMERALD]: {
318
324
  light: "text-emerald-600 hover:bg-emerald-50",
319
325
  dark: "text-emerald-400 hover:bg-emerald-500/10"
320
326
  },
321
- [K.SKY]: {
327
+ [G.SKY]: {
322
328
  light: "text-sky-600 hover:bg-sky-50",
323
329
  dark: "text-sky-400 hover:bg-sky-500/10"
324
330
  },
325
- [K.RED]: {
331
+ [G.RED]: {
326
332
  light: "text-red-500 hover:bg-red-50",
327
333
  dark: "text-red-400 hover:bg-red-500/10"
328
334
  },
329
- [K.AMBER]: {
335
+ [G.AMBER]: {
330
336
  light: "text-amber-700 hover:bg-amber-50",
331
337
  dark: "text-amber-300 hover:bg-amber-500/10"
332
338
  },
333
- [K.YELLOW]: {
339
+ [G.YELLOW]: {
334
340
  light: "text-yellow-600 hover:bg-yellow-50",
335
341
  dark: "text-yellow-400 hover:bg-yellow-500/10"
336
342
  },
337
- [K.PURPLE]: {
343
+ [G.PURPLE]: {
338
344
  light: "text-purple-600 hover:bg-purple-50",
339
345
  dark: "text-purple-400 hover:bg-purple-500/10"
340
346
  },
341
- [K.GRAY]: {
347
+ [G.GRAY]: {
342
348
  light: "text-gray-500 hover:bg-gray-100",
343
349
  dark: "text-gray-400 hover:bg-gray-800"
344
350
  },
345
- [K.DARK]: {
351
+ [G.DARK]: {
346
352
  light: "text-gray-500 hover:bg-gray-100",
347
353
  dark: "text-gray-400 hover:bg-gray-800"
348
354
  },
349
- [K.WHITE]: {
355
+ [G.WHITE]: {
350
356
  light: "text-gray-500 hover:bg-gray-100",
351
357
  dark: "text-gray-400 hover:bg-gray-800"
352
358
  }
353
- }, r = e[n.color] ?? e[K.GRAY], i = t.value ? r.dark : r.light;
359
+ }, r = e[n.color] ?? e[G.GRAY], i = t.value ? r.dark : r.light;
354
360
  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`;
355
361
  }
356
362
  function a() {
@@ -358,37 +364,37 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
358
364
  e || (t += " cursor-pointer");
359
365
  let a;
360
366
  switch (n.color) {
361
- case K.BLUE:
367
+ case G.BLUE:
362
368
  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";
363
369
  break;
364
- case K.WHITE:
370
+ case G.WHITE:
365
371
  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";
366
372
  break;
367
- case K.DARK:
373
+ case G.DARK:
368
374
  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";
369
375
  break;
370
- case K.GREEN:
376
+ case G.GREEN:
371
377
  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";
372
378
  break;
373
- case K.EMERALD:
379
+ case G.EMERALD:
374
380
  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";
375
381
  break;
376
- case K.RED:
382
+ case G.RED:
377
383
  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";
378
384
  break;
379
- case K.YELLOW:
385
+ case G.YELLOW:
380
386
  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";
381
387
  break;
382
- case K.PURPLE:
388
+ case G.PURPLE:
383
389
  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";
384
390
  break;
385
- case K.SKY:
391
+ case G.SKY:
386
392
  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";
387
393
  break;
388
- case K.AMBER:
394
+ case G.AMBER:
389
395
  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";
390
396
  break;
391
- case K.GRAY:
397
+ case G.GRAY:
392
398
  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";
393
399
  break;
394
400
  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";
@@ -396,37 +402,37 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
396
402
  n.outline && (a = r()), n.ghost && (a = i());
397
403
  let o = "px-5 py-2.5 mr-2 mb-2 text-sm";
398
404
  switch (n.size) {
399
- case q.EXTRA_SMALL:
405
+ case K.EXTRA_SMALL:
400
406
  o = "px-3 py-2 text-xs";
401
407
  break;
402
- case q.SMALL:
408
+ case K.SMALL:
403
409
  o = "px-3 py-2 text-sm";
404
410
  break;
405
- case q.BASE:
411
+ case K.BASE:
406
412
  o = "px-5 py-2.5 text-sm";
407
413
  break;
408
- case q.LARGE:
414
+ case K.LARGE:
409
415
  o = "px-5 py-3 text-base";
410
416
  break;
411
- case q.EXTRA_LARGE: o = "px-6 py-3.5 text-base";
417
+ case K.EXTRA_LARGE: o = "px-6 py-3.5 text-base";
412
418
  }
413
419
  let s = "rounded-lg";
414
420
  return n.isRounded && (s = "rounded-full"), t + " " + o + " " + a + " font-medium " + s;
415
421
  }
416
422
  return (t, r) => {
417
423
  let i = M("router-link");
418
- return e.to ? (E(), o(i, {
424
+ return e.to ? (D(), o(i, {
419
425
  key: 0,
420
426
  to: e.to,
421
427
  custom: ""
422
428
  }, {
423
429
  default: L(({ navigate: i }) => [l("button", {
424
430
  type: n.type,
425
- class: y(a()),
431
+ class: b(a()),
426
432
  disabled: e.isDisable || e.isLoading,
427
433
  onClick: i
428
434
  }, [
429
- e.isLoading ? (E(), c("div", Ye, [...r[0] ||= [l("svg", {
435
+ e.isLoading ? (D(), c("div", Ze, [...r[0] ||= [l("svg", {
430
436
  "aria-hidden": "true",
431
437
  role: "status",
432
438
  class: "inline w-4 h-4 me-3 animate-spin",
@@ -440,18 +446,18 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
440
446
  d: "M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",
441
447
  fill: "currentColor"
442
448
  })], -1)]])) : s("", !0),
443
- e.iconLeft ? s("", !0) : (E(), c("span", Xe, P(e.description), 1)),
449
+ e.iconLeft ? s("", !0) : (D(), c("span", Qe, P(e.description), 1)),
444
450
  j(t.$slots, "default"),
445
- e.iconLeft ? (E(), c("span", Ze, P(e.description), 1)) : s("", !0)
446
- ], 10, Je)]),
451
+ e.iconLeft ? (D(), c("span", $e, P(e.description), 1)) : s("", !0)
452
+ ], 10, Xe)]),
447
453
  _: 3
448
- }, 8, ["to"])) : (E(), c("button", {
454
+ }, 8, ["to"])) : (D(), c("button", {
449
455
  key: 1,
450
456
  type: n.type,
451
- class: y(a()),
457
+ class: b(a()),
452
458
  disabled: e.isDisable || e.isLoading
453
459
  }, [
454
- e.isLoading ? (E(), c("div", $e, [...r[1] ||= [l("svg", {
460
+ e.isLoading ? (D(), c("div", tt, [...r[1] ||= [l("svg", {
455
461
  "aria-hidden": "true",
456
462
  role: "status",
457
463
  class: "inline w-4 h-4 me-3 animate-spin",
@@ -465,68 +471,68 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
465
471
  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",
466
472
  fill: "currentColor"
467
473
  })], -1)]])) : s("", !0),
468
- e.iconLeft ? s("", !0) : (E(), c("span", et, P(e.description), 1)),
474
+ e.iconLeft ? s("", !0) : (D(), c("span", nt, P(e.description), 1)),
469
475
  j(t.$slots, "default"),
470
- e.iconLeft ? (E(), c("span", tt, P(e.description), 1)) : s("", !0)
471
- ], 10, Qe));
476
+ e.iconLeft ? (D(), c("span", rt, P(e.description), 1)) : s("", !0)
477
+ ], 10, et));
472
478
  };
473
479
  }
474
- }), rt = /* @__PURE__ */ function(e) {
480
+ }), at = /* @__PURE__ */ function(e) {
475
481
  return e.BASE = "BASE", e.BASE_SHORTER = "BASE_SHORTER", e.SQUARE = "SQUARE", e;
476
- }({}), it = {
482
+ }({}), ot = {
477
483
  key: 0,
478
484
  class: "h-px my-8 bg-gray-200 border-0 dark:bg-gray-700"
479
- }, at = {
485
+ }, st = {
480
486
  key: 1,
481
487
  class: "w-48 h-1 mx-auto my-4 bg-gray-100 border-0 rounded md:my-10 dark:bg-gray-700"
482
- }, ot = {
488
+ }, ct = {
483
489
  key: 2,
484
490
  class: "w-8 h-8 mx-auto my-8 bg-gray-200 border-0 rounded md:my-12 dark:bg-gray-700"
485
- }, st = /* @__PURE__ */ m({
491
+ }, lt = /* @__PURE__ */ m({
486
492
  __name: "BaseLine",
487
493
  props: { mode: {
488
494
  type: String,
489
495
  required: !1,
490
- default: rt.BASE
496
+ default: at.BASE
491
497
  } },
492
498
  setup(t) {
493
- return (n, r) => (E(), c(e, null, [
494
- t.mode === F(rt).BASE ? (E(), c("hr", it)) : s("", !0),
495
- t.mode === F(rt).BASE_SHORTER ? (E(), c("hr", at)) : s("", !0),
496
- t.mode === F(rt).SQUARE ? (E(), c("hr", ot)) : s("", !0)
499
+ return (n, r) => (D(), c(e, null, [
500
+ t.mode === F(at).BASE ? (D(), c("hr", ot)) : s("", !0),
501
+ t.mode === F(at).BASE_SHORTER ? (D(), c("hr", st)) : s("", !0),
502
+ t.mode === F(at).SQUARE ? (D(), c("hr", ct)) : s("", !0)
497
503
  ], 64));
498
504
  }
499
- }), J = /* @__PURE__ */ function(e) {
505
+ }), q = /* @__PURE__ */ function(e) {
500
506
  return e.SMALL = "SMALL", e.MEDIUM = "MEDIUM", e.LARGE = "LARGE", e;
501
- }({}), ct = J, lt = ["height", "width"], ut = ["id"], dt = ["id", "href"], ft = ["id", "href"], pt = ["id", "href"], mt = ["id", "href"], ht = ["id", "href"], gt = ["id", "href"], _t = ["id", "href"], vt = ["id", "href"], yt = ["id", "href"], bt = ["id"], xt = ["fill"], St = ["fill"], Ct = ["fill"], wt = ["fill"], Tt = ["fill"], Et = ["fill"], Dt = ["fill"], Ot = ["fill"], kt = ["fill"], At = ["fill"], jt = /* @__PURE__ */ m({
507
+ }({}), ut = q, dt = ["height", "width"], ft = ["id"], pt = ["id", "href"], mt = ["id", "href"], ht = ["id", "href"], gt = ["id", "href"], _t = ["id", "href"], vt = ["id", "href"], yt = ["id", "href"], bt = ["id", "href"], xt = ["id", "href"], St = ["id"], Ct = ["fill"], wt = ["fill"], Tt = ["fill"], Et = ["fill"], Dt = ["fill"], Ot = ["fill"], kt = ["fill"], At = ["fill"], jt = ["fill"], Mt = ["fill"], Nt = /* @__PURE__ */ m({
502
508
  __name: "BaseLogo",
503
509
  props: { size: {
504
510
  type: String,
505
511
  required: !1,
506
- default: J.MEDIUM
512
+ default: q.MEDIUM
507
513
  } },
508
514
  setup(e) {
509
- let t = `logo-${ee()}`, n = e;
515
+ let t = `logo-${te()}`, n = e;
510
516
  function r() {
511
517
  let e = "";
512
518
  switch (n.size) {
513
- case J.SMALL:
519
+ case q.SMALL:
514
520
  e = "50px";
515
521
  break;
516
- case J.MEDIUM:
522
+ case q.MEDIUM:
517
523
  e = "100px";
518
524
  break;
519
- case J.LARGE: e = "150px";
525
+ case q.LARGE: e = "150px";
520
526
  }
521
527
  return e;
522
528
  }
523
529
  return (e, n) => {
524
530
  let i = M("router-link");
525
- return E(), o(i, {
531
+ return D(), o(i, {
526
532
  to: "/",
527
533
  class: "flex items-center mb-6 text-2xl font-semibold text-gray-900 dark:text-white"
528
534
  }, {
529
- default: L(() => [(E(), c("svg", {
535
+ default: L(() => [(D(), c("svg", {
530
536
  height: r(),
531
537
  width: r(),
532
538
  viewBox: "33.6 130.6 499.7 242.9",
@@ -539,7 +545,7 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
539
545
  }, null, -1), l("stop", {
540
546
  offset: "1",
541
547
  "stop-color": "#132d13"
542
- }, null, -1)]], 8, ut),
548
+ }, null, -1)]], 8, ft),
543
549
  l("linearGradient", {
544
550
  id: `${t}-b`,
545
551
  gradientUnits: "userSpaceOnUse",
@@ -548,7 +554,7 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
548
554
  href: `#${t}-a`,
549
555
  y1: "288.291",
550
556
  y2: "369.4"
551
- }, null, 8, dt),
557
+ }, null, 8, pt),
552
558
  l("linearGradient", {
553
559
  id: `${t}-c`,
554
560
  gradientUnits: "userSpaceOnUse",
@@ -557,7 +563,7 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
557
563
  href: `#${t}-a`,
558
564
  y1: "308.454",
559
565
  y2: "370.601"
560
- }, null, 8, ft),
566
+ }, null, 8, mt),
561
567
  l("linearGradient", {
562
568
  id: `${t}-d`,
563
569
  gradientUnits: "userSpaceOnUse",
@@ -566,7 +572,7 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
566
572
  href: `#${t}-a`,
567
573
  y1: "288.291",
568
574
  y2: "369.85"
569
- }, null, 8, pt),
575
+ }, null, 8, ht),
570
576
  l("linearGradient", {
571
577
  id: `${t}-e`,
572
578
  gradientUnits: "userSpaceOnUse",
@@ -575,7 +581,7 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
575
581
  href: `#${t}-a`,
576
582
  y1: "307.312",
577
583
  y2: "369.511"
578
- }, null, 8, mt),
584
+ }, null, 8, gt),
579
585
  l("linearGradient", {
580
586
  id: `${t}-f`,
581
587
  gradientUnits: "userSpaceOnUse",
@@ -584,7 +590,7 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
584
590
  href: `#${t}-a`,
585
591
  y1: "288.291",
586
592
  y2: "367.857"
587
- }, null, 8, ht),
593
+ }, null, 8, _t),
588
594
  l("linearGradient", {
589
595
  id: `${t}-g`,
590
596
  gradientUnits: "userSpaceOnUse",
@@ -593,7 +599,7 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
593
599
  href: `#${t}-a`,
594
600
  y1: "307.312",
595
601
  y2: "369.511"
596
- }, null, 8, gt),
602
+ }, null, 8, vt),
597
603
  l("linearGradient", {
598
604
  id: `${t}-h`,
599
605
  gradientUnits: "userSpaceOnUse",
@@ -602,7 +608,7 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
602
608
  href: `#${t}-a`,
603
609
  y1: "306.156",
604
610
  y2: "367.742"
605
- }, null, 8, _t),
611
+ }, null, 8, yt),
606
612
  l("linearGradient", {
607
613
  id: `${t}-i`,
608
614
  gradientUnits: "userSpaceOnUse",
@@ -611,7 +617,7 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
611
617
  href: `#${t}-a`,
612
618
  y1: "288.291",
613
619
  y2: "369.4"
614
- }, null, 8, vt),
620
+ }, null, 8, bt),
615
621
  l("linearGradient", {
616
622
  id: `${t}-j`,
617
623
  gradientUnits: "userSpaceOnUse",
@@ -620,7 +626,7 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
620
626
  href: `#${t}-a`,
621
627
  y1: "131.629",
622
628
  y2: "232.559"
623
- }, null, 8, yt),
629
+ }, null, 8, xt),
624
630
  l("linearGradient", {
625
631
  id: `${t}-k`,
626
632
  gradientUnits: "userSpaceOnUse",
@@ -635,64 +641,64 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
635
641
  }, null, -1), l("stop", {
636
642
  offset: "1",
637
643
  "stop-color": "#808183"
638
- }, null, -1)]], 8, bt),
644
+ }, null, -1)]], 8, St),
639
645
  l("path", {
640
646
  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",
641
647
  fill: `url(#${t}-b)`
642
- }, null, 8, xt),
648
+ }, null, 8, Ct),
643
649
  l("path", {
644
650
  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",
645
651
  fill: `url(#${t}-c)`
646
- }, null, 8, St),
652
+ }, null, 8, wt),
647
653
  l("path", {
648
654
  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",
649
655
  fill: `url(#${t}-d)`
650
- }, null, 8, Ct),
656
+ }, null, 8, Tt),
651
657
  l("path", {
652
658
  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",
653
659
  fill: `url(#${t}-e)`
654
- }, null, 8, wt),
660
+ }, null, 8, Et),
655
661
  l("path", {
656
662
  d: "m296.4 288.3h13v79.6h-13z",
657
663
  fill: `url(#${t}-f)`
658
- }, null, 8, Tt),
664
+ }, null, 8, Dt),
659
665
  l("path", {
660
666
  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",
661
667
  fill: `url(#${t}-g)`
662
- }, null, 8, Et),
668
+ }, null, 8, Ot),
663
669
  l("path", {
664
670
  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",
665
671
  fill: `url(#${t}-h)`
666
- }, null, 8, Dt),
672
+ }, null, 8, kt),
667
673
  l("path", {
668
674
  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",
669
675
  fill: `url(#${t}-i)`
670
- }, null, 8, Ot),
676
+ }, null, 8, At),
671
677
  l("path", {
672
678
  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",
673
679
  fill: `url(#${t}-j)`
674
- }, null, 8, kt),
680
+ }, null, 8, jt),
675
681
  l("path", {
676
682
  d: "m281.7 183.8h3.6v18.5h-3.6z",
677
683
  fill: `url(#${t}-k)`
678
- }, null, 8, At)
679
- ], 8, lt))]),
684
+ }, null, 8, Mt)
685
+ ], 8, dt))]),
680
686
  _: 1
681
687
  });
682
688
  };
683
689
  }
684
- }), Mt = /* @__PURE__ */ function(e) {
690
+ }), Pt = /* @__PURE__ */ function(e) {
685
691
  return e.DELETE = "DELETE", e.SUCCESS = "SUCCESS", e;
686
- }({}), Nt = {
692
+ }({}), Ft = {
687
693
  key: 0,
688
694
  class: "p-6 text-center"
689
- }, Pt = { class: "flex justify-center" }, Ft = {
695
+ }, It = { class: "flex justify-center" }, Lt = {
690
696
  key: 1,
691
697
  class: "p-6 text-center"
692
- }, It = {
698
+ }, Rt = {
693
699
  key: 0,
694
700
  class: "mb-5 text-sm text-gray-500"
695
- }, Lt = { class: "flex justify-center" }, Rt = /* @__PURE__ */ m({
701
+ }, zt = { class: "flex justify-center" }, Bt = /* @__PURE__ */ m({
696
702
  __name: "BaseModal",
697
703
  props: {
698
704
  title: {
@@ -711,7 +717,7 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
711
717
  mode: {
712
718
  type: String,
713
719
  required: !1,
714
- default: Mt.SUCCESS
720
+ default: Pt.SUCCESS
715
721
  }
716
722
  },
717
723
  emits: ["closeModal", "confirmModal"],
@@ -720,11 +726,11 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
720
726
  function a(e) {
721
727
  e.key === "Escape" && r("closeModal");
722
728
  }
723
- return C(() => {
729
+ return w(() => {
724
730
  document.addEventListener("keydown", a);
725
- }), T(() => {
731
+ }), E(() => {
726
732
  document.removeEventListener("keydown", a);
727
- }), (n, r) => (E(), c(e, null, [l("div", {
733
+ }), (n, r) => (D(), c(e, null, [l("div", {
728
734
  class: "fixed inset-0 w-full h-screen bg-black/75 z-40",
729
735
  onClick: r[0] ||= (e) => n.$emit("closeModal")
730
736
  }), l("div", {
@@ -732,37 +738,37 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
732
738
  role: "dialog",
733
739
  "aria-modal": "true",
734
740
  "aria-labelledby": i
735
- }, [t.mode === F(Mt).DELETE ? (E(), c("div", Nt, [
736
- p(F(xe), { class: "w-12 h-12 text-gray-400 mx-auto mb-4" }),
741
+ }, [t.mode === F(Pt).DELETE ? (D(), c("div", Ft, [
742
+ p(F(Se), { class: "w-12 h-12 text-gray-400 mx-auto mb-4" }),
737
743
  l("h3", {
738
744
  id: i,
739
745
  class: "mb-5 text-lg font-normal text-gray-500 dark:text-gray-400"
740
746
  }, " Are you sure you want to delete this " + P(t.title) + "? ", 1),
741
- l("div", Pt, [p(nt, {
742
- color: F(K).RED,
747
+ l("div", It, [p(it, {
748
+ color: F(G).RED,
743
749
  onClick: r[1] ||= (e) => n.$emit("confirmModal"),
744
750
  description: "Yes, I'm sure"
745
- }, null, 8, ["color"]), p(nt, {
746
- color: F(K).WHITE,
751
+ }, null, 8, ["color"]), p(it, {
752
+ color: F(G).WHITE,
747
753
  onClick: r[2] ||= (e) => n.$emit("closeModal"),
748
754
  description: "No, cancel"
749
755
  }, null, 8, ["color"])])
750
- ])) : (E(), c("div", Ft, [
751
- p(F(fe), { class: "w-12 h-12 text-green-500 mx-auto mb-4" }),
756
+ ])) : (D(), c("div", Lt, [
757
+ p(F(pe), { class: "w-12 h-12 text-green-500 mx-auto mb-4" }),
752
758
  l("h3", {
753
759
  id: i,
754
760
  class: "mb-2 text-lg font-medium text-gray-900"
755
761
  }, P(t.title), 1),
756
- t.description ? (E(), c("p", It, P(t.description), 1)) : s("", !0),
762
+ t.description ? (D(), c("p", Rt, P(t.description), 1)) : s("", !0),
757
763
  j(n.$slots, "default"),
758
- l("div", Lt, [p(nt, {
759
- color: F(K).BLUE,
764
+ l("div", zt, [p(it, {
765
+ color: F(G).BLUE,
760
766
  onClick: r[3] ||= (e) => n.$emit("closeModal"),
761
767
  description: "OK"
762
768
  }, null, 8, ["color"])])
763
769
  ]))])], 64));
764
770
  }
765
- }), zt = /* @__PURE__ */ m({
771
+ }), Vt = /* @__PURE__ */ m({
766
772
  __name: "BaseRow",
767
773
  props: { bgColor: {
768
774
  type: String,
@@ -774,9 +780,9 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
774
780
  function n() {
775
781
  return "block p-8 border border-gray-200 rounded-xl shadow-sm dark:bg-gray-800 dark:border-gray-700 " + t.bgColor;
776
782
  }
777
- return (e, t) => (E(), c("div", { class: y(n()) }, [j(e.$slots, "default")], 2));
783
+ return (e, t) => (D(), c("div", { class: b(n()) }, [j(e.$slots, "default")], 2));
778
784
  }
779
- }), Bt = /* @__PURE__ */ m({
785
+ }), Ht = /* @__PURE__ */ m({
780
786
  __name: "BaseSpinner",
781
787
  props: {
782
788
  size: { default: "sm" },
@@ -798,17 +804,17 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
798
804
  red: "border-t-red-500",
799
805
  amber: "border-t-amber-500"
800
806
  })[t.color]);
801
- return (e, t) => (E(), c("div", {
802
- class: y(["border-gray-200 dark:border-slate-700 rounded-full animate-spin", [n.value, r.value]]),
807
+ return (e, t) => (D(), c("div", {
808
+ class: b(["border-gray-200 dark:border-slate-700 rounded-full animate-spin", [n.value, r.value]]),
803
809
  role: "status",
804
810
  "aria-label": "Loading"
805
811
  }, null, 2));
806
812
  }
807
- }), Y = /* @__PURE__ */ function(e) {
813
+ }), J = /* @__PURE__ */ function(e) {
808
814
  return e.SUCCESS = "SUCCESS", e.WARNING = "WARNING", e.ERROR = "ERROR", e;
809
- }({}), X = /* @__PURE__ */ function(e) {
815
+ }({}), Y = /* @__PURE__ */ function(e) {
810
816
  return e.TOP_LEFT = "TOP_LEFT", e.TOP_RIGHT = "TOP_RIGHT", e.BOTTOM_LEFT = "BOTTOM_LEFT", e.BOTTOM_RIGHT = "BOTTOM_RIGHT", e;
811
- }({}), Vt = { 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" }, Ht = { class: "ml-3 text-sm font-normal" }, Ut = /* @__PURE__ */ m({
817
+ }({}), Ut = { class: "flex items-center w-full max-w-md p-4 mb-4 text-gray-500 bg-white rounded-lg shadow dark:text-gray-400 dark:bg-gray-800" }, Wt = { class: "ml-3 text-sm font-normal" }, Gt = /* @__PURE__ */ m({
812
818
  __name: "BaseToast",
813
819
  props: {
814
820
  mode: {
@@ -827,7 +833,7 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
827
833
  positioning: {
828
834
  type: String,
829
835
  required: !1,
830
- default: X.TOP_RIGHT
836
+ default: Y.TOP_RIGHT
831
837
  },
832
838
  duration: {
833
839
  type: Number,
@@ -840,21 +846,21 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
840
846
  function i() {
841
847
  n.value = !1, r &&= (clearTimeout(r), null);
842
848
  }
843
- C(() => {
849
+ w(() => {
844
850
  r = setTimeout(() => n.value = !1, t.duration);
845
- }), T(() => {
851
+ }), E(() => {
846
852
  r && clearTimeout(r);
847
853
  });
848
854
  function a() {
849
855
  let e = "";
850
856
  switch (t.mode) {
851
- case Y.ERROR:
857
+ case J.ERROR:
852
858
  e = "text-red-500 bg-red-100 dark:bg-red-800 dark:text-red-200";
853
859
  break;
854
- case Y.SUCCESS:
860
+ case J.SUCCESS:
855
861
  e = "text-green-500 bg-green-100 dark:bg-green-800 dark:text-green-200";
856
862
  break;
857
- case Y.WARNING:
863
+ case J.WARNING:
858
864
  e = "text-orange-500 bg-orange-100 dark:bg-orange-700 dark:text-orange-200";
859
865
  break;
860
866
  default: e = "text-gray-500 bg-gray-100 dark:bg-gray-800 dark:text-gray-200";
@@ -864,46 +870,46 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
864
870
  function o() {
865
871
  let e = "top-5 right-5";
866
872
  switch (t.positioning) {
867
- case X.BOTTOM_LEFT:
873
+ case Y.BOTTOM_LEFT:
868
874
  e = "bottom-5 left-5";
869
875
  break;
870
- case X.TOP_LEFT:
876
+ case Y.TOP_LEFT:
871
877
  e = "top-5 left-5";
872
878
  break;
873
- case X.TOP_RIGHT:
879
+ case Y.TOP_RIGHT:
874
880
  e = "top-5 right-5";
875
881
  break;
876
- case X.BOTTOM_RIGHT: e = "bottom-5 right-5";
882
+ case Y.BOTTOM_RIGHT: e = "bottom-5 right-5";
877
883
  }
878
884
  return "fixed flex items-center w-full max-w-md p-4 space-x-4 divide-x rounded-lg " + e;
879
885
  }
880
- return (t, r) => n.value ? (E(), c("div", {
886
+ return (t, r) => n.value ? (D(), c("div", {
881
887
  key: 0,
882
888
  id: "toast-top-right",
883
- class: y(o()),
889
+ class: b(o()),
884
890
  role: "alert"
885
- }, [l("div", Vt, [
886
- e.mode == F(Y).ERROR ? (E(), c("div", {
891
+ }, [l("div", Ut, [
892
+ e.mode == F(J).ERROR ? (D(), c("div", {
887
893
  key: 0,
888
- class: y(a())
889
- }, [p(F(xe), { class: "h-6 w-6 text-red-500" }), r[0] ||= l("span", { class: "sr-only" }, "Error icon", -1)], 2)) : e.mode == F(Y).SUCCESS ? (E(), c("div", {
894
+ class: b(a())
895
+ }, [p(F(Se), { class: "h-6 w-6 text-red-500" }), r[0] ||= l("span", { class: "sr-only" }, "Error icon", -1)], 2)) : e.mode == F(J).SUCCESS ? (D(), c("div", {
890
896
  key: 1,
891
- class: y(a())
892
- }, [p(F(fe), { class: "h-6 w-6 text-green-500" }), r[1] ||= l("span", { class: "sr-only" }, "Check icon", -1)], 2)) : e.mode == F(Y).WARNING ? (E(), c("div", {
897
+ class: b(a())
898
+ }, [p(F(pe), { class: "h-6 w-6 text-green-500" }), r[1] ||= l("span", { class: "sr-only" }, "Check icon", -1)], 2)) : e.mode == F(J).WARNING ? (D(), c("div", {
893
899
  key: 2,
894
- class: y(a())
895
- }, [p(F(Se), { class: "h-6 w-6 text-yellow-500" }), r[2] ||= l("span", { class: "sr-only" }, "Warning icon", -1)], 2)) : s("", !0),
896
- l("div", Ht, P(e.description), 1),
897
- e.hasCloseIcon ? (E(), c("button", {
900
+ class: b(a())
901
+ }, [p(F(Ce), { class: "h-6 w-6 text-yellow-500" }), r[2] ||= l("span", { class: "sr-only" }, "Warning icon", -1)], 2)) : s("", !0),
902
+ l("div", Wt, P(e.description), 1),
903
+ e.hasCloseIcon ? (D(), c("button", {
898
904
  key: 3,
899
905
  type: "button",
900
906
  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",
901
907
  "aria-label": "Close",
902
908
  onClick: i
903
- }, [r[3] ||= l("span", { class: "sr-only" }, "Close", -1), p(F(B), { class: "h-6 w-6 text-gray-500" })])) : s("", !0)
909
+ }, [r[3] ||= l("span", { class: "sr-only" }, "Close", -1), p(F(Ae), { class: "h-6 w-6 text-gray-500" })])) : s("", !0)
904
910
  ])], 2)) : s("", !0);
905
911
  }
906
- }), Wt = { class: "w-13" }, Gt = /* @__PURE__ */ m({
912
+ }), Kt = { class: "w-13" }, qt = /* @__PURE__ */ m({
907
913
  __name: "ColoredSquares",
908
914
  props: { color: {
909
915
  type: String,
@@ -924,25 +930,25 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
924
930
  function i() {
925
931
  let e = "font-bold text-xs mr-2 px-2.5 py-0.5 rounded-full", n = "gray";
926
932
  switch (t.color) {
927
- case G.GREEN:
933
+ case W.GREEN:
928
934
  n = "green";
929
935
  break;
930
- case G.RED:
936
+ case W.RED:
931
937
  n = "red";
932
938
  break;
933
- case G.BLUE:
939
+ case W.BLUE:
934
940
  n = "blue";
935
941
  break;
936
- case G.YELLOW:
942
+ case W.YELLOW:
937
943
  n = "yellow";
938
944
  break;
939
- case G.NONE: return e;
945
+ case W.NONE: return e;
940
946
  }
941
947
  return e + " bg-" + n + "-100 text-" + n + "-800";
942
948
  }
943
- return (e, t) => (E(), c("div", Wt, [l("div", { class: y(["border border-gray-300 relative aspect-square rounded-lg bg-white shadow-sm overflow-hidden flex items-center justify-center text-center", i()]) }, [j(e.$slots, "default"), l("div", { class: y(["absolute bottom-0 left-0 h-1 w-full", r.value]) }, null, 2)], 2)]));
949
+ return (e, t) => (D(), c("div", Kt, [l("div", { class: b(["border border-gray-300 relative aspect-square rounded-lg bg-white shadow-sm overflow-hidden flex items-center justify-center text-center", i()]) }, [j(e.$slots, "default"), l("div", { class: b(["absolute bottom-0 left-0 h-1 w-full", r.value]) }, null, 2)], 2)]));
944
950
  }
945
- }), Kt = { class: "flex items-start justify-between" }, qt = { class: "min-w-0" }, Jt = /* @__PURE__ */ m({
951
+ }), Jt = { class: "flex items-start justify-between" }, Yt = { class: "min-w-0" }, Xt = /* @__PURE__ */ m({
946
952
  __name: "EarningsCard",
947
953
  props: {
948
954
  title: { default: "TOTAL EARNINGS" },
@@ -994,27 +1000,27 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
994
1000
  minimumFractionDigits: n.decimals,
995
1001
  maximumFractionDigits: n.decimals
996
1002
  }));
997
- return (n, r) => (E(), c("div", { class: y(["relative rounded-xl border-2 border-dashed bg-white dark:bg-slate-800", [d.value.border, t.compact ? "p-3" : "p-6"]]) }, [t.badge ? (E(), c("div", {
1003
+ return (n, r) => (D(), c("div", { class: b(["relative rounded-xl border-2 border-dashed bg-white dark:bg-slate-800", [d.value.border, t.compact ? "p-3" : "p-6"]]) }, [t.badge ? (D(), c("div", {
998
1004
  key: 0,
999
- class: y(["absolute right-4 top-4 rounded-md px-3 py-1 text-xs font-bold tracking-wide", d.value.badge])
1000
- }, P(t.badge), 3)) : s("", !0), l("div", Kt, [l("div", qt, [
1001
- l("p", { class: y(["font-bold tracking-wide text-gray-800 dark:text-slate-200", t.compact ? "pr-8 text-xs" : "text-sm"]) }, P(t.title), 3),
1002
- l("p", { class: y(["mt-1 font-bold truncate", [d.value.amount, t.compact ? "text-lg" : "text-4xl"]]) }, P(f.value), 3),
1003
- l("p", { class: y(["mt-1 font-medium", [d.value.subtitle, t.compact ? "text-xs" : "text-sm"]]) }, P(t.subtitle), 3)
1004
- ]), l("div", { class: y(["flex items-center justify-center", [d.value.iconBox, t.compact ? "absolute right-2 top-2 h-6 w-6 rounded-lg" : "mt-6 h-12 w-12 rounded-xl"]]) }, [(E(), c("svg", {
1005
- class: y([d.value.icon, t.compact ? "h-3.5 w-3.5" : "h-6 w-6"]),
1005
+ class: b(["absolute right-4 top-4 rounded-md px-3 py-1 text-xs font-bold tracking-wide", d.value.badge])
1006
+ }, P(t.badge), 3)) : s("", !0), l("div", Jt, [l("div", Yt, [
1007
+ l("p", { class: b(["font-bold tracking-wide text-gray-800 dark:text-slate-200", t.compact ? "pr-8 text-xs" : "text-sm"]) }, P(t.title), 3),
1008
+ l("p", { class: b(["mt-1 font-bold truncate", [d.value.amount, t.compact ? "text-lg" : "text-4xl"]]) }, P(f.value), 3),
1009
+ l("p", { class: b(["mt-1 font-medium", [d.value.subtitle, t.compact ? "text-xs" : "text-sm"]]) }, P(t.subtitle), 3)
1010
+ ]), l("div", { class: b(["flex items-center justify-center", [d.value.iconBox, t.compact ? "absolute right-2 top-2 h-6 w-6 rounded-lg" : "mt-6 h-12 w-12 rounded-xl"]]) }, [(D(), c("svg", {
1011
+ class: b([d.value.icon, t.compact ? "h-3.5 w-3.5" : "h-6 w-6"]),
1006
1012
  viewBox: "0 0 24 24",
1007
1013
  fill: "none",
1008
1014
  stroke: "currentColor",
1009
1015
  "stroke-width": "2.5",
1010
1016
  "stroke-linecap": "round",
1011
1017
  "stroke-linejoin": "round"
1012
- }, [o.value ? (E(), c(e, { key: 0 }, [r[0] ||= l("polyline", { points: "22 17 13.5 8.5 8.5 13.5 2 7" }, null, -1), r[1] ||= l("polyline", { points: "16 17 22 17 22 11" }, null, -1)], 64)) : (E(), c(e, { key: 1 }, [r[2] ||= l("polyline", { points: "22 7 13.5 15.5 8.5 10.5 2 17" }, null, -1), r[3] ||= l("polyline", { points: "16 7 22 7 22 13" }, null, -1)], 64))], 2))], 2)])], 2));
1018
+ }, [o.value ? (D(), c(e, { key: 0 }, [r[0] ||= l("polyline", { points: "22 17 13.5 8.5 8.5 13.5 2 7" }, null, -1), r[1] ||= l("polyline", { points: "16 17 22 17 22 11" }, null, -1)], 64)) : (D(), c(e, { key: 1 }, [r[2] ||= l("polyline", { points: "22 7 13.5 15.5 8.5 10.5 2 17" }, null, -1), r[3] ||= l("polyline", { points: "16 7 22 7 22 13" }, null, -1)], 64))], 2))], 2)])], 2));
1013
1019
  }
1014
- }), Yt = {
1020
+ }), Zt = {
1015
1021
  key: 0,
1016
1022
  class: "font-bold text-green-800 dark:text-green-400"
1017
- }, Xt = { key: 0 }, Zt = { key: 0 }, Qt = "font-bold", $t = /* @__PURE__ */ m({
1023
+ }, Qt = { key: 0 }, $t = { key: 0 }, en = "font-bold", tn = /* @__PURE__ */ m({
1018
1024
  __name: "EuroAmount",
1019
1025
  props: {
1020
1026
  amount: {
@@ -1034,20 +1040,20 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
1034
1040
  },
1035
1041
  setup(t) {
1036
1042
  let n = t, r = a(() => n.amount !== null && n.amount !== void 0), i = a(() => r.value && n.amount < 0), o = a(() => n.beforeAmount === null || n.beforeAmount === void 0 ? !1 : n.amount < n.beforeAmount), l = a(() => i.value || o.value), u = a(() => !i.value && !o.value && n.beforeAmount !== null && n.beforeAmount !== void 0);
1037
- return (n, i) => (E(), c(e, null, [r.value && u.value ? (E(), c("span", Yt, [f(P(t.amount) + " ", 1), t.showCurrency ? (E(), c("span", Xt, "€")) : s("", !0)])) : s("", !0), r.value && !u.value ? (E(), c("span", {
1043
+ return (n, i) => (D(), c(e, null, [r.value && u.value ? (D(), c("span", Zt, [f(P(t.amount) + " ", 1), t.showCurrency ? (D(), c("span", Qt, "€")) : s("", !0)])) : s("", !0), r.value && !u.value ? (D(), c("span", {
1038
1044
  key: 1,
1039
- class: y([Qt, l.value ? "text-red-800 dark:text-red-400" : "text-gray-800 dark:text-gray-200"])
1040
- }, [f(P(t.amount) + " ", 1), t.showCurrency ? (E(), c("span", Zt, "€")) : s("", !0)], 2)) : s("", !0)], 64));
1045
+ class: b([en, l.value ? "text-red-800 dark:text-red-400" : "text-gray-800 dark:text-gray-200"])
1046
+ }, [f(P(t.amount) + " ", 1), t.showCurrency ? (D(), c("span", $t, "€")) : s("", !0)], 2)) : s("", !0)], 64));
1041
1047
  }
1042
- }), en = { "aria-label": "Pagination" }, tn = { class: "flex list-none p-0 m-0" }, nn = [
1048
+ }), nn = { "aria-label": "Pagination" }, rn = { class: "flex list-none p-0 m-0" }, an = [
1043
1049
  "aria-current",
1044
1050
  "aria-label",
1045
1051
  "onClick"
1046
- ], rn = {
1052
+ ], on = {
1047
1053
  key: 1,
1048
1054
  "aria-hidden": "true",
1049
1055
  class: "inline-block border border-gray-300 dark:border-gray-600 rounded-lg p-3 text-black dark:text-gray-200 cursor-not-allowed"
1050
- }, an = /* @__PURE__ */ m({
1056
+ }, sn = /* @__PURE__ */ m({
1051
1057
  __name: "Pagination",
1052
1058
  props: {
1053
1059
  totalItems: {
@@ -1057,49 +1063,58 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
1057
1063
  itemsPerPage: {
1058
1064
  type: Number,
1059
1065
  default: 20
1066
+ },
1067
+ page: {
1068
+ type: Number,
1069
+ default: void 0
1060
1070
  }
1061
1071
  },
1062
1072
  emits: ["page-changed"],
1063
1073
  setup(t, { emit: n }) {
1064
- let r = t, i = k(1), a = k(0), o = k([]), s = n;
1065
- function u(e) {
1066
- if (a.value <= 5) {
1067
- o.value = Array.from({ length: a.value }, (e, t) => t + 1);
1068
- return;
1069
- }
1070
- let t = [], n = Math.max(1, e - 2), r = Math.min(a.value, e + 2);
1074
+ let r = t, i = n, o = a(() => {
1075
+ let e = Number(r.itemsPerPage) > 0 ? Number(r.itemsPerPage) : 20, t = Number(r.totalItems) > 0 ? Number(r.totalItems) : 0;
1076
+ return Math.ceil(t / e);
1077
+ });
1078
+ function s(e) {
1079
+ return Math.min(Math.max(e, 1), Math.max(o.value, 1));
1080
+ }
1081
+ let u = k(1);
1082
+ I(o, () => {
1083
+ u.value = s(u.value);
1084
+ });
1085
+ let d = a(() => r.page != null && Number.isFinite(r.page) ? s(r.page) : u.value), f = a(() => {
1086
+ let e = o.value;
1087
+ if (e <= 5) return Array.from({ length: e }, (e, t) => t + 1);
1088
+ let t = [], n = Math.max(1, d.value - 2), r = Math.min(e, d.value + 2);
1071
1089
  n > 1 && (t.push(1), n > 2 && t.push(0));
1072
1090
  for (let e = n; e <= r; e++) t.push(e);
1073
- r < a.value && (r < a.value - 1 && t.push(0), t.push(a.value)), o.value = t;
1074
- }
1075
- function d(e) {
1076
- e === i.value || e < 1 || e > a.value || (i.value = e, u(e), s("page-changed", e));
1091
+ return r < e && (r < e - 1 && t.push(0), t.push(e)), t;
1092
+ });
1093
+ function p(e) {
1094
+ e === d.value || e < 1 || e > o.value || (u.value = e, i("page-changed", e));
1077
1095
  }
1078
- return I(() => [r.totalItems, r.itemsPerPage], () => {
1079
- let e = Number(r.itemsPerPage) > 0 ? Number(r.itemsPerPage) : 20, t = Number(r.totalItems) > 0 ? Number(r.totalItems) : 0;
1080
- a.value = Math.ceil(t / e), i.value > a.value && (i.value = Math.max(1, a.value)), u(i.value);
1081
- }, { immediate: !0 }), (t, n) => (E(), c("nav", en, [l("ul", tn, [(E(!0), c(e, null, A(o.value, (e, t) => (E(), c("li", {
1096
+ return (t, n) => (D(), c("nav", nn, [l("ul", rn, [(D(!0), c(e, null, A(f.value, (e, t) => (D(), c("li", {
1082
1097
  key: t,
1083
1098
  class: "mr-1"
1084
- }, [e === 0 ? (E(), c("span", rn, "...")) : (E(), c("button", {
1099
+ }, [e === 0 ? (D(), c("span", on, "...")) : (D(), c("button", {
1085
1100
  key: 0,
1086
1101
  type: "button",
1087
- "aria-current": e === i.value ? "page" : void 0,
1102
+ "aria-current": e === d.value ? "page" : void 0,
1088
1103
  "aria-label": `Go to page ${e}`,
1089
- onClick: (t) => d(e),
1090
- class: y(["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 }])
1091
- }, P(e), 11, nn))]))), 128))])]));
1104
+ onClick: (t) => p(e),
1105
+ class: b(["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 === d.value }])
1106
+ }, P(e), 11, an))]))), 128))])]));
1092
1107
  }
1093
- }), on = { key: 0 }, sn = {
1108
+ }), cn = { key: 0 }, ln = {
1094
1109
  key: 0,
1095
1110
  class: "flex items-center space-x-2"
1096
- }, cn = {
1111
+ }, un = {
1097
1112
  key: 1,
1098
1113
  class: "flex items-center space-x-2"
1099
- }, ln = {
1114
+ }, dn = {
1100
1115
  key: 2,
1101
1116
  class: "flex items-center space-x-2"
1102
- }, un = /* @__PURE__ */ m({
1117
+ }, fn = /* @__PURE__ */ m({
1103
1118
  __name: "TrendArrow",
1104
1119
  props: {
1105
1120
  number: {
@@ -1113,23 +1128,23 @@ var He = "bg-red-100 text-red-700 border-red-200", Ue = /* @__PURE__ */ m({
1113
1128
  },
1114
1129
  setup(e) {
1115
1130
  let t = e, n = a(() => t.number !== null && t.number !== void 0 && t.number < 0), r = a(() => t.number === 0);
1116
- return (i, a) => e.number !== null && e.number !== void 0 ? (E(), c("div", on, [n.value ? (E(), c("span", sn, [p(Ue, { color: F(G).RED }, {
1131
+ return (i, a) => e.number !== null && e.number !== void 0 ? (D(), c("div", cn, [n.value ? (D(), c("span", ln, [p(Ge, { color: F(W).RED }, {
1117
1132
  default: L(() => [f(P(e.number) + P(t.icon), 1)]),
1118
1133
  _: 1
1119
- }, 8, ["color"]), p(F(se), { class: "h-5 w-5 text-red-500" })])) : r.value ? (E(), c("span", cn, [p(Ue, { color: F(G).GRAY }, {
1134
+ }, 8, ["color"]), p(F(ce), { class: "h-5 w-5 text-red-500" })])) : r.value ? (D(), c("span", un, [p(Ge, { color: F(W).GRAY }, {
1120
1135
  default: L(() => [f(P(e.number) + P(t.icon), 1)]),
1121
1136
  _: 1
1122
- }, 8, ["color"]), p(F(Ee), { class: "h-5 w-5 text-gray-400" })])) : (E(), c("span", ln, [p(Ue, { color: F(G).GREEN }, {
1137
+ }, 8, ["color"]), p(F(De), { class: "h-5 w-5 text-gray-400" })])) : (D(), c("span", dn, [p(Ge, { color: F(W).GREEN }, {
1123
1138
  default: L(() => [f(P(e.number) + P(t.icon), 1)]),
1124
1139
  _: 1
1125
- }, 8, ["color"]), p(F(le), { class: "h-5 w-5 text-green-500" })]))])) : s("", !0);
1140
+ }, 8, ["color"]), p(F(ue), { class: "h-5 w-5 text-green-500" })]))])) : s("", !0);
1126
1141
  }
1127
1142
  });
1128
1143
  //#endregion
1129
1144
  //#region src/composables/useThemeClasses.ts
1130
- function Z() {
1131
- let { isDark: e } = W();
1132
- return D({
1145
+ function X() {
1146
+ let { isDark: e } = U();
1147
+ return O({
1133
1148
  card: a(() => e.value ? "bg-gray-800 border-gray-700" : "bg-white border-gray-200"),
1134
1149
  cardAlt: a(() => e.value ? "bg-gray-900 border-gray-700" : "bg-white border-gray-200"),
1135
1150
  pageBg: a(() => e.value ? "bg-gray-900" : "bg-gray-50"),
@@ -1155,15 +1170,15 @@ function Z() {
1155
1170
  }
1156
1171
  //#endregion
1157
1172
  //#region src/composables/useEscapeKey.ts
1158
- function dn(e) {
1173
+ function pn(e) {
1159
1174
  function t(t) {
1160
1175
  t.key === "Escape" && e();
1161
1176
  }
1162
- C(() => document.addEventListener("keydown", t)), S(() => document.removeEventListener("keydown", t));
1177
+ w(() => document.addEventListener("keydown", t)), C(() => document.removeEventListener("keydown", t));
1163
1178
  }
1164
1179
  //#endregion
1165
1180
  //#region src/components/BaseModalShell.vue?vue&type=script&setup=true&lang.ts
1166
- var fn = { class: "flex items-start gap-4 min-w-0" }, pn = { class: "flex-1 min-w-0" }, mn = { class: "p-6 overflow-y-auto flex-1" }, hn = { class: "p-6" }, gn = { class: "flex items-start gap-4" }, _n = { class: "flex-1" }, vn = { class: "mt-4" }, yn = { class: "mt-6 flex gap-3 justify-end" }, bn = /* @__PURE__ */ m({
1181
+ var mn = { class: "flex items-start gap-4 min-w-0" }, hn = { class: "flex-1 min-w-0" }, gn = { class: "p-6 overflow-y-auto flex-1" }, _n = { class: "p-6" }, vn = { class: "flex items-start gap-4" }, yn = { class: "flex-1" }, bn = { class: "mt-4" }, xn = { class: "mt-6 flex gap-3 justify-end" }, Sn = /* @__PURE__ */ m({
1167
1182
  __name: "BaseModalShell",
1168
1183
  props: {
1169
1184
  title: {},
@@ -1183,55 +1198,55 @@ var fn = { class: "flex items-start gap-4 min-w-0" }, pn = { class: "flex-1 min-
1183
1198
  },
1184
1199
  emits: ["cancel", "backdrop"],
1185
1200
  setup(e, { emit: n }) {
1186
- let r = e, i = n, { isDark: u } = W(), d = Z(), f = `modal-title-${Math.random().toString(36).slice(2, 9)}`, p = a(() => u.value ? "bg-gray-900 border border-gray-700" : "bg-white border border-gray-200"), m = a(() => r.iconBgClass || (u.value ? "bg-emerald-900/30" : "bg-emerald-50"));
1201
+ let r = e, i = n, { isDark: u } = U(), d = X(), f = `modal-title-${Math.random().toString(36).slice(2, 9)}`, p = a(() => u.value ? "bg-gray-900 border border-gray-700" : "bg-white border border-gray-200"), m = a(() => r.iconBgClass || (u.value ? "bg-emerald-900/30" : "bg-emerald-50"));
1187
1202
  function h() {
1188
1203
  i("backdrop"), r.manualClose || i("cancel");
1189
1204
  }
1190
- return dn(() => {
1205
+ return pn(() => {
1191
1206
  r.manualClose || i("cancel");
1192
- }), (n, r) => (E(), o(t, { to: "body" }, [l("div", {
1207
+ }), (n, r) => (D(), o(t, { to: "body" }, [l("div", {
1193
1208
  class: "fixed inset-0 z-50 flex items-center justify-center bg-black/50",
1194
1209
  role: "dialog",
1195
1210
  "aria-modal": "true",
1196
1211
  "aria-labelledby": f,
1197
1212
  onClick: h
1198
- }, [e.scrollable ? (E(), c("div", {
1213
+ }, [e.scrollable ? (D(), c("div", {
1199
1214
  key: 0,
1200
- class: y(["relative w-full mx-4 rounded-lg shadow-xl max-h-[90vh] flex flex-col", [e.maxWidthClass, p.value]]),
1215
+ class: b(["relative w-full mx-4 rounded-lg shadow-xl max-h-[90vh] flex flex-col", [e.maxWidthClass, p.value]]),
1201
1216
  onClick: r[0] ||= z(() => {}, ["stop"])
1202
1217
  }, [
1203
- l("div", { class: y(["flex items-start justify-between gap-4 p-6 border-b shrink-0", F(d).border]) }, [l("div", fn, [j(n.$slots, "icon", {}, () => [l("div", { class: y(["flex-shrink-0 flex h-12 w-12 items-center justify-center rounded-full", m.value]) }, [(E(), o(N(e.icon), {
1204
- class: y(["h-6 w-6", e.iconClass]),
1218
+ l("div", { class: b(["flex items-start justify-between gap-4 p-6 border-b shrink-0", F(d).border]) }, [l("div", mn, [j(n.$slots, "icon", {}, () => [l("div", { class: b(["flex-shrink-0 flex h-12 w-12 items-center justify-center rounded-full", m.value]) }, [(D(), o(N(e.icon), {
1219
+ class: b(["h-6 w-6", e.iconClass]),
1205
1220
  "aria-hidden": "true"
1206
- }, null, 8, ["class"]))], 2)]), l("div", pn, [l("h3", {
1221
+ }, null, 8, ["class"]))], 2)]), l("div", hn, [l("h3", {
1207
1222
  id: f,
1208
- class: y(["text-lg font-medium", F(d).primaryText])
1209
- }, P(e.title), 3), e.subtitle ? (E(), c("p", {
1223
+ class: b(["text-lg font-medium", F(d).primaryText])
1224
+ }, P(e.title), 3), e.subtitle ? (D(), c("p", {
1210
1225
  key: 0,
1211
- class: y(["text-sm mt-1 break-all", F(d).mutedText])
1226
+ class: b(["text-sm mt-1 break-all", F(d).mutedText])
1212
1227
  }, P(e.subtitle), 3)) : s("", !0)])]), j(n.$slots, "header-actions")], 2),
1213
- l("div", mn, [j(n.$slots, "default")]),
1214
- n.$slots.footer ? (E(), c("div", {
1228
+ l("div", gn, [j(n.$slots, "default")]),
1229
+ n.$slots.footer ? (D(), c("div", {
1215
1230
  key: 0,
1216
- class: y(["flex gap-3 justify-end p-6 border-t shrink-0", F(d).border])
1231
+ class: b(["flex gap-3 justify-end p-6 border-t shrink-0", F(d).border])
1217
1232
  }, [j(n.$slots, "footer")], 2)) : s("", !0)
1218
- ], 2)) : (E(), c("div", {
1233
+ ], 2)) : (D(), c("div", {
1219
1234
  key: 1,
1220
- class: y(["relative w-full mx-4 rounded-lg shadow-xl", [e.maxWidthClass, p.value]]),
1235
+ class: b(["relative w-full mx-4 rounded-lg shadow-xl", [e.maxWidthClass, p.value]]),
1221
1236
  onClick: r[1] ||= z(() => {}, ["stop"])
1222
- }, [l("div", hn, [
1223
- l("div", gn, [j(n.$slots, "icon", {}, () => [l("div", { class: y(["flex-shrink-0 flex h-12 w-12 items-center justify-center rounded-full", m.value]) }, [(E(), o(N(e.icon), {
1224
- class: y(["h-6 w-6", e.iconClass]),
1237
+ }, [l("div", _n, [
1238
+ l("div", vn, [j(n.$slots, "icon", {}, () => [l("div", { class: b(["flex-shrink-0 flex h-12 w-12 items-center justify-center rounded-full", m.value]) }, [(D(), o(N(e.icon), {
1239
+ class: b(["h-6 w-6", e.iconClass]),
1225
1240
  "aria-hidden": "true"
1226
- }, null, 8, ["class"]))], 2)]), l("div", _n, [l("h3", {
1241
+ }, null, 8, ["class"]))], 2)]), l("div", yn, [l("h3", {
1227
1242
  id: f,
1228
- class: y(["text-lg font-medium", F(d).primaryText])
1243
+ class: b(["text-lg font-medium", F(d).primaryText])
1229
1244
  }, P(e.title), 3)])]),
1230
- l("div", vn, [j(n.$slots, "default")]),
1231
- l("div", yn, [j(n.$slots, "footer")])
1245
+ l("div", bn, [j(n.$slots, "default")]),
1246
+ l("div", xn, [j(n.$slots, "footer")])
1232
1247
  ])], 2))])]));
1233
1248
  }
1234
- }), xn = ["aria-expanded"], Sn = { class: "flex items-center gap-3" }, Cn = /* @__PURE__ */ m({
1249
+ }), Cn = ["aria-expanded"], wn = { class: "flex items-center gap-3" }, Tn = /* @__PURE__ */ m({
1235
1250
  __name: "BaseCollapsibleSection",
1236
1251
  props: {
1237
1252
  title: {},
@@ -1241,17 +1256,17 @@ var fn = { class: "flex items-start gap-4 min-w-0" }, pn = { class: "flex-1 min-
1241
1256
  },
1242
1257
  emits: ["toggle"],
1243
1258
  setup(e, { emit: t }) {
1244
- let n = e, r = t, { isDark: i } = W(), o = Z(), u = a(() => i.value ? "text-gray-100" : "text-gray-700"), d = a(() => i.value ? "bg-gray-800/50 hover:bg-gray-800 border-gray-700" : "bg-gray-50 hover:bg-gray-100 border-gray-200"), f = a(() => i.value ? "bg-emerald-500/15 text-emerald-400" : "bg-emerald-50 text-emerald-700"), p = a(() => n.bodyClass === void 0 ? i.value ? "bg-gray-800" : "bg-white" : n.bodyClass);
1245
- return (t, n) => (E(), c("section", { class: y(["rounded-xl border transition-colors", F(o).cardAlt]) }, [l("button", {
1259
+ let n = e, r = t, { isDark: i } = U(), o = X(), u = a(() => i.value ? "text-gray-100" : "text-gray-700"), d = a(() => i.value ? "bg-gray-800/50 hover:bg-gray-800 border-gray-700" : "bg-gray-50 hover:bg-gray-100 border-gray-200"), f = a(() => i.value ? "bg-emerald-500/15 text-emerald-400" : "bg-emerald-50 text-emerald-700"), p = a(() => n.bodyClass === void 0 ? i.value ? "bg-gray-800" : "bg-white" : n.bodyClass);
1260
+ return (t, n) => (D(), c("section", { class: b(["rounded-xl border transition-colors", F(o).cardAlt]) }, [l("button", {
1246
1261
  type: "button",
1247
- class: y(["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"]]),
1262
+ class: b(["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"]]),
1248
1263
  "aria-expanded": !e.collapsed,
1249
1264
  onClick: n[0] ||= (e) => r("toggle")
1250
- }, [l("div", Sn, [l("h2", { class: y(["text-base font-semibold", u.value]) }, P(e.title), 3), e.badge ? (E(), c("span", {
1265
+ }, [l("div", wn, [l("h2", { class: b(["text-base font-semibold", u.value]) }, P(e.title), 3), e.badge ? (D(), c("span", {
1251
1266
  key: 0,
1252
- class: y(["text-xs px-2 py-0.5 rounded-full", f.value])
1253
- }, P(e.badge), 3)) : s("", !0)]), (E(), c("svg", {
1254
- class: y(["w-5 h-5 transition-transform", [e.collapsed ? "" : "rotate-180", F(o).dimTextAlt]]),
1267
+ class: b(["text-xs px-2 py-0.5 rounded-full", f.value])
1268
+ }, P(e.badge), 3)) : s("", !0)]), (D(), c("svg", {
1269
+ class: b(["w-5 h-5 transition-transform", [e.collapsed ? "" : "rotate-180", F(o).dimTextAlt]]),
1255
1270
  fill: "none",
1256
1271
  viewBox: "0 0 24 24",
1257
1272
  stroke: "currentColor",
@@ -1261,15 +1276,15 @@ var fn = { class: "flex items-start gap-4 min-w-0" }, pn = { class: "flex-1 min-
1261
1276
  "stroke-linecap": "round",
1262
1277
  "stroke-linejoin": "round",
1263
1278
  d: "M19 9l-7 7-7-7"
1264
- }, null, -1)]], 2))], 10, xn), R(l("div", { class: y(["p-6 border-t rounded-b-xl", [F(o).border, p.value]]) }, [j(t.$slots, "default")], 2), [[ae, !e.collapsed]])], 2));
1279
+ }, null, -1)]], 2))], 10, Cn), R(l("div", { class: b(["p-6 border-t rounded-b-xl", [F(o).border, p.value]]) }, [j(t.$slots, "default")], 2), [[oe, !e.collapsed]])], 2));
1265
1280
  }
1266
- }), wn = ["disabled"], Tn = ["disabled"], En = {
1281
+ }), En = ["disabled"], Dn = ["disabled"], On = {
1267
1282
  key: 0,
1268
1283
  class: "w-4 h-4 animate-spin",
1269
1284
  fill: "none",
1270
1285
  viewBox: "0 0 24 24",
1271
1286
  "aria-hidden": "true"
1272
- }, Dn = /* @__PURE__ */ m({
1287
+ }, kn = /* @__PURE__ */ m({
1273
1288
  __name: "BaseConfirmModal",
1274
1289
  props: {
1275
1290
  title: {},
@@ -1285,16 +1300,16 @@ var fn = { class: "flex items-start gap-4 min-w-0" }, pn = { class: "flex-1 min-
1285
1300
  },
1286
1301
  emits: ["confirm", "cancel"],
1287
1302
  setup(e, { emit: t }) {
1288
- let n = e, r = t, { isDark: i } = W(), a = Z();
1303
+ let n = e, r = t, { isDark: i } = U(), a = X();
1289
1304
  function u() {
1290
1305
  n.submitting || r("confirm");
1291
1306
  }
1292
1307
  function d() {
1293
1308
  n.submitting || r("cancel");
1294
1309
  }
1295
- return (t, n) => (E(), o(bn, {
1310
+ return (t, n) => (D(), o(Sn, {
1296
1311
  title: e.title,
1297
- icon: F(Se),
1312
+ icon: F(Ce),
1298
1313
  "icon-bg-class": e.variant === "danger" ? F(i) ? "bg-red-900/30" : "bg-red-50" : F(i) ? "bg-amber-900/30" : "bg-amber-50",
1299
1314
  "icon-class": e.variant === "danger" ? "text-red-600" : "text-amber-600",
1300
1315
  "manual-close": e.submitting,
@@ -1303,14 +1318,14 @@ var fn = { class: "flex items-start gap-4 min-w-0" }, pn = { class: "flex-1 min-
1303
1318
  footer: L(() => [l("button", {
1304
1319
  type: "button",
1305
1320
  disabled: e.submitting,
1306
- class: y(["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", [F(a).ghostButton, e.submitting ? "opacity-60 cursor-not-allowed" : "cursor-pointer"]]),
1321
+ class: b(["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", [F(a).ghostButton, e.submitting ? "opacity-60 cursor-not-allowed" : "cursor-pointer"]]),
1307
1322
  onClick: d
1308
- }, P(e.cancelText), 11, wn), l("button", {
1323
+ }, P(e.cancelText), 11, En), l("button", {
1309
1324
  type: "button",
1310
1325
  disabled: e.submitting,
1311
- class: y(["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"]]),
1326
+ class: b(["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"]]),
1312
1327
  onClick: u
1313
- }, [e.submitting ? (E(), c("svg", En, [...n[0] ||= [l("circle", {
1328
+ }, [e.submitting ? (D(), c("svg", On, [...n[0] ||= [l("circle", {
1314
1329
  class: "opacity-25",
1315
1330
  cx: "12",
1316
1331
  cy: "12",
@@ -1321,8 +1336,8 @@ var fn = { class: "flex items-start gap-4 min-w-0" }, pn = { class: "flex-1 min-
1321
1336
  class: "opacity-75",
1322
1337
  fill: "currentColor",
1323
1338
  d: "M4 12a8 8 0 018-8v4a4 4 0 00-4 4H4z"
1324
- }, null, -1)]])) : s("", !0), f(" " + P(e.submitting ? e.submittingText : e.confirmText), 1)], 10, Tn)]),
1325
- default: L(() => [j(t.$slots, "message", {}, () => [l("p", { class: y(["text-sm", F(i) ? "text-gray-300" : "text-gray-600"]) }, P(e.message), 3)]), j(t.$slots, "default")]),
1339
+ }, null, -1)]])) : s("", !0), f(" " + P(e.submitting ? e.submittingText : e.confirmText), 1)], 10, Dn)]),
1340
+ default: L(() => [j(t.$slots, "message", {}, () => [l("p", { class: b(["text-sm", F(i) ? "text-gray-300" : "text-gray-600"]) }, P(e.message), 3)]), j(t.$slots, "default")]),
1326
1341
  _: 3
1327
1342
  }, 8, [
1328
1343
  "title",
@@ -1332,7 +1347,7 @@ var fn = { class: "flex items-start gap-4 min-w-0" }, pn = { class: "flex-1 min-
1332
1347
  "manual-close"
1333
1348
  ]));
1334
1349
  }
1335
- }), On = { class: "mt-4" }, kn = ["placeholder"], An = ["disabled"], jn = /* @__PURE__ */ m({
1350
+ }), An = { class: "mt-4" }, jn = ["placeholder"], Mn = ["disabled"], Nn = /* @__PURE__ */ m({
1336
1351
  __name: "BaseTextInputModal",
1337
1352
  props: {
1338
1353
  title: {},
@@ -1350,9 +1365,9 @@ var fn = { class: "flex items-start gap-4 min-w-0" }, pn = { class: "flex-1 min-
1350
1365
  },
1351
1366
  emits: ["confirm", "cancel"],
1352
1367
  setup(e, { emit: t }) {
1353
- let n = e, r = t, { isDark: i } = W(), a = Z(), s = k(n.initialValue), c = k(null);
1354
- C(async () => {
1355
- await v(), c.value?.focus();
1368
+ let n = e, r = t, { isDark: i } = U(), a = X(), s = k(n.initialValue), c = k(null);
1369
+ w(async () => {
1370
+ await y(), c.value?.focus();
1356
1371
  });
1357
1372
  function d() {
1358
1373
  s.value.trim() && !n.submitting && r("confirm", s.value.trim());
@@ -1363,31 +1378,31 @@ var fn = { class: "flex items-start gap-4 min-w-0" }, pn = { class: "flex-1 min-
1363
1378
  function p() {
1364
1379
  s.value.trim() === (n.initialValue ?? "").trim() && f();
1365
1380
  }
1366
- return dn(f), (t, n) => (E(), o(bn, {
1381
+ return pn(f), (t, n) => (D(), o(Sn, {
1367
1382
  title: e.title,
1368
- icon: F(be),
1383
+ icon: F(xe),
1369
1384
  "manual-close": "",
1370
1385
  onBackdrop: p
1371
1386
  }, u({
1372
1387
  footer: L(() => [l("button", {
1373
1388
  type: "button",
1374
- class: y(["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", F(a).ghostButton]),
1389
+ class: b(["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", F(a).ghostButton]),
1375
1390
  onClick: f
1376
1391
  }, P(e.cancelText), 3), l("button", {
1377
1392
  type: "button",
1378
1393
  disabled: !s.value.trim() || e.submitting,
1379
- class: y(["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"]]),
1394
+ class: b(["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"]]),
1380
1395
  onClick: d
1381
- }, P(e.submitting ? e.submittingText : e.confirmText), 11, An)]),
1382
- default: L(() => [l("p", { class: y(["text-sm", F(i) ? "text-gray-300" : "text-gray-600"]) }, P(e.message), 3), l("div", On, [l("label", { class: y(["block text-sm font-medium mb-1", F(a).label]) }, P(e.inputLabel), 3), R(l("input", {
1396
+ }, P(e.submitting ? e.submittingText : e.confirmText), 11, Mn)]),
1397
+ default: L(() => [l("p", { class: b(["text-sm", F(i) ? "text-gray-300" : "text-gray-600"]) }, P(e.message), 3), l("div", An, [l("label", { class: b(["block text-sm font-medium mb-1", F(a).label]) }, P(e.inputLabel), 3), R(l("input", {
1383
1398
  ref_key: "nameInput",
1384
1399
  ref: c,
1385
1400
  "onUpdate:modelValue": n[0] ||= (e) => s.value = e,
1386
1401
  type: "text",
1387
1402
  placeholder: e.placeholder,
1388
- class: y(["w-full px-3 py-2 rounded-md border text-sm transition-colors", F(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"]),
1389
- onKeyup: oe(d, ["enter"])
1390
- }, null, 42, kn), [[ie, s.value]])])]),
1403
+ class: b(["w-full px-3 py-2 rounded-md border text-sm transition-colors", F(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"]),
1404
+ onKeyup: se(d, ["enter"])
1405
+ }, null, 42, jn), [[ae, s.value]])])]),
1391
1406
  _: 2
1392
1407
  }, [t.$slots.icon ? {
1393
1408
  name: "icon",
@@ -1395,7 +1410,7 @@ var fn = { class: "flex items-start gap-4 min-w-0" }, pn = { class: "flex-1 min-
1395
1410
  key: "0"
1396
1411
  } : void 0]), 1032, ["title", "icon"]));
1397
1412
  }
1398
- }), Mn = { class: "flex items-center justify-center min-h-[60vh]" }, Nn = { class: "text-center px-6" }, Pn = /* @__PURE__ */ m({
1413
+ }), Pn = { class: "flex items-center justify-center min-h-[60vh]" }, Fn = { class: "text-center px-6" }, In = /* @__PURE__ */ m({
1399
1414
  __name: "BaseNotFoundPage",
1400
1415
  props: {
1401
1416
  code: { default: "404" },
@@ -1404,33 +1419,33 @@ var fn = { class: "flex items-start gap-4 min-w-0" }, pn = { class: "flex-1 min-
1404
1419
  homeLabel: { default: "Go home" }
1405
1420
  },
1406
1421
  setup(e) {
1407
- let t = e, n = Me(), { isDark: r } = W(), i = Z();
1422
+ let t = e, n = Pe(), { isDark: r } = U(), i = X();
1408
1423
  function a() {
1409
1424
  n.push({ name: t.homeRouteName });
1410
1425
  }
1411
- return (t, n) => (E(), c("div", Mn, [l("div", Nn, [
1412
- p(F(Se), { class: y(["w-16 h-16 mx-auto mb-4", F(i).illustration]) }, null, 8, ["class"]),
1413
- l("h1", { class: y(["text-4xl font-bold mb-2", F(r) ? "text-gray-200" : "text-gray-800"]) }, P(e.code), 3),
1414
- l("p", { class: y(["text-lg mb-6", F(i).dimTextAlt]) }, P(e.message), 3),
1426
+ return (t, n) => (D(), c("div", Pn, [l("div", Fn, [
1427
+ p(F(Ce), { class: b(["w-16 h-16 mx-auto mb-4", F(i).illustration]) }, null, 8, ["class"]),
1428
+ l("h1", { class: b(["text-4xl font-bold mb-2", F(r) ? "text-gray-200" : "text-gray-800"]) }, P(e.code), 3),
1429
+ l("p", { class: b(["text-lg mb-6", F(i).dimTextAlt]) }, P(e.message), 3),
1415
1430
  l("button", {
1416
1431
  onClick: a,
1417
- class: y(["inline-flex items-center gap-2 px-4 py-2 rounded-lg text-sm font-medium text-white transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 focus-visible:ring-offset-2", F(r) ? "bg-emerald-600 hover:bg-emerald-500" : "bg-emerald-600 hover:bg-emerald-700"])
1432
+ class: b(["inline-flex items-center gap-2 px-4 py-2 rounded-lg text-sm font-medium text-white transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 focus-visible:ring-offset-2", F(r) ? "bg-emerald-600 hover:bg-emerald-500" : "bg-emerald-600 hover:bg-emerald-700"])
1418
1433
  }, P(e.homeLabel), 3)
1419
1434
  ])]));
1420
1435
  }
1421
- }), Fn = k(!1);
1422
- function In() {
1436
+ }), Ln = k(!1);
1437
+ function Rn() {
1423
1438
  function e() {
1424
- Fn.value = !0;
1439
+ Ln.value = !0;
1425
1440
  }
1426
1441
  function t() {
1427
- Fn.value = !1;
1442
+ Ln.value = !1;
1428
1443
  }
1429
1444
  function n() {
1430
- Fn.value = !Fn.value;
1445
+ Ln.value = !Ln.value;
1431
1446
  }
1432
1447
  return {
1433
- mobileOpen: Fn,
1448
+ mobileOpen: Ln,
1434
1449
  open: e,
1435
1450
  close: t,
1436
1451
  toggle: n
@@ -1438,30 +1453,30 @@ function In() {
1438
1453
  }
1439
1454
  //#endregion
1440
1455
  //#region src/composables/useSidebarCollapse.ts
1441
- var Q = k(!1), Ln = !1, Rn = "mgv-sidebar-collapsed";
1442
- function zn(e) {
1443
- if (!Ln && (Ln = !0, Rn = e, typeof window < "u")) {
1444
- let e = window.localStorage?.getItem(Rn);
1445
- e && (Q.value = e === "true"), h(!0).run(() => {
1446
- I(Q, (e) => {
1447
- window.localStorage?.setItem(Rn, String(e));
1456
+ var Z = k(!1), zn = !1, Bn = "mgv-sidebar-collapsed";
1457
+ function Vn(e) {
1458
+ if (!zn && (zn = !0, Bn = e, typeof window < "u")) {
1459
+ let e = window.localStorage?.getItem(Bn);
1460
+ e && (Z.value = e === "true"), h(!0).run(() => {
1461
+ I(Z, (e) => {
1462
+ window.localStorage?.setItem(Bn, String(e));
1448
1463
  });
1449
1464
  });
1450
1465
  }
1451
1466
  }
1452
- function Bn(e) {
1453
- zn(e?.storageKey ?? Rn);
1467
+ function Hn(e) {
1468
+ Vn(e?.storageKey ?? Bn);
1454
1469
  function t() {
1455
- Q.value = !0;
1470
+ Z.value = !0;
1456
1471
  }
1457
1472
  function n() {
1458
- Q.value = !1;
1473
+ Z.value = !1;
1459
1474
  }
1460
1475
  function r() {
1461
- Q.value = !Q.value;
1476
+ Z.value = !Z.value;
1462
1477
  }
1463
1478
  return {
1464
- collapsed: Q,
1479
+ collapsed: Z,
1465
1480
  collapse: t,
1466
1481
  expand: n,
1467
1482
  toggle: r
@@ -1469,45 +1484,45 @@ function Bn(e) {
1469
1484
  }
1470
1485
  //#endregion
1471
1486
  //#region src/composables/useNotifications.ts
1472
- var $ = k([]), Vn = k(!1), Hn = a(() => $.value.filter((e) => !e.read).length);
1473
- function Un() {
1487
+ var Q = k([]), Un = k(!1), Wn = a(() => Q.value.filter((e) => !e.read).length);
1488
+ function Gn() {
1474
1489
  function e() {
1475
- Vn.value = !0;
1490
+ Un.value = !0;
1476
1491
  }
1477
1492
  function t() {
1478
- Vn.value = !1;
1493
+ Un.value = !1;
1479
1494
  }
1480
1495
  function n() {
1481
- Vn.value = !Vn.value;
1496
+ Un.value = !Un.value;
1482
1497
  }
1483
1498
  function r(e) {
1484
- $.value = e;
1499
+ Q.value = e;
1485
1500
  }
1486
1501
  function i(e) {
1487
- $.value = [e, ...$.value];
1502
+ Q.value = [e, ...Q.value];
1488
1503
  }
1489
1504
  function a(e) {
1490
- $.value = $.value.filter((t) => t.id !== e);
1505
+ Q.value = Q.value.filter((t) => t.id !== e);
1491
1506
  }
1492
1507
  function o(e) {
1493
- $.value = $.value.map((t) => t.id === e ? {
1508
+ Q.value = Q.value.map((t) => t.id === e ? {
1494
1509
  ...t,
1495
1510
  read: !0
1496
1511
  } : t);
1497
1512
  }
1498
1513
  function s() {
1499
- $.value = $.value.map((e) => e.read ? e : {
1514
+ Q.value = Q.value.map((e) => e.read ? e : {
1500
1515
  ...e,
1501
1516
  read: !0
1502
1517
  });
1503
1518
  }
1504
1519
  function c() {
1505
- $.value = [];
1520
+ Q.value = [];
1506
1521
  }
1507
1522
  return {
1508
- notifications: $,
1509
- unreadCount: Hn,
1510
- open: Vn,
1523
+ notifications: Q,
1524
+ unreadCount: Wn,
1525
+ open: Un,
1511
1526
  openPanel: e,
1512
1527
  closePanel: t,
1513
1528
  togglePanel: n,
@@ -1521,22 +1536,22 @@ function Un() {
1521
1536
  }
1522
1537
  //#endregion
1523
1538
  //#region src/components/BaseSidebar.vue?vue&type=script&setup=true&lang.ts
1524
- var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }, Kn = { class: "flex-1 overflow-y-auto px-3 space-y-6" }, qn = { class: "space-y-0.5" }, Jn = [
1539
+ var Kn = ["aria-label", "aria-expanded"], qn = { class: "flex flex-col h-full" }, Jn = { class: "flex-1 overflow-y-auto px-3 space-y-6" }, Yn = { class: "space-y-0.5" }, Xn = [
1525
1540
  "aria-current",
1526
1541
  "title",
1527
1542
  "onClick"
1528
- ], Yn = ["aria-label"], Xn = { class: "relative shrink-0" }, Zn = {
1543
+ ], Zn = ["aria-label"], Qn = { class: "relative shrink-0" }, $n = {
1529
1544
  key: 0,
1530
1545
  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"
1531
- }, Qn = [
1546
+ }, er = [
1532
1547
  "title",
1533
1548
  "aria-label",
1534
1549
  "aria-pressed"
1535
- ], $n = [
1550
+ ], tr = [
1536
1551
  "title",
1537
1552
  "aria-label",
1538
1553
  "aria-pressed"
1539
- ], er = /*#__PURE__*/ ((e, t) => {
1554
+ ], nr = /*#__PURE__*/ ((e, t) => {
1540
1555
  let n = e.__vccOpts || e;
1541
1556
  for (let [e, r] of t) n[e] = r;
1542
1557
  return n;
@@ -1561,41 +1576,41 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
1561
1576
  }
1562
1577
  },
1563
1578
  setup(t) {
1564
- let n = t, r = Me(), i = je(), { isDark: u, toggleTheme: d } = W(), { mobileOpen: m, close: h, toggle: g } = In(), { collapsed: _, toggle: b } = Bn(), { unreadCount: x, togglePanel: S } = Un(), C = a(() => n.collapsible && _.value), w = k(null), T = null;
1579
+ let n = t, r = Pe(), i = Ne(), { isDark: u, toggleTheme: d } = U(), { mobileOpen: m, close: h, toggle: g } = Rn(), { collapsed: _, toggle: v } = Hn(), { unreadCount: x, togglePanel: S } = Gn(), C = a(() => n.collapsible && _.value), w = k(null), T = null;
1565
1580
  I(m, async (e) => {
1566
- e ? (T = document.activeElement instanceof HTMLElement ? document.activeElement : null, await v(), w.value?.focus()) : (T?.focus(), T = null);
1581
+ e ? (T = document.activeElement instanceof HTMLElement ? document.activeElement : null, await y(), w.value?.focus()) : (T?.focus(), T = null);
1567
1582
  });
1568
- function D() {
1583
+ function E() {
1569
1584
  r.push({ name: n.homeRouteName }), h();
1570
1585
  }
1571
1586
  function O(e) {
1572
1587
  return i.name === e;
1573
1588
  }
1574
- function M(e) {
1589
+ function ee(e) {
1575
1590
  r.push({ name: e }), h();
1576
1591
  }
1577
- return (n, r) => (E(), c("div", null, [
1578
- l("div", { class: y(["mobile-topbar fixed top-0 inset-x-0 z-30 flex items-center justify-between px-4 py-3 border-b transition-colors", F(u) ? "bg-gray-900 border-gray-800" : "bg-white border-gray-200"]) }, [l("button", {
1592
+ return (n, r) => (D(), c("div", null, [
1593
+ l("div", { class: b(["mobile-topbar fixed top-0 inset-x-0 z-30 flex items-center justify-between px-4 py-3 border-b transition-colors", F(u) ? "bg-gray-900 border-gray-800" : "bg-white border-gray-200"]) }, [l("button", {
1579
1594
  type: "button",
1580
- onClick: D,
1595
+ onClick: E,
1581
1596
  class: "cursor-pointer rounded focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500",
1582
1597
  "aria-label": "Go to home"
1583
1598
  }, [j(n.$slots, "logo", { size: 28 }, void 0, !0)]), l("button", {
1584
1599
  type: "button",
1585
1600
  onClick: r[0] ||= (...e) => F(g) && F(g)(...e),
1586
- class: y(["p-2 rounded-lg cursor-pointer transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", F(u) ? "text-gray-400 hover:bg-gray-800" : "text-gray-600 hover:bg-gray-100"]),
1601
+ class: b(["p-2 rounded-lg cursor-pointer transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", F(u) ? "text-gray-400 hover:bg-gray-800" : "text-gray-600 hover:bg-gray-100"]),
1587
1602
  "aria-label": F(m) ? "Close navigation menu" : "Open navigation menu",
1588
1603
  "aria-expanded": F(m)
1589
- }, [F(m) ? (E(), o(F(B), {
1604
+ }, [F(m) ? (D(), o(F(Ae), {
1590
1605
  key: 1,
1591
1606
  class: "w-6 h-6",
1592
1607
  "aria-hidden": "true"
1593
- })) : (E(), o(F(ue), {
1608
+ })) : (D(), o(F(de), {
1594
1609
  key: 0,
1595
1610
  class: "w-6 h-6",
1596
1611
  "aria-hidden": "true"
1597
- }))], 10, Wn)], 2),
1598
- F(m) ? (E(), c("div", {
1612
+ }))], 10, Kn)], 2),
1613
+ F(m) ? (D(), c("div", {
1599
1614
  key: 0,
1600
1615
  class: "mobile-overlay fixed inset-0 z-40 bg-black/50",
1601
1616
  "aria-hidden": "true",
@@ -1604,15 +1619,15 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
1604
1619
  l("aside", {
1605
1620
  role: "navigation",
1606
1621
  "aria-label": "Main navigation",
1607
- class: y(["fixed top-0 left-0 h-screen w-60 flex flex-col border-r transition-all duration-300 lg:pointer-events-auto", [
1622
+ class: b(["fixed top-0 left-0 h-screen w-60 flex flex-col border-r transition-all duration-300 lg:pointer-events-auto", [
1608
1623
  F(u) ? "bg-gray-900 border-gray-800" : "bg-white border-gray-200",
1609
1624
  F(m) ? "translate-x-0 z-50" : "-translate-x-full max-lg:pointer-events-none lg:translate-x-0 z-50",
1610
1625
  t.collapsible && F(_) ? "lg:w-16" : "lg:w-60"
1611
1626
  ]])
1612
- }, [l("div", Gn, [
1613
- l("div", { class: y(["px-5 pt-5 pb-4 flex items-center justify-center relative", { "lg:px-2": C.value }]) }, [l("button", {
1627
+ }, [l("div", qn, [
1628
+ l("div", { class: b(["px-5 pt-5 pb-4 flex items-center justify-center relative", { "lg:px-2": C.value }]) }, [l("button", {
1614
1629
  type: "button",
1615
- onClick: D,
1630
+ onClick: E,
1616
1631
  class: "cursor-pointer rounded focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500",
1617
1632
  "aria-label": "Go to home"
1618
1633
  }, [j(n.$slots, "logo", { size: C.value ? 36 : 52 }, void 0, !0)]), l("button", {
@@ -1620,92 +1635,92 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
1620
1635
  ref: w,
1621
1636
  type: "button",
1622
1637
  onClick: r[2] ||= (...e) => F(h) && F(h)(...e),
1623
- class: y(["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", F(u) ? "text-gray-400 hover:bg-gray-800" : "text-gray-500 hover:bg-gray-100"]),
1638
+ class: b(["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", F(u) ? "text-gray-400 hover:bg-gray-800" : "text-gray-500 hover:bg-gray-100"]),
1624
1639
  "aria-label": "Close navigation menu"
1625
- }, [p(F(B), {
1640
+ }, [p(F(Ae), {
1626
1641
  class: "w-5 h-5",
1627
1642
  "aria-hidden": "true"
1628
1643
  })], 2)], 2),
1629
- l("nav", Kn, [(E(!0), c(e, null, A(t.sections, (t) => (E(), c("div", { key: t.title }, [l("p", { class: y(["px-2 mb-2 text-[10px] font-semibold uppercase tracking-wider text-gray-500", { "lg:hidden": C.value }]) }, P(t.title), 3), l("ul", qn, [(E(!0), c(e, null, A(t.items, (e) => (E(), c("li", { key: e.name }, [l("button", {
1644
+ l("nav", Jn, [(D(!0), c(e, null, A(t.sections, (t) => (D(), c("div", { key: t.title }, [l("p", { class: b(["px-2 mb-2 text-[10px] font-semibold uppercase tracking-wider text-gray-500", { "lg:hidden": C.value }]) }, P(t.title), 3), l("ul", Yn, [(D(!0), c(e, null, A(t.items, (e) => (D(), c("li", { key: e.name }, [l("button", {
1630
1645
  type: "button",
1631
1646
  "aria-current": O(e.name) ? "page" : void 0,
1632
1647
  title: C.value ? e.label : void 0,
1633
- onClick: (t) => M(e.name),
1634
- class: y(["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", [O(e.name) ? F(u) ? "bg-emerald-500/15 text-emerald-300" : "bg-emerald-50 text-emerald-700" : F(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 }]])
1635
- }, [(E(), o(N(e.icon), { class: "w-[18px] h-[18px] shrink-0" })), l("span", { class: y({ "lg:hidden": C.value }) }, P(e.label), 3)], 10, Jn)]))), 128))])]))), 128))]),
1636
- l("div", { class: y(["px-4 py-4 border-t transition-colors space-y-3", F(u) ? "border-gray-800" : "border-gray-200"]) }, [
1637
- t.showNotifications ? (E(), c("button", {
1648
+ onClick: (t) => ee(e.name),
1649
+ class: b(["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", [O(e.name) ? F(u) ? "bg-emerald-500/15 text-emerald-300" : "bg-emerald-50 text-emerald-700" : F(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
+ }, [(D(), o(N(e.icon), { class: "w-[18px] h-[18px] shrink-0" })), l("span", { class: b({ "lg:hidden": C.value }) }, P(e.label), 3)], 10, Xn)]))), 128))])]))), 128))]),
1651
+ l("div", { class: b(["px-4 py-4 border-t transition-colors space-y-3", F(u) ? "border-gray-800" : "border-gray-200"]) }, [
1652
+ t.showNotifications ? (D(), c("button", {
1638
1653
  key: 0,
1639
1654
  type: "button",
1640
1655
  onClick: r[3] ||= (...e) => F(S) && F(S)(...e),
1641
1656
  title: "Notifications",
1642
1657
  "aria-label": F(x) > 0 ? `Notifications, ${F(x)} unread` : "Notifications",
1643
- class: y(["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", [F(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 }]])
1644
- }, [l("span", Xn, [p(F(de), {
1658
+ class: b(["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", [F(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 }]])
1659
+ }, [l("span", Qn, [p(F(fe), {
1645
1660
  class: "w-[18px] h-[18px]",
1646
1661
  "aria-hidden": "true"
1647
- }), F(x) > 0 ? (E(), c("span", Zn, P(F(x) > 99 ? "99+" : F(x)), 1)) : s("", !0)]), l("span", { class: y({ "lg:hidden": C.value }) }, "Notifications", 2)], 10, Yn)) : s("", !0),
1648
- t.showThemeToggle ? (E(), c("button", {
1662
+ }), F(x) > 0 ? (D(), c("span", $n, P(F(x) > 99 ? "99+" : F(x)), 1)) : s("", !0)]), l("span", { class: b({ "lg:hidden": C.value }) }, "Notifications", 2)], 10, Zn)) : s("", !0),
1663
+ t.showThemeToggle ? (D(), c("button", {
1649
1664
  key: 1,
1650
1665
  type: "button",
1651
1666
  onClick: r[4] ||= (...e) => F(d) && F(d)(...e),
1652
1667
  title: F(u) ? "Switch to light mode" : "Switch to dark mode",
1653
1668
  "aria-label": F(u) ? "Switch to light mode" : "Switch to dark mode",
1654
1669
  "aria-pressed": F(u),
1655
- class: y(["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", [F(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 }]])
1670
+ class: b(["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", [F(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 }]])
1656
1671
  }, [
1657
- (E(), o(N(F(u) ? F(Oe) : F(De)), {
1658
- class: y(["hidden w-[18px] h-[18px] shrink-0", { "lg:block": C.value }]),
1672
+ (D(), o(N(F(u) ? F(ke) : F(Oe)), {
1673
+ class: b(["hidden w-[18px] h-[18px] shrink-0", { "lg:block": C.value }]),
1659
1674
  "aria-hidden": "true"
1660
1675
  }, null, 8, ["class"])),
1661
- l("span", { class: y({ "lg:hidden": C.value }) }, P(F(u) ? "Switch to light" : "Switch to dark"), 3),
1662
- l("span", { class: y(["ml-auto relative w-9 h-5 rounded-full transition-colors", [F(u) ? "bg-emerald-600" : "bg-gray-300", { "lg:hidden": C.value }]]) }, [l("span", { class: y(["absolute top-0.5 left-0.5 w-4 h-4 rounded-full bg-white shadow-sm transition-transform duration-300", F(u) ? "translate-x-4" : "translate-x-0"]) }, null, 2)], 2)
1663
- ], 10, Qn)) : s("", !0),
1664
- t.collapsible ? (E(), c("button", {
1676
+ l("span", { class: b({ "lg:hidden": C.value }) }, P(F(u) ? "Switch to light" : "Switch to dark"), 3),
1677
+ l("span", { class: b(["ml-auto relative w-9 h-5 rounded-full transition-colors", [F(u) ? "bg-emerald-600" : "bg-gray-300", { "lg:hidden": C.value }]]) }, [l("span", { class: b(["absolute top-0.5 left-0.5 w-4 h-4 rounded-full bg-white shadow-sm transition-transform duration-300", F(u) ? "translate-x-4" : "translate-x-0"]) }, null, 2)], 2)
1678
+ ], 10, er)) : s("", !0),
1679
+ t.collapsible ? (D(), c("button", {
1665
1680
  key: 2,
1666
1681
  type: "button",
1667
- onClick: r[5] ||= (...e) => F(b) && F(b)(...e),
1682
+ onClick: r[5] ||= (...e) => F(v) && F(v)(...e),
1668
1683
  title: F(_) ? "Expand sidebar" : "Collapse sidebar",
1669
1684
  "aria-label": F(_) ? "Expand sidebar" : "Collapse sidebar",
1670
1685
  "aria-pressed": F(_),
1671
- class: y(["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", [F(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 }]])
1672
- }, [(E(), o(N(F(_) ? F(he) : F(me)), {
1686
+ class: b(["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", [F(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 }]])
1687
+ }, [(D(), o(N(F(_) ? F(ge) : F(he)), {
1673
1688
  class: "w-[18px] h-[18px] shrink-0",
1674
1689
  "aria-hidden": "true"
1675
- })), l("span", { class: y({ "lg:hidden": C.value }) }, "Collapse", 2)], 10, $n)) : s("", !0),
1676
- l("div", { class: y({ "lg:hidden": C.value }) }, [j(n.$slots, "status", {}, void 0, !0)], 2),
1677
- l("div", { class: y({ "lg:hidden": C.value }) }, [j(n.$slots, "footer", {}, () => [t.appName || t.version ? (E(), c("div", {
1690
+ })), l("span", { class: b({ "lg:hidden": C.value }) }, "Collapse", 2)], 10, tr)) : s("", !0),
1691
+ l("div", { class: b({ "lg:hidden": C.value }) }, [j(n.$slots, "status", {}, void 0, !0)], 2),
1692
+ l("div", { class: b({ "lg:hidden": C.value }) }, [j(n.$slots, "footer", {}, () => [t.appName || t.version ? (D(), c("div", {
1678
1693
  key: 0,
1679
- class: y(["flex items-center justify-center gap-2 text-xs", (F(u), "text-gray-500")])
1694
+ class: b(["flex items-center justify-center gap-2 text-xs", (F(u), "text-gray-500")])
1680
1695
  }, [l("span", null, [
1681
1696
  f(P(t.appName), 1),
1682
- t.appName && t.version ? (E(), c(e, { key: 0 }, [f(P(" "))], 64)) : s("", !0),
1683
- t.version ? (E(), c(e, { key: 1 }, [f("v" + P(t.version), 1)], 64)) : s("", !0)
1697
+ t.appName && t.version ? (D(), c(e, { key: 0 }, [f(P(" "))], 64)) : s("", !0),
1698
+ t.version ? (D(), c(e, { key: 1 }, [f("v" + P(t.version), 1)], 64)) : s("", !0)
1684
1699
  ])], 2)) : s("", !0)], !0)], 2)
1685
1700
  ], 2)
1686
1701
  ])], 2)
1687
1702
  ]));
1688
1703
  }
1689
- }), [["__scopeId", "data-v-bfce9dd7"]]), tr = {
1704
+ }), [["__scopeId", "data-v-bfce9dd7"]]), rr = {
1690
1705
  key: 1,
1691
1706
  class: "mt-4 flex justify-center py-6"
1692
- }, nr = {
1707
+ }, ir = {
1693
1708
  key: 2,
1694
1709
  class: "mt-4 text-sm text-red-500",
1695
1710
  role: "alert"
1696
- }, rr = {
1711
+ }, ar = {
1697
1712
  key: 3,
1698
1713
  class: "mt-4"
1699
- }, ir = { class: "relative" }, ar = ["placeholder"], or = {
1714
+ }, or = { class: "relative" }, sr = ["placeholder"], cr = {
1700
1715
  key: 4,
1701
1716
  class: "mt-3 max-h-64 overflow-y-auto"
1702
- }, sr = ["aria-pressed", "onClick"], cr = { class: "flex-1 min-w-0" }, lr = {
1717
+ }, lr = ["aria-pressed", "onClick"], ur = { class: "flex-1 min-w-0" }, dr = {
1703
1718
  key: 0,
1704
1719
  class: "text-center py-6"
1705
- }, ur = {
1720
+ }, fr = {
1706
1721
  key: 1,
1707
1722
  class: "text-center py-6"
1708
- }, dr = ["disabled"], fr = ["disabled"], pr = /* @__PURE__ */ m({
1723
+ }, pr = ["disabled"], mr = ["disabled"], hr = /* @__PURE__ */ m({
1709
1724
  __name: "BaseEntityPickerModal",
1710
1725
  props: {
1711
1726
  title: {},
@@ -1727,10 +1742,10 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
1727
1742
  },
1728
1743
  emits: ["confirm", "cancel"],
1729
1744
  setup(t, { emit: n }) {
1730
- let r = t, i = n, { isDark: d } = W(), f = Z(), m = k([]), h = k(!1), g = k(""), _ = k(null), b = k(""), x = k(null), S = a(() => {
1745
+ let r = t, i = n, { isDark: d } = U(), f = X(), m = k([]), h = k(!1), g = k(""), _ = k(null), v = k(""), x = k(null), S = a(() => {
1731
1746
  let e = r.loader ? m.value : r.items;
1732
1747
  return r.excludeId ? e.filter((e) => e.id !== r.excludeId) : e;
1733
- }), w = a(() => S.value.filter((e) => e.label.toLowerCase().includes(b.value.toLowerCase()))), T = {
1748
+ }), C = a(() => S.value.filter((e) => e.label.toLowerCase().includes(v.value.toLowerCase()))), T = {
1734
1749
  emerald: {
1735
1750
  iconBg: "bg-emerald-50",
1736
1751
  iconText: "text-emerald-600",
@@ -1776,7 +1791,7 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
1776
1791
  confirmActive: "bg-amber-600 hover:bg-amber-700 cursor-pointer",
1777
1792
  confirmDisabled: "bg-amber-400 cursor-not-allowed"
1778
1793
  }
1779
- }, D = {
1794
+ }, E = {
1780
1795
  emerald: {
1781
1796
  iconBg: "bg-emerald-900/30",
1782
1797
  iconText: "text-emerald-400",
@@ -1822,8 +1837,8 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
1822
1837
  confirmActive: "bg-amber-600 hover:bg-amber-700 cursor-pointer",
1823
1838
  confirmDisabled: "bg-amber-400 cursor-not-allowed"
1824
1839
  }
1825
- }, O = a(() => (d.value ? D : T)[r.variant]);
1826
- C(async () => {
1840
+ }, O = a(() => (d.value ? E : T)[r.variant]);
1841
+ w(async () => {
1827
1842
  if (r.loader) {
1828
1843
  h.value = !0;
1829
1844
  try {
@@ -1834,62 +1849,62 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
1834
1849
  h.value = !1;
1835
1850
  }
1836
1851
  }
1837
- await v(), x.value?.focus();
1852
+ await y(), x.value?.focus();
1838
1853
  });
1839
- function M() {
1854
+ function ee() {
1840
1855
  _.value && !r.submitting && i("confirm", _.value);
1841
1856
  }
1842
- function N() {
1857
+ function M() {
1843
1858
  r.submitting || i("cancel");
1844
1859
  }
1845
- return (n, r) => (E(), o(bn, {
1860
+ return (n, r) => (D(), o(Sn, {
1846
1861
  title: t.title,
1847
- icon: F(Ce),
1862
+ icon: F(we),
1848
1863
  "icon-bg-class": O.value.iconBg,
1849
1864
  "icon-class": O.value.iconText,
1850
1865
  "manual-close": t.submitting,
1851
- onCancel: N
1866
+ onCancel: M
1852
1867
  }, u({
1853
1868
  footer: L(() => [l("button", {
1854
1869
  type: "button",
1855
1870
  disabled: t.submitting,
1856
- class: y(["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", F(f).ghostButton]),
1857
- onClick: N
1858
- }, P(t.cancelText), 11, dr), l("button", {
1871
+ class: b(["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", F(f).ghostButton]),
1872
+ onClick: M
1873
+ }, P(t.cancelText), 11, pr), l("button", {
1859
1874
  type: "button",
1860
1875
  disabled: !_.value || t.submitting,
1861
- class: y(["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", !_.value || t.submitting ? O.value.confirmDisabled : O.value.confirmActive]),
1862
- onClick: M
1863
- }, P(t.submitting ? t.submittingText : t.confirmText), 11, fr)]),
1876
+ class: b(["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", !_.value || t.submitting ? O.value.confirmDisabled : O.value.confirmActive]),
1877
+ onClick: ee
1878
+ }, P(t.submitting ? t.submittingText : t.confirmText), 11, mr)]),
1864
1879
  default: L(() => [
1865
- t.message ? (E(), c("p", {
1880
+ t.message ? (D(), c("p", {
1866
1881
  key: 0,
1867
- class: y(["text-sm", F(d) ? "text-gray-300" : "text-gray-600"])
1882
+ class: b(["text-sm", F(d) ? "text-gray-300" : "text-gray-600"])
1868
1883
  }, P(t.message), 3)) : s("", !0),
1869
- h.value ? (E(), c("div", tr, [p(Bt, { color: "emerald" })])) : g.value ? (E(), c("div", nr, P(g.value), 1)) : s("", !0),
1870
- !h.value && !g.value && S.value.length > 0 ? (E(), c("div", rr, [l("div", ir, [p(F(Te), {
1871
- class: y(["absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4", F(f).dimText]),
1884
+ h.value ? (D(), c("div", rr, [p(Ht, { color: "emerald" })])) : g.value ? (D(), c("div", ir, P(g.value), 1)) : s("", !0),
1885
+ !h.value && !g.value && S.value.length > 0 ? (D(), c("div", ar, [l("div", or, [p(F(Ee), {
1886
+ class: b(["absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4", F(f).dimText]),
1872
1887
  "aria-hidden": "true"
1873
1888
  }, null, 8, ["class"]), R(l("input", {
1874
1889
  ref_key: "searchInputRef",
1875
1890
  ref: x,
1876
- "onUpdate:modelValue": r[0] ||= (e) => b.value = e,
1891
+ "onUpdate:modelValue": r[0] ||= (e) => v.value = e,
1877
1892
  type: "text",
1878
1893
  placeholder: t.searchPlaceholder,
1879
- class: y(["w-full pl-9 pr-3 py-2 text-sm rounded-md border outline-none transition-colors", [F(d) ? "bg-gray-800 border-gray-600 text-gray-200 placeholder-gray-500" : "bg-white border-gray-300 text-gray-700 placeholder-gray-400", O.value.inputFocus]])
1880
- }, null, 10, ar), [[ie, b.value]])])])) : s("", !0),
1881
- !h.value && !g.value ? (E(), c("div", or, [(E(!0), c(e, null, A(w.value, (e) => (E(), c("button", {
1894
+ class: b(["w-full pl-9 pr-3 py-2 text-sm rounded-md border outline-none transition-colors", [F(d) ? "bg-gray-800 border-gray-600 text-gray-200 placeholder-gray-500" : "bg-white border-gray-300 text-gray-700 placeholder-gray-400", O.value.inputFocus]])
1895
+ }, null, 10, sr), [[ae, v.value]])])])) : s("", !0),
1896
+ !h.value && !g.value ? (D(), c("div", cr, [(D(!0), c(e, null, A(C.value, (e) => (D(), c("button", {
1882
1897
  key: e.id,
1883
1898
  type: "button",
1884
1899
  "aria-pressed": _.value === e.id,
1885
- class: y(["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", [_.value === e.id ? O.value.selectedRow : F(d) ? "hover:bg-gray-800 border border-transparent" : "hover:bg-gray-50 border border-transparent"]]),
1900
+ class: b(["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", [_.value === e.id ? O.value.selectedRow : F(d) ? "hover:bg-gray-800 border border-transparent" : "hover:bg-gray-50 border border-transparent"]]),
1886
1901
  onClick: (t) => _.value = e.id
1887
1902
  }, [
1888
- p(F(Ce), { class: y(["w-5 h-5 flex-shrink-0", F(f).dimText]) }, null, 8, ["class"]),
1889
- l("div", cr, [l("p", { class: y(["text-sm font-medium truncate", F(f).bodyText]) }, P(e.label), 3)]),
1890
- _.value === e.id ? (E(), c("div", {
1903
+ p(F(we), { class: b(["w-5 h-5 flex-shrink-0", F(f).dimText]) }, null, 8, ["class"]),
1904
+ l("div", ur, [l("p", { class: b(["text-sm font-medium truncate", F(f).bodyText]) }, P(e.label), 3)]),
1905
+ _.value === e.id ? (D(), c("div", {
1891
1906
  key: 0,
1892
- class: y(["w-5 h-5 rounded-full flex items-center justify-center", O.value.checkBg])
1907
+ class: b(["w-5 h-5 rounded-full flex items-center justify-center", O.value.checkBg])
1893
1908
  }, [...r[1] ||= [l("svg", {
1894
1909
  class: "w-3 h-3 text-white",
1895
1910
  fill: "none",
@@ -1902,7 +1917,7 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
1902
1917
  "stroke-linejoin": "round",
1903
1918
  d: "M5 13l4 4L19 7"
1904
1919
  })], -1)]], 2)) : s("", !0)
1905
- ], 10, sr))), 128)), S.value.length === 0 ? (E(), c("div", lr, [l("p", { class: y(["text-sm", F(f).dimText]) }, P(t.emptyMessage), 3)])) : w.value.length === 0 ? (E(), c("div", ur, [l("p", { class: y(["text-sm", F(f).dimText]) }, P(t.noMatchMessage), 3)])) : s("", !0)])) : s("", !0)
1920
+ ], 10, lr))), 128)), S.value.length === 0 ? (D(), c("div", dr, [l("p", { class: b(["text-sm", F(f).dimText]) }, P(t.emptyMessage), 3)])) : C.value.length === 0 ? (D(), c("div", fr, [l("p", { class: b(["text-sm", F(f).dimText]) }, P(t.noMatchMessage), 3)])) : s("", !0)])) : s("", !0)
1906
1921
  ]),
1907
1922
  _: 2
1908
1923
  }, [n.$slots.icon ? {
@@ -1917,10 +1932,10 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
1917
1932
  "manual-close"
1918
1933
  ]));
1919
1934
  }
1920
- }), mr = {
1935
+ }), gr = {
1921
1936
  href: "#main-content",
1922
1937
  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"
1923
- }, hr = ["inert"], gr = /* @__PURE__ */ m({
1938
+ }, _r = ["inert"], vr = /* @__PURE__ */ m({
1924
1939
  __name: "BaseAppLayout",
1925
1940
  props: {
1926
1941
  showSidebar: {
@@ -1930,23 +1945,23 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
1930
1945
  skipLinkLabel: { default: "Skip to main content" }
1931
1946
  },
1932
1947
  setup(e) {
1933
- let t = e, { isDark: n } = W(), { mobileOpen: r } = In(), { collapsed: i } = Bn(), o = a(() => t.showSidebar);
1934
- return (t, a) => (E(), c("div", { class: y(["min-h-screen transition-colors duration-300", F(n) ? "bg-gray-950 text-gray-100" : "bg-gray-50 text-gray-800"]) }, [
1935
- l("a", mr, P(e.skipLinkLabel), 1),
1948
+ let t = e, { isDark: n } = U(), { mobileOpen: r } = Rn(), { collapsed: i } = Hn(), o = a(() => t.showSidebar);
1949
+ return (t, a) => (D(), c("div", { class: b(["min-h-screen transition-colors duration-300", F(n) ? "bg-gray-950 text-gray-100" : "bg-gray-50 text-gray-800"]) }, [
1950
+ l("a", gr, P(e.skipLinkLabel), 1),
1936
1951
  o.value ? j(t.$slots, "sidebar", {}, void 0, void 0, 0) : s("", !0),
1937
1952
  l("main", {
1938
1953
  id: "main-content",
1939
1954
  tabindex: "-1",
1940
1955
  inert: o.value && F(r) ? !0 : void 0,
1941
- class: y(["transition-all duration-300", o.value ? F(i) ? "pt-14 lg:pt-0 lg:ml-16" : "pt-14 lg:pt-0 lg:ml-60" : ""])
1942
- }, [j(t.$slots, "default")], 10, hr)
1956
+ class: b(["transition-all duration-300", o.value ? F(i) ? "pt-14 lg:pt-0 lg:ml-16" : "pt-14 lg:pt-0 lg:ml-60" : ""])
1957
+ }, [j(t.$slots, "default")], 10, _r)
1943
1958
  ], 2));
1944
1959
  }
1945
- }), _r = { class: "flex items-center gap-3 min-w-0" }, vr = {
1960
+ }), yr = { class: "flex items-center gap-3 min-w-0" }, br = {
1946
1961
  key: 0,
1947
1962
  class: "absolute left-0 top-[0.14em] h-[1.1em] w-1 rounded-full bg-gradient-to-b from-emerald-400 to-emerald-600",
1948
1963
  "aria-hidden": "true"
1949
- }, yr = { class: "flex items-center gap-2" }, br = /* @__PURE__ */ m({
1964
+ }, xr = { class: "flex items-center gap-2" }, Sr = /* @__PURE__ */ m({
1950
1965
  __name: "BasePageHeader",
1951
1966
  props: {
1952
1967
  title: {},
@@ -1961,7 +1976,7 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
1961
1976
  }
1962
1977
  },
1963
1978
  setup(e) {
1964
- let t = e, { isDark: n } = W(), r = Z(), i = a(() => {
1979
+ let t = e, { isDark: n } = U(), r = X(), i = a(() => {
1965
1980
  let e = {
1966
1981
  emerald: {
1967
1982
  dark: "bg-emerald-500/10",
@@ -2002,19 +2017,19 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
2002
2017
  }[t.iconColor];
2003
2018
  return n.value ? e.dark : e.light;
2004
2019
  });
2005
- return (t, n) => (E(), c("header", { class: y(e.maxWidthClass ? ["mx-auto px-4 sm:px-6", e.maxWidthClass] : void 0) }, [l("div", { class: y(["flex flex-wrap justify-between gap-3", [e.align === "end" ? "items-end" : "items-center", e.marginClass]]) }, [l("div", _r, [t.$slots.icon ? (E(), c("div", {
2020
+ return (t, n) => (D(), c("header", { class: b(e.maxWidthClass ? ["mx-auto px-4 sm:px-6", e.maxWidthClass] : void 0) }, [l("div", { class: b(["flex flex-wrap justify-between gap-3", [e.align === "end" ? "items-end" : "items-center", e.marginClass]]) }, [l("div", yr, [t.$slots.icon ? (D(), c("div", {
2006
2021
  key: 0,
2007
- class: y(["w-10 h-10 rounded-lg flex items-center justify-center", i.value])
2008
- }, [j(t.$slots, "icon", { iconClass: o.value })], 2)) : s("", !0), l("div", null, [l("h1", { class: y(["text-2xl font-bold", [F(r).primaryTextSoft, e.accent ? "relative pl-3.5 tracking-tight" : ""]]) }, [e.accent ? (E(), c("span", vr)) : s("", !0), f(" " + P(e.title), 1)], 2), e.subtitle || t.$slots.subtitle ? (E(), c("p", {
2022
+ class: b(["w-10 h-10 rounded-lg flex items-center justify-center", i.value])
2023
+ }, [j(t.$slots, "icon", { iconClass: o.value })], 2)) : s("", !0), l("div", null, [l("h1", { class: b(["text-2xl font-bold", [F(r).primaryTextSoft, e.accent ? "relative pl-3.5 tracking-tight" : ""]]) }, [e.accent ? (D(), c("span", br)) : s("", !0), f(" " + P(e.title), 1)], 2), e.subtitle || t.$slots.subtitle ? (D(), c("p", {
2009
2024
  key: 0,
2010
- class: y(["max-w-[72ch] text-sm", F(r).dimTextAlt])
2011
- }, [j(t.$slots, "subtitle", {}, () => [f(P(e.subtitle), 1)])], 2)) : s("", !0)])]), l("div", yr, [j(t.$slots, "actions")])], 2)], 2));
2025
+ class: b(["max-w-[72ch] text-sm", F(r).dimTextAlt])
2026
+ }, [j(t.$slots, "subtitle", {}, () => [f(P(e.subtitle), 1)])], 2)) : s("", !0)])]), l("div", xr, [j(t.$slots, "actions")])], 2)], 2));
2012
2027
  }
2013
- }), xr = [
2028
+ }), Cr = [
2014
2029
  "type",
2015
2030
  "disabled",
2016
2031
  "title"
2017
- ], Sr = { key: 0 }, Cr = /* @__PURE__ */ m({
2032
+ ], wr = { key: 0 }, Tr = /* @__PURE__ */ m({
2018
2033
  __name: "BaseToolbarButton",
2019
2034
  props: {
2020
2035
  label: { default: "" },
@@ -2028,7 +2043,7 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
2028
2043
  },
2029
2044
  emits: ["click"],
2030
2045
  setup(e) {
2031
- let t = e, { isDark: n } = W(), r = {
2046
+ let t = e, { isDark: n } = U(), r = {
2032
2047
  neutral: "px-3 py-2 rounded-lg font-medium disabled:opacity-50",
2033
2048
  danger: "px-3 py-2 rounded-lg font-medium disabled:opacity-50",
2034
2049
  ghost: "h-9 px-4 rounded-md font-semibold disabled:opacity-40 disabled:hover:bg-slate-50 dark:disabled:hover:bg-slate-900"
@@ -2049,20 +2064,20 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
2049
2064
  }[t.variant];
2050
2065
  return [r[t.variant], n.value ? e.dark : e.light];
2051
2066
  });
2052
- return (t, n) => (E(), c("button", {
2067
+ return (t, n) => (D(), c("button", {
2053
2068
  type: e.type,
2054
2069
  disabled: e.disabled,
2055
2070
  title: e.title,
2056
- class: y(["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", i.value]),
2071
+ class: b(["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", i.value]),
2057
2072
  onClick: n[0] ||= (e) => t.$emit("click", e)
2058
- }, [j(t.$slots, "icon", { iconClass: "w-4 h-4" }), e.label ? (E(), c("span", Sr, P(e.label), 1)) : s("", !0)], 10, xr));
2073
+ }, [j(t.$slots, "icon", { iconClass: "w-4 h-4" }), e.label ? (D(), c("span", wr, P(e.label), 1)) : s("", !0)], 10, Cr));
2059
2074
  }
2060
- }), wr = [
2075
+ }), Er = [
2061
2076
  "type",
2062
2077
  "disabled",
2063
2078
  "title",
2064
2079
  "aria-label"
2065
- ], Tr = { key: 0 }, Er = /* @__PURE__ */ m({
2080
+ ], Dr = { key: 0 }, Or = /* @__PURE__ */ m({
2066
2081
  __name: "BaseActionButton",
2067
2082
  props: {
2068
2083
  label: { default: "" },
@@ -2081,7 +2096,7 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
2081
2096
  },
2082
2097
  emits: ["click"],
2083
2098
  setup(e) {
2084
- let t = e, { isDark: n } = W(), r = a(() => {
2099
+ let t = e, { isDark: n } = U(), r = a(() => {
2085
2100
  let e = {
2086
2101
  emerald: {
2087
2102
  dark: "text-emerald-400 hover:bg-emerald-500/10",
@@ -2154,16 +2169,16 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
2154
2169
  }[t.color];
2155
2170
  return n.value ? e.dark : e.light;
2156
2171
  }), o = a(() => t.disabled ? `${i.value} opacity-50 cursor-not-allowed` : `${r.value} cursor-pointer`);
2157
- return (t, n) => (E(), c("button", {
2172
+ return (t, n) => (D(), c("button", {
2158
2173
  type: e.type,
2159
2174
  disabled: e.disabled,
2160
2175
  title: e.title,
2161
2176
  "aria-label": e.ariaLabel,
2162
- class: y(["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" : "", o.value]]),
2177
+ class: b(["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" : "", o.value]]),
2163
2178
  onClick: n[0] ||= (e) => t.$emit("click", e)
2164
- }, [j(t.$slots, "icon", { iconClass: "w-4 h-4" }), e.label ? (E(), c("span", Tr, P(e.label), 1)) : s("", !0)], 10, wr));
2179
+ }, [j(t.$slots, "icon", { iconClass: "w-4 h-4" }), e.label ? (D(), c("span", Dr, P(e.label), 1)) : s("", !0)], 10, Er));
2165
2180
  }
2166
- }), Dr = ["title", "aria-label"], Or = /* @__PURE__ */ m({
2181
+ }), kr = ["title", "aria-label"], Ar = /* @__PURE__ */ m({
2167
2182
  __name: "BaseCopyButton",
2168
2183
  props: {
2169
2184
  text: {},
@@ -2174,7 +2189,7 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
2174
2189
  },
2175
2190
  emits: ["copied", "error"],
2176
2191
  setup(e, { emit: t }) {
2177
- let n = e, r = t, { isDark: i } = W(), s = k(!1), l = null, u = a(() => s.value ? "Copied!" : n.label ? `Copy ${n.label}` : "Copy"), d = a(() => n.label ? `Copy ${n.label}` : "Copy"), f = a(() => 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 ${s.value ? i.value ? "border-emerald-500/40 bg-emerald-500/10 text-emerald-400" : "border-emerald-300 bg-emerald-50 text-emerald-600" : i.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 ${i.value ? "text-gray-400 hover:text-emerald-300 hover:bg-emerald-500/10" : "text-gray-500 hover:text-emerald-600 hover:bg-emerald-50"}`);
2192
+ let n = e, r = t, { isDark: i } = U(), s = k(!1), l = null, u = a(() => s.value ? "Copied!" : n.label ? `Copy ${n.label}` : "Copy"), d = a(() => n.label ? `Copy ${n.label}` : "Copy"), f = a(() => 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 ${s.value ? i.value ? "border-emerald-500/40 bg-emerald-500/10 text-emerald-400" : "border-emerald-300 bg-emerald-50 text-emerald-600" : i.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 ${i.value ? "text-gray-400 hover:text-emerald-300 hover:bg-emerald-500/10" : "text-gray-500 hover:text-emerald-600 hover:bg-emerald-50"}`);
2178
2193
  async function p(e) {
2179
2194
  try {
2180
2195
  if (navigator.clipboard?.writeText) {
@@ -2196,36 +2211,36 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
2196
2211
  r("error", e);
2197
2212
  }
2198
2213
  }
2199
- return T(() => {
2214
+ return E(() => {
2200
2215
  l && clearTimeout(l);
2201
- }), (t, n) => (E(), c("button", {
2216
+ }), (t, n) => (D(), c("button", {
2202
2217
  type: "button",
2203
2218
  title: u.value,
2204
2219
  "aria-label": d.value,
2205
- class: y(f.value),
2220
+ class: b(f.value),
2206
2221
  onClick: m
2207
- }, [s.value ? (E(), o(F(ve), {
2222
+ }, [s.value ? (D(), o(F(ye), {
2208
2223
  key: 0,
2209
- class: y(e.iconClass),
2224
+ class: b(e.iconClass),
2210
2225
  "aria-hidden": "true"
2211
- }, null, 8, ["class"])) : (E(), o(F(ye), {
2226
+ }, null, 8, ["class"])) : (D(), o(F(be), {
2212
2227
  key: 1,
2213
- class: y(e.iconClass),
2228
+ class: b(e.iconClass),
2214
2229
  "aria-hidden": "true"
2215
- }, null, 8, ["class"]))], 10, Dr));
2230
+ }, null, 8, ["class"]))], 10, kr));
2216
2231
  }
2217
- }), kr = ["disabled", "aria-busy"], Ar = {
2232
+ }), jr = ["disabled", "aria-busy"], Mr = {
2218
2233
  key: 0,
2219
2234
  class: "w-5 h-5 animate-spin shrink-0",
2220
2235
  viewBox: "0 0 24 24",
2221
2236
  fill: "none",
2222
2237
  "aria-hidden": "true"
2223
- }, jr = {
2238
+ }, Nr = {
2224
2239
  key: 1,
2225
2240
  class: "w-5 h-5 shrink-0",
2226
2241
  viewBox: "0 0 48 48",
2227
2242
  "aria-hidden": "true"
2228
- }, Mr = /* @__PURE__ */ m({
2243
+ }, Pr = /* @__PURE__ */ m({
2229
2244
  __name: "BaseGoogleSignInButton",
2230
2245
  props: {
2231
2246
  label: { default: "Sign in with Google" },
@@ -2244,17 +2259,17 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
2244
2259
  },
2245
2260
  emits: ["click"],
2246
2261
  setup(e, { emit: t }) {
2247
- let n = e, r = t, { isDark: i } = W(), o = a(() => n.disabled || n.loading);
2262
+ let n = e, r = t, { isDark: i } = U(), o = a(() => n.disabled || n.loading);
2248
2263
  function s() {
2249
2264
  o.value || r("click");
2250
2265
  }
2251
- return (t, n) => (E(), c("button", {
2266
+ return (t, n) => (D(), c("button", {
2252
2267
  type: "button",
2253
2268
  disabled: o.value,
2254
2269
  "aria-busy": e.loading,
2255
2270
  onClick: s,
2256
- class: y(["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" : "", F(i) ? "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"]])
2257
- }, [e.loading ? (E(), c("svg", Ar, [...n[0] ||= [l("circle", {
2271
+ class: b(["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" : "", F(i) ? "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"]])
2272
+ }, [e.loading ? (D(), c("svg", Mr, [...n[0] ||= [l("circle", {
2258
2273
  class: "opacity-25",
2259
2274
  cx: "12",
2260
2275
  cy: "12",
@@ -2265,18 +2280,18 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
2265
2280
  class: "opacity-75",
2266
2281
  fill: "currentColor",
2267
2282
  d: "M4 12a8 8 0 0 1 8-8V0C5.4 0 0 5.4 0 12h4z"
2268
- }, null, -1)]])) : (E(), c("svg", jr, [...n[1] ||= [d("<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)]])), l("span", null, P(e.label), 1)], 10, kr));
2283
+ }, null, -1)]])) : (D(), c("svg", Nr, [...n[1] ||= [d("<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)]])), l("span", null, P(e.label), 1)], 10, jr));
2269
2284
  }
2270
- }), Nr = {
2285
+ }), Fr = {
2271
2286
  key: 0,
2272
2287
  class: "flex justify-center mb-6"
2273
- }, Pr = { class: "mb-6 text-center" }, Fr = { class: "flex items-center gap-3 my-5" }, Ir = ["disabled"], Lr = { class: "flex items-center justify-between mb-1.5" }, Rr = { class: "relative" }, zr = ["type", "disabled"], Br = ["aria-label", "aria-pressed"], Vr = ["disabled"], Hr = ["disabled", "aria-busy"], Ur = {
2288
+ }, Ir = { class: "mb-6 text-center" }, Lr = { class: "flex items-center gap-3 my-5" }, Rr = ["disabled"], zr = { class: "flex items-center justify-between mb-1.5" }, Br = { class: "relative" }, Vr = ["type", "disabled"], Hr = ["aria-label", "aria-pressed"], Ur = ["disabled"], Wr = ["disabled", "aria-busy"], Gr = {
2274
2289
  key: 0,
2275
2290
  class: "w-4 h-4 animate-spin",
2276
2291
  viewBox: "0 0 24 24",
2277
2292
  fill: "none",
2278
2293
  "aria-hidden": "true"
2279
- }, Wr = /* @__PURE__ */ m({
2294
+ }, Kr = /* @__PURE__ */ m({
2280
2295
  __name: "BaseLoginForm",
2281
2296
  props: {
2282
2297
  title: { default: "Sign in" },
@@ -2302,7 +2317,7 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
2302
2317
  },
2303
2318
  emits: ["submit", "google-sign-in"],
2304
2319
  setup(t, { emit: n }) {
2305
- let r = t, i = n, { isDark: o } = W(), u = Z(), d = k(""), m = k(""), h = k(!1), g = k(!1), _ = a(() => r.loading || r.googleLoading);
2320
+ let r = t, i = n, { isDark: o } = U(), u = X(), d = k(""), m = k(""), h = k(!1), g = k(!1), _ = a(() => r.loading || r.googleLoading);
2306
2321
  function v() {
2307
2322
  _.value || i("submit", {
2308
2323
  email: d.value,
@@ -2310,25 +2325,25 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
2310
2325
  ...r.showRemember ? { remember: h.value } : {}
2311
2326
  });
2312
2327
  }
2313
- return (n, r) => (E(), c("div", { class: y(["w-full max-w-sm mx-auto rounded-xl border shadow-sm p-6 sm:p-8", F(u).card]) }, [
2314
- n.$slots.logo ? (E(), c("div", Nr, [j(n.$slots, "logo")])) : s("", !0),
2315
- l("div", Pr, [l("h1", { class: y(["text-xl font-semibold", F(u).primaryText]) }, P(t.title), 3), t.subtitle ? (E(), c("p", {
2328
+ return (n, r) => (D(), c("div", { class: b(["w-full max-w-sm mx-auto rounded-xl border shadow-sm p-6 sm:p-8", F(u).card]) }, [
2329
+ n.$slots.logo ? (D(), c("div", Fr, [j(n.$slots, "logo")])) : s("", !0),
2330
+ l("div", Ir, [l("h1", { class: b(["text-xl font-semibold", F(u).primaryText]) }, P(t.title), 3), t.subtitle ? (D(), c("p", {
2316
2331
  key: 0,
2317
- class: y(["mt-1 text-sm", F(u).mutedText])
2332
+ class: b(["mt-1 text-sm", F(u).mutedText])
2318
2333
  }, P(t.subtitle), 3)) : s("", !0)]),
2319
- t.error ? (E(), c("div", {
2334
+ t.error ? (D(), c("div", {
2320
2335
  key: 1,
2321
2336
  role: "alert",
2322
- class: y(["mb-4 rounded-lg border px-3 py-2 text-sm", F(o) ? "bg-red-500/10 border-red-500/30 text-red-300" : "bg-red-50 border-red-200 text-red-700"])
2337
+ class: b(["mb-4 rounded-lg border px-3 py-2 text-sm", F(o) ? "bg-red-500/10 border-red-500/30 text-red-300" : "bg-red-50 border-red-200 text-red-700"])
2323
2338
  }, P(t.error), 3)) : s("", !0),
2324
- t.showGoogle ? (E(), c(e, { key: 2 }, [p(Mr, {
2339
+ t.showGoogle ? (D(), c(e, { key: 2 }, [p(Pr, {
2325
2340
  loading: t.googleLoading,
2326
2341
  disabled: t.loading,
2327
2342
  onClick: r[0] ||= (e) => i("google-sign-in")
2328
- }, null, 8, ["loading", "disabled"]), l("div", Fr, [
2329
- l("span", { class: y(["h-px flex-1", F(o) ? "bg-gray-700" : "bg-gray-200"]) }, null, 2),
2330
- l("span", { class: y(["text-xs uppercase tracking-wider", F(u).dimTextAlt]) }, "or", 2),
2331
- l("span", { class: y(["h-px flex-1", F(o) ? "bg-gray-700" : "bg-gray-200"]) }, null, 2)
2343
+ }, null, 8, ["loading", "disabled"]), l("div", Lr, [
2344
+ l("span", { class: b(["h-px flex-1", F(o) ? "bg-gray-700" : "bg-gray-200"]) }, null, 2),
2345
+ l("span", { class: b(["text-xs uppercase tracking-wider", F(u).dimTextAlt]) }, "or", 2),
2346
+ l("span", { class: b(["h-px flex-1", F(o) ? "bg-gray-700" : "bg-gray-200"]) }, null, 2)
2332
2347
  ])], 64)) : s("", !0),
2333
2348
  l("form", {
2334
2349
  class: "space-y-4",
@@ -2336,7 +2351,7 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
2336
2351
  }, [
2337
2352
  l("div", null, [l("label", {
2338
2353
  for: "login-email",
2339
- class: y(["block mb-1.5 text-sm font-medium", F(u).label])
2354
+ class: b(["block mb-1.5 text-sm font-medium", F(u).label])
2340
2355
  }, " Email ", 2), R(l("input", {
2341
2356
  id: "login-email",
2342
2357
  "onUpdate:modelValue": r[1] ||= (e) => d.value = e,
@@ -2346,12 +2361,12 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
2346
2361
  required: "",
2347
2362
  disabled: _.value,
2348
2363
  placeholder: "you@example.com",
2349
- class: y(["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", F(u).inputWithPlaceholder])
2350
- }, null, 10, Ir), [[ie, d.value]])]),
2351
- l("div", null, [l("div", Lr, [l("label", {
2364
+ class: b(["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", F(u).inputWithPlaceholder])
2365
+ }, null, 10, Rr), [[ae, d.value]])]),
2366
+ l("div", null, [l("div", zr, [l("label", {
2352
2367
  for: "login-password",
2353
- class: y(["block text-sm font-medium", F(u).label])
2354
- }, " Password ", 2), j(n.$slots, "forgot")]), l("div", Rr, [R(l("input", {
2368
+ class: b(["block text-sm font-medium", F(u).label])
2369
+ }, " Password ", 2), j(n.$slots, "forgot")]), l("div", Br, [R(l("input", {
2355
2370
  id: "login-password",
2356
2371
  "onUpdate:modelValue": r[2] ||= (e) => m.value = e,
2357
2372
  type: g.value ? "text" : "password",
@@ -2360,29 +2375,29 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
2360
2375
  required: "",
2361
2376
  disabled: _.value,
2362
2377
  placeholder: "••••••••",
2363
- class: y(["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", F(u).inputWithPlaceholder])
2364
- }, null, 10, zr), [[re, m.value]]), l("button", {
2378
+ class: b(["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", F(u).inputWithPlaceholder])
2379
+ }, null, 10, Vr), [[ie, m.value]]), l("button", {
2365
2380
  type: "button",
2366
2381
  onClick: r[3] ||= (e) => g.value = !g.value,
2367
2382
  "aria-label": g.value ? "Hide password" : "Show password",
2368
2383
  "aria-pressed": g.value,
2369
- class: y(["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", F(u).mutedText])
2370
- }, P(g.value ? "Hide" : "Show"), 11, Br)])]),
2371
- t.showRemember ? (E(), c("label", {
2384
+ class: b(["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", F(u).mutedText])
2385
+ }, P(g.value ? "Hide" : "Show"), 11, Hr)])]),
2386
+ t.showRemember ? (D(), c("label", {
2372
2387
  key: 0,
2373
- class: y(["flex items-center gap-2 text-sm cursor-pointer select-none", F(u).bodyText])
2388
+ class: b(["flex items-center gap-2 text-sm cursor-pointer select-none", F(u).bodyText])
2374
2389
  }, [R(l("input", {
2375
2390
  "onUpdate:modelValue": r[4] ||= (e) => h.value = e,
2376
2391
  type: "checkbox",
2377
2392
  disabled: _.value,
2378
2393
  class: "w-4 h-4 rounded border-gray-300 text-emerald-600 focus:ring-emerald-500"
2379
- }, null, 8, Vr), [[ne, h.value]]), r[5] ||= f(" Remember me ", -1)], 2)) : s("", !0),
2394
+ }, null, 8, Ur), [[re, h.value]]), r[5] ||= f(" Remember me ", -1)], 2)) : s("", !0),
2380
2395
  l("button", {
2381
2396
  type: "submit",
2382
2397
  disabled: _.value,
2383
2398
  "aria-busy": t.loading,
2384
2399
  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"
2385
- }, [t.loading ? (E(), c("svg", Ur, [...r[6] ||= [l("circle", {
2400
+ }, [t.loading ? (D(), c("svg", Gr, [...r[6] ||= [l("circle", {
2386
2401
  class: "opacity-25",
2387
2402
  cx: "12",
2388
2403
  cy: "12",
@@ -2393,18 +2408,18 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
2393
2408
  class: "opacity-75",
2394
2409
  fill: "currentColor",
2395
2410
  d: "M4 12a8 8 0 0 1 8-8V0C5.4 0 0 5.4 0 12h4z"
2396
- }, null, -1)]])) : s("", !0), f(" " + P(t.submitLabel), 1)], 8, Hr)
2411
+ }, null, -1)]])) : s("", !0), f(" " + P(t.submitLabel), 1)], 8, Wr)
2397
2412
  ], 32),
2398
- n.$slots.footer ? (E(), c("div", {
2413
+ n.$slots.footer ? (D(), c("div", {
2399
2414
  key: 3,
2400
- class: y(["mt-6 text-center text-sm", F(u).mutedText])
2415
+ class: b(["mt-6 text-center text-sm", F(u).mutedText])
2401
2416
  }, [j(n.$slots, "footer")], 2)) : s("", !0)
2402
2417
  ], 2));
2403
2418
  }
2404
- }), Gr = ["aria-label"], Kr = { class: "flex-1 overflow-y-auto" }, qr = {
2419
+ }), qr = ["aria-label"], Jr = { class: "flex-1 overflow-y-auto" }, Yr = {
2405
2420
  key: 0,
2406
2421
  class: "flex flex-col items-center justify-center text-center px-6 py-16 gap-3"
2407
- }, Jr = ["onClick"], Yr = { class: "min-w-0 flex-1" }, Xr = { class: "flex items-baseline justify-between gap-2" }, Zr = /* @__PURE__ */ m({
2422
+ }, Xr = ["onClick"], Zr = { class: "min-w-0 flex-1" }, Qr = { class: "flex items-baseline justify-between gap-2" }, $r = /* @__PURE__ */ m({
2408
2423
  __name: "BaseNotificationPanel",
2409
2424
  props: {
2410
2425
  title: { default: "Notifications" },
@@ -2416,7 +2431,7 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
2416
2431
  },
2417
2432
  emits: ["select"],
2418
2433
  setup(n, { emit: i }) {
2419
- let u = i, { isDark: d } = W(), m = Z(), { notifications: h, unreadCount: g, open: _, closePanel: v, markAllRead: b, markRead: x } = Un(), S = {
2434
+ let u = i, { isDark: d } = U(), m = X(), { notifications: h, unreadCount: g, open: _, closePanel: v, markAllRead: y, markRead: x } = Gn(), S = {
2420
2435
  info: "bg-sky-500",
2421
2436
  success: "bg-emerald-500",
2422
2437
  warning: "bg-amber-500",
@@ -2425,15 +2440,15 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
2425
2440
  function w(e) {
2426
2441
  x(e), u("select", e);
2427
2442
  }
2428
- return dn(() => {
2443
+ return pn(() => {
2429
2444
  _.value && v();
2430
- }), (i, a) => (E(), o(t, { to: "body" }, [p(r, {
2445
+ }), (i, a) => (D(), o(t, { to: "body" }, [p(r, {
2431
2446
  "enter-active-class": "transition-opacity duration-200",
2432
2447
  "enter-from-class": "opacity-0",
2433
2448
  "leave-active-class": "transition-opacity duration-200",
2434
2449
  "leave-to-class": "opacity-0"
2435
2450
  }, {
2436
- default: L(() => [F(_) ? (E(), c("div", {
2451
+ default: L(() => [F(_) ? (D(), c("div", {
2437
2452
  key: 0,
2438
2453
  class: "fixed inset-0 z-[60] bg-black/50",
2439
2454
  "aria-hidden": "true",
@@ -2446,55 +2461,55 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
2446
2461
  "leave-active-class": "transition-transform duration-300 ease-in",
2447
2462
  "leave-to-class": "-translate-x-full"
2448
2463
  }, {
2449
- default: L(() => [F(_) ? (E(), c("aside", {
2464
+ default: L(() => [F(_) ? (D(), c("aside", {
2450
2465
  key: 0,
2451
2466
  role: "dialog",
2452
2467
  "aria-modal": "true",
2453
2468
  "aria-label": n.title,
2454
- class: y(["fixed top-0 left-0 z-[70] h-screen w-full max-w-sm flex flex-col border-r shadow-xl", F(d) ? "bg-gray-900 border-gray-800" : "bg-white border-gray-200"])
2469
+ class: b(["fixed top-0 left-0 z-[70] h-screen w-full max-w-sm flex flex-col border-r shadow-xl", F(d) ? "bg-gray-900 border-gray-800" : "bg-white border-gray-200"])
2455
2470
  }, [
2456
- l("div", { class: y(["flex items-center justify-between gap-3 px-5 py-4 border-b shrink-0", F(m).border]) }, [l("h2", { class: y(["text-lg font-semibold flex items-center gap-2", F(m).primaryText]) }, [f(P(n.title) + " ", 1), l("span", { class: y(["text-sm font-normal", F(m).dimTextAlt]) }, "— " + P(C.value), 3)], 2), l("button", {
2471
+ l("div", { class: b(["flex items-center justify-between gap-3 px-5 py-4 border-b shrink-0", F(m).border]) }, [l("h2", { class: b(["text-lg font-semibold flex items-center gap-2", F(m).primaryText]) }, [f(P(n.title) + " ", 1), l("span", { class: b(["text-sm font-normal", F(m).dimTextAlt]) }, "— " + P(C.value), 3)], 2), l("button", {
2457
2472
  type: "button",
2458
2473
  onClick: a[1] ||= (...e) => F(v) && F(v)(...e),
2459
2474
  "aria-label": "Close notifications",
2460
- class: y(["p-1.5 rounded-lg cursor-pointer transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", F(d) ? "text-gray-400 hover:bg-gray-800" : "text-gray-500 hover:bg-gray-100"])
2461
- }, [p(F(B), {
2475
+ class: b(["p-1.5 rounded-lg cursor-pointer transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", F(d) ? "text-gray-400 hover:bg-gray-800" : "text-gray-500 hover:bg-gray-100"])
2476
+ }, [p(F(Ae), {
2462
2477
  class: "w-5 h-5",
2463
2478
  "aria-hidden": "true"
2464
2479
  })], 2)], 2),
2465
- n.showMarkAllRead && F(g) > 0 ? (E(), c("div", {
2480
+ n.showMarkAllRead && F(g) > 0 ? (D(), c("div", {
2466
2481
  key: 0,
2467
- class: y(["px-5 py-2 border-b shrink-0 flex justify-end", F(m).border])
2482
+ class: b(["px-5 py-2 border-b shrink-0 flex justify-end", F(m).border])
2468
2483
  }, [l("button", {
2469
2484
  type: "button",
2470
- onClick: a[2] ||= (...e) => F(b) && F(b)(...e),
2471
- class: y(["text-xs font-medium cursor-pointer transition-colors focus:outline-none focus-visible:underline", F(m).emeraldText])
2485
+ onClick: a[2] ||= (...e) => F(y) && F(y)(...e),
2486
+ class: b(["text-xs font-medium cursor-pointer transition-colors focus:outline-none focus-visible:underline", F(m).emeraldText])
2472
2487
  }, " Mark all as read ", 2)], 2)) : s("", !0),
2473
- l("div", Kr, [C.value === 0 ? (E(), c("div", qr, [p(F(de), {
2474
- class: y(["w-10 h-10", F(m).illustration]),
2488
+ l("div", Jr, [C.value === 0 ? (D(), c("div", Yr, [p(F(fe), {
2489
+ class: b(["w-10 h-10", F(m).illustration]),
2475
2490
  "aria-hidden": "true"
2476
- }, null, 8, ["class"]), l("p", { class: y(["text-sm", F(m).mutedText]) }, P(n.emptyText), 3)])) : (E(), c("ul", {
2491
+ }, null, 8, ["class"]), l("p", { class: b(["text-sm", F(m).mutedText]) }, P(n.emptyText), 3)])) : (D(), c("ul", {
2477
2492
  key: 1,
2478
- class: y(["divide-y", F(d) ? "divide-gray-800" : "divide-gray-100"])
2479
- }, [(E(!0), c(e, null, A(F(h), (e) => (E(), c("li", { key: e.id }, [l("button", {
2493
+ class: b(["divide-y", F(d) ? "divide-gray-800" : "divide-gray-100"])
2494
+ }, [(D(!0), c(e, null, A(F(h), (e) => (D(), c("li", { key: e.id }, [l("button", {
2480
2495
  type: "button",
2481
2496
  onClick: (t) => w(e.id),
2482
- class: y(["w-full text-left px-5 py-4 flex gap-3 transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-emerald-500", [e.read ? "" : F(d) ? "bg-emerald-500/5" : "bg-emerald-50/60", F(d) ? "hover:bg-gray-800" : "hover:bg-gray-50"]])
2497
+ class: b(["w-full text-left px-5 py-4 flex gap-3 transition-colors cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-emerald-500", [e.read ? "" : F(d) ? "bg-emerald-500/5" : "bg-emerald-50/60", F(d) ? "hover:bg-gray-800" : "hover:bg-gray-50"]])
2483
2498
  }, [l("span", {
2484
- class: y(["mt-1.5 w-2 h-2 rounded-full shrink-0", e.read ? F(d) ? "bg-gray-700" : "bg-gray-300" : S[e.type ?? "info"]]),
2499
+ class: b(["mt-1.5 w-2 h-2 rounded-full shrink-0", e.read ? F(d) ? "bg-gray-700" : "bg-gray-300" : S[e.type ?? "info"]]),
2485
2500
  "aria-hidden": "true"
2486
- }, null, 2), l("span", Yr, [l("span", Xr, [l("span", { class: y(["text-sm truncate", [e.read ? "font-medium" : "font-semibold", F(m).primaryTextSoft]]) }, P(e.title), 3), e.time ? (E(), c("span", {
2501
+ }, null, 2), l("span", Zr, [l("span", Qr, [l("span", { class: b(["text-sm truncate", [e.read ? "font-medium" : "font-semibold", F(m).primaryTextSoft]]) }, P(e.title), 3), e.time ? (D(), c("span", {
2487
2502
  key: 0,
2488
- class: y(["text-xs shrink-0", F(m).dimText])
2489
- }, P(e.time), 3)) : s("", !0)]), e.message ? (E(), c("span", {
2503
+ class: b(["text-xs shrink-0", F(m).dimText])
2504
+ }, P(e.time), 3)) : s("", !0)]), e.message ? (D(), c("span", {
2490
2505
  key: 0,
2491
- class: y(["mt-0.5 block text-sm", F(m).mutedText])
2492
- }, P(e.message), 3)) : s("", !0)])], 10, Jr)]))), 128))], 2))])
2493
- ], 10, Gr)) : s("", !0)]),
2506
+ class: b(["mt-0.5 block text-sm", F(m).mutedText])
2507
+ }, P(e.message), 3)) : s("", !0)])], 10, Xr)]))), 128))], 2))])
2508
+ ], 10, qr)) : s("", !0)]),
2494
2509
  _: 1
2495
2510
  })]));
2496
2511
  }
2497
- }), Qr = ["disabled"], $r = /* @__PURE__ */ m({
2512
+ }), ei = ["disabled"], ti = /* @__PURE__ */ m({
2498
2513
  __name: "BaseChipButton",
2499
2514
  props: {
2500
2515
  size: { default: "sm" },
@@ -2505,37 +2520,37 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
2505
2520
  },
2506
2521
  emits: ["click"],
2507
2522
  setup(e, { emit: t }) {
2508
- let n = t, { isDark: r } = W();
2509
- return (t, i) => (E(), c("button", {
2523
+ let n = t, { isDark: r } = U();
2524
+ return (t, i) => (D(), c("button", {
2510
2525
  type: "button",
2511
2526
  disabled: e.disabled,
2512
- class: y(["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", F(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"]]),
2527
+ class: b(["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", F(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"]]),
2513
2528
  onClick: i[0] ||= (e) => n("click")
2514
- }, [j(t.$slots, "default")], 10, Qr));
2529
+ }, [j(t.$slots, "default")], 10, ei));
2515
2530
  }
2516
- }), ei = /* @__PURE__ */ m({
2531
+ }), ni = /* @__PURE__ */ m({
2517
2532
  __name: "BaseRemoveButton",
2518
2533
  emits: ["click"],
2519
2534
  setup(e, { emit: t }) {
2520
2535
  let n = t;
2521
- return (e, t) => (E(), c("button", {
2536
+ return (e, t) => (D(), c("button", {
2522
2537
  type: "button",
2523
2538
  class: "px-2 text-lg leading-none text-red-400 hover:text-red-600 transition-colors cursor-pointer rounded focus:outline-none focus-visible:ring-2 focus-visible:ring-red-400 disabled:cursor-not-allowed disabled:text-gray-400 disabled:hover:text-gray-400",
2524
2539
  onClick: t[0] ||= (e) => n("click")
2525
2540
  }, " × "));
2526
2541
  }
2527
- }), ti = { class: "relative flex h-2 w-2" }, ni = {
2542
+ }), ri = { class: "relative flex h-2 w-2" }, ii = {
2528
2543
  key: 0,
2529
2544
  class: "animate-ping absolute inline-flex h-full w-full rounded-full bg-emerald-400 opacity-75",
2530
2545
  "aria-hidden": "true"
2531
- }, ri = /* @__PURE__ */ m({
2546
+ }, ai = /* @__PURE__ */ m({
2532
2547
  __name: "BaseStatusPill",
2533
2548
  props: {
2534
2549
  status: {},
2535
2550
  label: {}
2536
2551
  },
2537
2552
  setup(e) {
2538
- let t = e, { isDark: n } = W(), r = a(() => {
2553
+ let t = e, { isDark: n } = U(), r = a(() => {
2539
2554
  switch (t.status) {
2540
2555
  case "ok": return n.value ? "bg-emerald-500/10 text-emerald-400" : "bg-emerald-50 text-emerald-700";
2541
2556
  case "error": return n.value ? "bg-red-500/10 text-red-400" : "bg-red-50 text-red-700";
@@ -2548,13 +2563,13 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
2548
2563
  default: return "bg-gray-400";
2549
2564
  }
2550
2565
  });
2551
- return (t, n) => (E(), c("div", { class: y(["flex items-center gap-2 px-3 py-1.5 rounded-lg text-xs", r.value]) }, [l("span", ti, [e.status === "ok" ? (E(), c("span", ni)) : s("", !0), l("span", { class: y(["relative inline-flex rounded-full h-2 w-2", i.value]) }, null, 2)]), f(" " + P(e.label), 1)], 2));
2566
+ return (t, n) => (D(), c("div", { class: b(["flex items-center gap-2 px-3 py-1.5 rounded-lg text-xs", r.value]) }, [l("span", ri, [e.status === "ok" ? (D(), c("span", ii)) : s("", !0), l("span", { class: b(["relative inline-flex rounded-full h-2 w-2", i.value]) }, null, 2)]), f(" " + P(e.label), 1)], 2));
2552
2567
  }
2553
- }), ii = { class: "text-sm font-medium" }, ai = [
2568
+ }), oi = { class: "text-sm font-medium" }, si = [
2554
2569
  "accept",
2555
2570
  "multiple",
2556
2571
  "disabled"
2557
- ], oi = /* @__PURE__ */ m({
2572
+ ], ci = /* @__PURE__ */ m({
2558
2573
  __name: "BaseFileDropzone",
2559
2574
  props: {
2560
2575
  label: {},
@@ -2571,7 +2586,7 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
2571
2586
  },
2572
2587
  emits: ["files"],
2573
2588
  setup(e, { emit: t }) {
2574
- let n = e, r = t, { isDark: i } = W(), a = k(!1);
2589
+ let n = e, r = t, { isDark: i } = U(), a = k(!1);
2575
2590
  function o(e) {
2576
2591
  let t = e.target, n = Array.from(t.files ?? []);
2577
2592
  t.value = "", n.length && r("files", n);
@@ -2584,8 +2599,8 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
2584
2599
  let t = Array.from(e.dataTransfer?.files ?? []);
2585
2600
  t.length && r("files", n.multiple ? t : t.slice(0, 1));
2586
2601
  }
2587
- return (t, n) => (E(), c("label", {
2588
- class: y(["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 ? F(i) ? "border-emerald-500 text-emerald-400" : "border-emerald-500 text-emerald-600" : F(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"]]),
2602
+ return (t, n) => (D(), c("label", {
2603
+ class: b(["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 ? F(i) ? "border-emerald-500 text-emerald-400" : "border-emerald-500 text-emerald-600" : F(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"]]),
2589
2604
  onDragover: z(u, ["prevent"]),
2590
2605
  onDragleave: n[0] ||= z((e) => a.value = !1, ["prevent"]),
2591
2606
  onDrop: z(d, ["prevent"])
@@ -2602,10 +2617,10 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
2602
2617
  "stroke-linejoin": "round",
2603
2618
  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"
2604
2619
  })], -1)]),
2605
- l("p", ii, P(e.label), 1),
2606
- e.hint ? (E(), c("p", {
2620
+ l("p", oi, P(e.label), 1),
2621
+ e.hint ? (D(), c("p", {
2607
2622
  key: 0,
2608
- class: y(["text-xs", F(i) ? "text-gray-500" : "text-gray-400"])
2623
+ class: b(["text-xs", F(i) ? "text-gray-500" : "text-gray-400"])
2609
2624
  }, P(e.hint), 3)) : s("", !0),
2610
2625
  l("input", {
2611
2626
  type: "file",
@@ -2614,10 +2629,10 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
2614
2629
  multiple: e.multiple,
2615
2630
  disabled: e.disabled,
2616
2631
  onChange: o
2617
- }, null, 40, ai)
2632
+ }, null, 40, si)
2618
2633
  ], 34));
2619
2634
  }
2620
- }), si = /* @__PURE__ */ m({
2635
+ }), li = /* @__PURE__ */ m({
2621
2636
  __name: "BaseCodeBlock",
2622
2637
  props: {
2623
2638
  code: {},
@@ -2626,7 +2641,7 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
2626
2641
  maxHeightClass: { default: "" }
2627
2642
  },
2628
2643
  setup(e) {
2629
- let t = e, { isDark: n } = W(), r = {
2644
+ let t = e, { isDark: n } = U(), r = {
2630
2645
  soft: {
2631
2646
  dark: "bg-gray-800/70 text-gray-300",
2632
2647
  light: "bg-gray-100 text-gray-700"
@@ -2642,13 +2657,13 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
2642
2657
  let e = r[t.variant];
2643
2658
  return n.value ? e.dark : e.light;
2644
2659
  }), s = a(() => i[t.size]);
2645
- return (t, n) => (E(), c("pre", { class: y(["font-mono overflow-auto", [
2660
+ return (t, n) => (D(), c("pre", { class: b(["font-mono overflow-auto", [
2646
2661
  s.value,
2647
2662
  o.value,
2648
2663
  e.maxHeightClass
2649
2664
  ]]) }, P(e.code), 3));
2650
2665
  }
2651
- }), ci = ["value", "type"], li = /* @__PURE__ */ m({
2666
+ }), ui = ["value", "type"], di = /* @__PURE__ */ m({
2652
2667
  __name: "BaseInput",
2653
2668
  props: {
2654
2669
  modelValue: { default: "" },
@@ -2665,14 +2680,14 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
2665
2680
  function r(e) {
2666
2681
  n("update:modelValue", e.target.value);
2667
2682
  }
2668
- return (t, n) => (E(), c("input", {
2683
+ return (t, n) => (D(), c("input", {
2669
2684
  value: e.modelValue,
2670
2685
  type: e.type,
2671
- class: y(["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"]]),
2686
+ class: b(["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"]]),
2672
2687
  onInput: r
2673
- }, null, 42, ci));
2688
+ }, null, 42, ui));
2674
2689
  }
2675
- }), ui = ["value"], di = /* @__PURE__ */ m({
2690
+ }), fi = ["value"], pi = /* @__PURE__ */ m({
2676
2691
  inheritAttrs: !1,
2677
2692
  __name: "BaseSelect",
2678
2693
  props: {
@@ -2689,27 +2704,27 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
2689
2704
  },
2690
2705
  emits: ["update:modelValue"],
2691
2706
  setup(e, { emit: t }) {
2692
- let n = e, r = te(), i = () => {
2707
+ let n = e, r = ne(), i = () => {
2693
2708
  let e = r.default?.() ?? [];
2694
- return n.humanize ? Ve(e, ["option", "optgroup"]) : e;
2709
+ return n.humanize ? Ue(e, ["option", "optgroup"]) : e;
2695
2710
  }, a = t;
2696
2711
  function o(e) {
2697
2712
  a("update:modelValue", e.target.value);
2698
2713
  }
2699
- return (t, n) => (E(), c("div", { class: y(["relative", e.block ? "w-full" : "inline-block"]) }, [l("select", _(t.$attrs, {
2714
+ return (t, n) => (D(), c("div", { class: b(["relative", e.block ? "w-full" : "inline-block"]) }, [l("select", v(t.$attrs, {
2700
2715
  value: e.modelValue,
2701
2716
  class: ["base-select 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"],
2702
2717
  onChange: o
2703
- }), [p(i)], 16, ui), p(F(ge), {
2704
- class: y(["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"]),
2718
+ }), [p(i)], 16, fi), p(F(_e), {
2719
+ class: b(["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"]),
2705
2720
  "aria-hidden": "true"
2706
2721
  }, null, 8, ["class"])], 2));
2707
2722
  }
2708
- }), fi = [
2723
+ }), mi = [
2709
2724
  "disabled",
2710
2725
  "aria-label",
2711
2726
  "aria-expanded"
2712
- ], pi = ["aria-label"], mi = ["aria-selected", "title"], hi = ["disabled", "onClick"], gi = /* @__PURE__ */ m({
2727
+ ], hi = ["aria-label"], gi = ["aria-selected", "title"], _i = ["disabled", "onClick"], vi = /* @__PURE__ */ m({
2713
2728
  __name: "BaseDropdown",
2714
2729
  props: {
2715
2730
  options: {},
@@ -2750,33 +2765,33 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
2750
2765
  function _(e) {
2751
2766
  e.disabled || (i("update:modelValue", e.value), o.value = !1);
2752
2767
  }
2753
- dn(() => {
2768
+ pn(() => {
2754
2769
  o.value = !1;
2755
2770
  });
2756
2771
  function v(e) {
2757
2772
  o.value && u.value && !u.value.contains(e.target) && (o.value = !1);
2758
2773
  }
2759
- return C(() => document.addEventListener("click", v)), S(() => document.removeEventListener("click", v)), (n, r) => (E(), c("div", {
2774
+ return w(() => document.addEventListener("click", v)), C(() => document.removeEventListener("click", v)), (n, r) => (D(), c("div", {
2760
2775
  ref_key: "rootEl",
2761
2776
  ref: u,
2762
- class: y(t.block ? "relative w-full" : "relative inline-block")
2777
+ class: b(t.block ? "relative w-full" : "relative inline-block")
2763
2778
  }, [l("button", {
2764
2779
  type: "button",
2765
- class: y([f.value, t.block ? "w-full" : ""]),
2780
+ class: b([f.value, t.block ? "w-full" : ""]),
2766
2781
  disabled: t.disabled,
2767
2782
  "aria-label": t.ariaLabel || void 0,
2768
2783
  "aria-haspopup": "listbox",
2769
2784
  "aria-expanded": o.value,
2770
2785
  onClick: g
2771
- }, [l("span", { class: y(["min-w-0 truncate", d.value ? "" : "text-slate-400 dark:text-slate-500"]) }, P(d.value ? d.value.label : t.placeholder), 3), p(F(ge), {
2772
- class: y(["shrink-0 transition-transform", [t.chevronClass, o.value ? "rotate-180" : ""]]),
2786
+ }, [l("span", { class: b(["min-w-0 truncate", d.value ? "" : "text-slate-400 dark:text-slate-500"]) }, P(d.value ? d.value.label : t.placeholder), 3), p(F(_e), {
2787
+ class: b(["shrink-0 transition-transform", [t.chevronClass, o.value ? "rotate-180" : ""]]),
2773
2788
  "aria-hidden": "true"
2774
- }, null, 8, ["class"])], 10, fi), o.value ? (E(), c("ul", {
2789
+ }, null, 8, ["class"])], 10, mi), o.value ? (D(), c("ul", {
2775
2790
  key: 0,
2776
2791
  role: "listbox",
2777
2792
  "aria-label": t.ariaLabel || t.placeholder,
2778
2793
  class: "absolute z-20 mt-1 w-full min-w-max max-w-xs max-h-60 overflow-auto rounded-lg border border-slate-300 dark:border-slate-600 bg-white dark:bg-slate-900 py-1 shadow-lg focus:outline-none"
2779
- }, [(E(!0), c(e, null, A(t.options, (e) => (E(), c("li", {
2794
+ }, [(D(!0), c(e, null, A(t.options, (e) => (D(), c("li", {
2780
2795
  key: String(e.value),
2781
2796
  role: "option",
2782
2797
  "aria-selected": e.value === t.modelValue,
@@ -2784,15 +2799,15 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
2784
2799
  }, [l("button", {
2785
2800
  type: "button",
2786
2801
  disabled: e.disabled,
2787
- class: y(h(e)),
2802
+ class: b(h(e)),
2788
2803
  onClick: (t) => _(e)
2789
- }, P(e.label), 11, hi)], 8, mi))), 128))], 8, pi)) : s("", !0)], 2));
2804
+ }, P(e.label), 11, _i)], 8, gi))), 128))], 8, hi)) : s("", !0)], 2));
2790
2805
  }
2791
- }), _i = ["role", "aria-label"], vi = [
2806
+ }), yi = ["role", "aria-label"], bi = [
2792
2807
  "aria-pressed",
2793
2808
  "title",
2794
2809
  "onClick"
2795
- ], yi = "bg-slate-50 dark:bg-slate-900 text-slate-600 dark:text-slate-300 hover:bg-slate-100 dark:hover:bg-slate-800", bi = /* @__PURE__ */ m({
2810
+ ], xi = "bg-slate-50 dark:bg-slate-900 text-slate-600 dark:text-slate-300 hover:bg-slate-100 dark:hover:bg-slate-800", Si = /* @__PURE__ */ m({
2796
2811
  __name: "BaseSegmentedControl",
2797
2812
  props: {
2798
2813
  options: {},
@@ -2809,22 +2824,22 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
2809
2824
  let r = t, i = n, o = a(() => 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"), s = a(() => 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 = a(() => r.variant === "wide" ? "bg-emerald-600 text-white" : "bg-emerald-500 text-white");
2810
2825
  function u(e) {
2811
2826
  let t = e.value === r.modelValue;
2812
- return r.optionClass ? r.optionClass(e, t) : t ? l.value : yi;
2827
+ return r.optionClass ? r.optionClass(e, t) : t ? l.value : xi;
2813
2828
  }
2814
- return (n, r) => (E(), c("div", {
2829
+ return (n, r) => (D(), c("div", {
2815
2830
  role: t.ariaLabel ? "group" : void 0,
2816
2831
  "aria-label": t.ariaLabel || void 0,
2817
- class: y(o.value)
2818
- }, [(E(!0), c(e, null, A(t.options, (e) => (E(), c("button", {
2832
+ class: b(o.value)
2833
+ }, [(D(!0), c(e, null, A(t.options, (e) => (D(), c("button", {
2819
2834
  key: String(e.value),
2820
2835
  type: "button",
2821
- class: y([s.value, u(e)]),
2836
+ class: b([s.value, u(e)]),
2822
2837
  "aria-pressed": e.value === t.modelValue,
2823
2838
  title: e.title,
2824
2839
  onClick: (t) => i("update:modelValue", e.value)
2825
- }, P(e.label), 11, vi))), 128))], 10, _i));
2840
+ }, P(e.label), 11, bi))), 128))], 10, yi));
2826
2841
  }
2827
- }), xi = { class: "w-full text-sm" }, Si = { class: "bg-slate-50 dark:bg-slate-800/60 text-slate-600 dark:text-slate-300" }, Ci = { class: "text-left border-b border-slate-200 dark:border-slate-700" }, wi = { 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" }, Ti = { key: 0 }, Ei = ["colspan"], Di = "overflow-x-auto rounded-xl border border-slate-200 bg-white shadow-sm dark:border-slate-700 dark:bg-slate-900", Oi = /* @__PURE__ */ m({
2842
+ }), Ci = { class: "w-full text-sm" }, wi = { class: "bg-slate-50 dark:bg-slate-800/60 text-slate-600 dark:text-slate-300" }, Ti = { class: "text-left border-b border-slate-200 dark:border-slate-700" }, Ei = { 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" }, Di = { key: 0 }, Oi = ["colspan"], ki = "overflow-x-auto rounded-xl border border-slate-200 bg-white shadow-sm dark:border-slate-700 dark:bg-slate-900", Ai = /* @__PURE__ */ m({
2828
2843
  __name: "BaseTable",
2829
2844
  props: {
2830
2845
  columns: {},
@@ -2839,24 +2854,24 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
2839
2854
  }
2840
2855
  },
2841
2856
  setup(t) {
2842
- return (n, r) => (E(), c("div", { class: y(t.card ? Di : void 0) }, [l("table", xi, [l("thead", Si, [l("tr", Ci, [(E(!0), c(e, null, A(t.columns, (e, t) => (E(), c("th", {
2857
+ return (n, r) => (D(), c("div", { class: b(t.card ? ki : void 0) }, [l("table", Ci, [l("thead", wi, [l("tr", Ti, [(D(!0), c(e, null, A(t.columns, (e, t) => (D(), c("th", {
2843
2858
  key: t,
2844
- class: y(["px-4 py-3", e.align === "right" ? "text-right" : ""])
2845
- }, P(e.label), 3))), 128))])]), l("tbody", wi, [t.empty ? (E(), c("tr", Ti, [l("td", {
2859
+ class: b(["px-4 py-3", e.align === "right" ? "text-right" : ""])
2860
+ }, P(e.label), 3))), 128))])]), l("tbody", Ei, [t.empty ? (D(), c("tr", Di, [l("td", {
2846
2861
  colspan: t.columns.length,
2847
2862
  class: "px-4 py-12 text-center text-slate-500"
2848
- }, [j(n.$slots, "empty", {}, () => [f(P(t.emptyText), 1)])], 8, Ei)])) : s("", !0), j(n.$slots, "default")])])], 2));
2863
+ }, [j(n.$slots, "empty", {}, () => [f(P(t.emptyText), 1)])], 8, Oi)])) : s("", !0), j(n.$slots, "default")])])], 2));
2849
2864
  }
2850
- }), ki = { class: "grid gap-3 md:grid-cols-[repeat(2,minmax(0,1fr))]" }, Ai = {
2865
+ }), ji = { class: "grid gap-3 md:grid-cols-[repeat(2,minmax(0,1fr))]" }, Mi = {
2851
2866
  key: 0,
2852
2867
  class: "block text-[11px] uppercase tracking-wide text-slate-500 mb-1"
2853
- }, ji = ["value"], Mi = {
2868
+ }, Ni = ["value"], Pi = {
2854
2869
  key: 2,
2855
2870
  class: "flex items-center gap-2 mt-4"
2856
- }, Ni = ["checked", "onChange"], Pi = { class: "text-sm text-slate-900 dark:text-slate-100" }, Fi = {
2871
+ }, Fi = ["checked", "onChange"], Ii = { class: "text-sm text-slate-900 dark:text-slate-100" }, Li = {
2857
2872
  key: 4,
2858
2873
  class: "text-[11px] text-slate-400 mt-1"
2859
- }, Ii = /* @__PURE__ */ m({
2874
+ }, Ri = /* @__PURE__ */ m({
2860
2875
  __name: "BaseSpecFields",
2861
2876
  props: {
2862
2877
  specs: {},
@@ -2883,24 +2898,24 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
2883
2898
  let t = e.clipboardData?.getData("text") ?? "";
2884
2899
  /^-?\d*$/.test(t.trim()) || e.preventDefault();
2885
2900
  }
2886
- return (n, f) => (E(), c("div", ki, [(E(!0), c(e, null, A(t.specs, (f) => (E(), c("div", { key: f.key }, [
2887
- f.type === "boolean" ? s("", !0) : (E(), c("label", Ai, P(f.label), 1)),
2888
- f.type === "select" ? (E(), o(di, {
2901
+ return (n, f) => (D(), c("div", ji, [(D(!0), c(e, null, A(t.specs, (f) => (D(), c("div", { key: f.key }, [
2902
+ f.type === "boolean" ? s("", !0) : (D(), c("label", Mi, P(f.label), 1)),
2903
+ f.type === "select" ? (D(), o(pi, {
2889
2904
  key: 1,
2890
2905
  modelValue: String(t.params[f.key] ?? ""),
2891
2906
  "onUpdate:modelValue": (e) => r("update", f.key, e)
2892
2907
  }, {
2893
- default: L(() => [(E(!0), c(e, null, A(f.options ?? [], (e) => (E(), c("option", {
2908
+ default: L(() => [(D(!0), c(e, null, A(f.options ?? [], (e) => (D(), c("option", {
2894
2909
  key: e,
2895
2910
  value: e
2896
- }, P(e), 9, ji))), 128))]),
2911
+ }, P(e), 9, Ni))), 128))]),
2897
2912
  _: 2
2898
- }, 1032, ["modelValue", "onUpdate:modelValue"])) : f.type === "boolean" ? (E(), c("label", Mi, [l("input", {
2913
+ }, 1032, ["modelValue", "onUpdate:modelValue"])) : f.type === "boolean" ? (D(), c("label", Pi, [l("input", {
2899
2914
  checked: !!t.params[f.key],
2900
2915
  type: "checkbox",
2901
2916
  class: "h-4 w-4",
2902
2917
  onChange: (e) => i(f.key, e)
2903
- }, null, 40, Ni), l("span", Pi, P(f.label), 1)])) : (E(), o(li, {
2918
+ }, null, 40, Fi), l("span", Ii, P(f.label), 1)])) : (D(), o(di, {
2904
2919
  key: 3,
2905
2920
  modelValue: t.params[f.key],
2906
2921
  type: "number",
@@ -2919,11 +2934,11 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
2919
2934
  "onPaste",
2920
2935
  "onUpdate:modelValue"
2921
2936
  ])),
2922
- f.help ? (E(), c("p", Fi, P(f.help), 1)) : s("", !0),
2937
+ f.help ? (D(), c("p", Li, P(f.help), 1)) : s("", !0),
2923
2938
  j(n.$slots, "after", { spec: f })
2924
2939
  ]))), 128))]));
2925
2940
  }
2926
- }), Li = { class: "mt-1.5 space-y-0.5 px-1" }, Ri = { class: "text-slate-400 dark:text-slate-500" }, zi = /* @__PURE__ */ m({
2941
+ }), zi = { class: "mt-1.5 space-y-0.5 px-1" }, Bi = { class: "text-slate-400 dark:text-slate-500" }, Vi = /* @__PURE__ */ m({
2927
2942
  __name: "BaseStatBreakdown",
2928
2943
  props: {
2929
2944
  items: {},
@@ -2942,16 +2957,16 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
2942
2957
  function i(e) {
2943
2958
  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";
2944
2959
  }
2945
- return (n, a) => (E(), c("div", Li, [(E(!0), c(e, null, A(t.items, (e) => (E(), c("div", {
2960
+ return (n, a) => (D(), c("div", zi, [(D(!0), c(e, null, A(t.items, (e) => (D(), c("div", {
2946
2961
  key: e.label,
2947
2962
  class: "flex items-center justify-between text-[11px]"
2948
- }, [l("span", Ri, P(e.label), 1), l("span", { class: y(["font-mono tabular-nums font-medium", i(e.value)]) }, P(r(e.value)), 3)]))), 128))]));
2963
+ }, [l("span", Bi, P(e.label), 1), l("span", { class: b(["font-mono tabular-nums font-medium", i(e.value)]) }, P(r(e.value)), 3)]))), 128))]));
2949
2964
  }
2950
- }), Bi = [
2965
+ }), Hi = [
2951
2966
  "disabled",
2952
2967
  "title",
2953
2968
  "aria-pressed"
2954
- ], Vi = /* @__PURE__ */ m({
2969
+ ], Ui = /* @__PURE__ */ m({
2955
2970
  __name: "BaseFilterChip",
2956
2971
  props: {
2957
2972
  label: { default: "" },
@@ -2980,21 +2995,21 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
2980
2995
  red: "border-red-500 bg-red-500 text-white hover:bg-red-600 focus-visible:ring-red-500",
2981
2996
  slate: "border-slate-600 bg-slate-600 text-white hover:bg-slate-700 focus-visible:ring-emerald-500"
2982
2997
  };
2983
- return (r, i) => (E(), c("button", {
2998
+ return (r, i) => (D(), c("button", {
2984
2999
  type: "button",
2985
3000
  disabled: e.disabled,
2986
3001
  title: e.title,
2987
3002
  "aria-pressed": e.active,
2988
- class: y(["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]])
2989
- }, [j(r.$slots, "default", {}, () => [f(P(e.label), 1)])], 10, Bi));
3003
+ class: b(["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]])
3004
+ }, [j(r.$slots, "default", {}, () => [f(P(e.label), 1)])], 10, Hi));
2990
3005
  }
2991
- }), Hi = { class: "flex items-center justify-between mb-4" }, Ui = { class: "text-lg font-semibold text-slate-900 dark:text-slate-100" }, Wi = {
3006
+ }), Wi = { class: "flex items-center justify-between mb-4" }, Gi = { class: "text-lg font-semibold text-slate-900 dark:text-slate-100" }, Ki = {
2992
3007
  key: 0,
2993
3008
  class: "text-xs text-slate-500 dark:text-slate-400"
2994
- }, Gi = {
3009
+ }, qi = {
2995
3010
  key: 0,
2996
3011
  class: "inline-flex items-center gap-2 text-xs text-slate-500"
2997
- }, Ki = { class: "grid gap-4 md:grid-cols-[repeat(2,minmax(0,1fr))]" }, qi = { class: "md:col-span-2" }, Ji = ["for"], Yi = { class: "md:col-span-2" }, Xi = ["for"], Zi = { class: "text-[11px] text-slate-500 mt-1" }, Qi = { class: "md:col-span-2" }, $i = ["for"], ea = { class: "md:col-span-2" }, ta = ["for"], na = { class: "md:col-span-2" }, ra = "placeholder:text-slate-400 dark:placeholder:text-slate-500 font-mono", ia = /* @__PURE__ */ m({
3012
+ }, Ji = { class: "grid gap-4 md:grid-cols-[repeat(2,minmax(0,1fr))]" }, Yi = { class: "md:col-span-2" }, Xi = ["for"], Zi = { class: "md:col-span-2" }, Qi = ["for"], $i = { class: "text-[11px] text-slate-500 mt-1" }, ea = { class: "md:col-span-2" }, ta = ["for"], na = { class: "md:col-span-2" }, ra = ["for"], ia = { class: "md:col-span-2" }, aa = "placeholder:text-slate-400 dark:placeholder:text-slate-500 font-mono", oa = /* @__PURE__ */ m({
2998
3013
  __name: "BaseCredentialsForm",
2999
3014
  props: {
3000
3015
  title: {},
@@ -3020,7 +3035,7 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
3020
3035
  "load-error"
3021
3036
  ],
3022
3037
  setup(t, { expose: n, emit: r }) {
3023
- let i = t, a = r, u = k(!1), d = k(!1), m = D({
3038
+ let i = t, a = r, u = k(!1), d = k(!1), m = O({
3024
3039
  keyId: "",
3025
3040
  secretKey: "",
3026
3041
  baseUrl: i.defaults.baseUrl,
@@ -3067,72 +3082,72 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
3067
3082
  }
3068
3083
  }
3069
3084
  }
3070
- return C(h), n({ load: h }), (n, r) => (E(), o(zt, { class: "!p-6" }, {
3085
+ return w(h), n({ load: h }), (n, r) => (D(), o(Vt, { class: "!p-6" }, {
3071
3086
  default: L(() => [
3072
- l("div", Hi, [l("div", null, [l("h2", Ui, P(t.title), 1), t.subtitle ? (E(), c("p", Wi, P(t.subtitle), 1)) : s("", !0)]), u.value ? (E(), c("span", Gi, [p(Bt, { class: "!h-4 !w-4" }), r[4] ||= f(" Saving… ", -1)])) : s("", !0)]),
3073
- l("div", Ki, [
3074
- l("div", qi, [l("label", {
3087
+ l("div", Wi, [l("div", null, [l("h2", Gi, P(t.title), 1), t.subtitle ? (D(), c("p", Ki, P(t.subtitle), 1)) : s("", !0)]), u.value ? (D(), c("span", qi, [p(Ht, { class: "!h-4 !w-4" }), r[4] ||= f(" Saving… ", -1)])) : s("", !0)]),
3088
+ l("div", Ji, [
3089
+ l("div", Yi, [l("label", {
3075
3090
  for: `${t.idPrefix}-key-id`,
3076
3091
  class: "block text-xs uppercase tracking-wide text-slate-500 mb-1"
3077
- }, P(t.keyLabel), 9, Ji), p(li, {
3092
+ }, P(t.keyLabel), 9, Xi), p(di, {
3078
3093
  id: `${t.idPrefix}-key-id`,
3079
3094
  modelValue: m.keyId,
3080
3095
  "onUpdate:modelValue": r[0] ||= (e) => m.keyId = e,
3081
3096
  type: "text",
3082
3097
  autocomplete: "off",
3083
3098
  placeholder: t.keyPlaceholder,
3084
- class: y(ra)
3099
+ class: b(aa)
3085
3100
  }, null, 8, [
3086
3101
  "id",
3087
3102
  "modelValue",
3088
3103
  "placeholder"
3089
3104
  ])]),
3090
- l("div", Yi, [
3105
+ l("div", Zi, [
3091
3106
  l("label", {
3092
3107
  for: `${t.idPrefix}-secret`,
3093
3108
  class: "block text-xs uppercase tracking-wide text-slate-500 mb-1"
3094
- }, P(t.secretLabel), 9, Xi),
3095
- p(li, {
3109
+ }, P(t.secretLabel), 9, Qi),
3110
+ p(di, {
3096
3111
  id: `${t.idPrefix}-secret`,
3097
3112
  modelValue: m.secretKey,
3098
3113
  "onUpdate:modelValue": r[1] ||= (e) => m.secretKey = e,
3099
3114
  type: "password",
3100
3115
  autocomplete: "new-password",
3101
3116
  placeholder: d.value ? "•••••••• (unchanged — type to replace)" : t.secretPlaceholder,
3102
- class: y(ra)
3117
+ class: b(aa)
3103
3118
  }, null, 8, [
3104
3119
  "id",
3105
3120
  "modelValue",
3106
3121
  "placeholder"
3107
3122
  ]),
3108
- l("p", Zi, [d.value ? (E(), c(e, { key: 0 }, [f(P(t.secretSetHint), 1)], 64)) : j(n.$slots, "no-secret-hint", {}, () => [f(P(t.permissionsHint), 1)], void 0, 1)])
3123
+ l("p", $i, [d.value ? (D(), c(e, { key: 0 }, [f(P(t.secretSetHint), 1)], 64)) : j(n.$slots, "no-secret-hint", {}, () => [f(P(t.permissionsHint), 1)], void 0, 1)])
3109
3124
  ]),
3110
- l("div", Qi, [
3125
+ l("div", ea, [
3111
3126
  l("label", {
3112
3127
  for: `${t.idPrefix}-base-url`,
3113
3128
  class: "block text-xs uppercase tracking-wide text-slate-500 mb-1"
3114
- }, "Base URL (trading)", 8, $i),
3115
- p(li, {
3129
+ }, "Base URL (trading)", 8, ta),
3130
+ p(di, {
3116
3131
  id: `${t.idPrefix}-base-url`,
3117
3132
  modelValue: m.baseUrl,
3118
3133
  "onUpdate:modelValue": r[2] ||= (e) => m.baseUrl = e,
3119
3134
  type: "text",
3120
- class: y(ra)
3135
+ class: b(aa)
3121
3136
  }, null, 8, ["id", "modelValue"]),
3122
3137
  j(n.$slots, "base-url-extra", { form: m })
3123
3138
  ]),
3124
- l("div", ea, [l("label", {
3139
+ l("div", na, [l("label", {
3125
3140
  for: `${t.idPrefix}-data-url`,
3126
3141
  class: "block text-xs uppercase tracking-wide text-slate-500 mb-1"
3127
- }, "Data URL (market data)", 8, ta), p(li, {
3142
+ }, "Data URL (market data)", 8, ra), p(di, {
3128
3143
  id: `${t.idPrefix}-data-url`,
3129
3144
  modelValue: m.dataUrl,
3130
3145
  "onUpdate:modelValue": r[3] ||= (e) => m.dataUrl = e,
3131
3146
  type: "text",
3132
- class: y(ra)
3147
+ class: b(aa)
3133
3148
  }, null, 8, ["id", "modelValue"])]),
3134
- l("div", na, [p(nt, {
3135
- color: F(K).GREEN,
3149
+ l("div", ia, [p(it, {
3150
+ color: F(G).GREEN,
3136
3151
  description: t.saveLabel,
3137
3152
  isDisable: u.value,
3138
3153
  isLoading: u.value,
@@ -3149,16 +3164,16 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
3149
3164
  _: 3
3150
3165
  }));
3151
3166
  }
3152
- }), aa = {
3167
+ }), sa = {
3153
3168
  key: 0,
3154
3169
  class: "text-sm text-slate-500 dark:text-slate-400"
3155
- }, oa = { class: "mb-3 flex flex-wrap items-center gap-2" }, sa = { class: "relative min-w-[200px] flex-1" }, ca = ["placeholder"], la = {
3170
+ }, ca = { class: "mb-3 flex flex-wrap items-center gap-2" }, la = { class: "relative min-w-[200px] flex-1" }, ua = ["placeholder"], da = {
3156
3171
  key: 0,
3157
3172
  class: "text-sm text-slate-500 dark:text-slate-400"
3158
- }, ua = {
3173
+ }, fa = {
3159
3174
  key: 1,
3160
3175
  class: "flex flex-wrap gap-2"
3161
- }, da = ["title", "onClick"], fa = "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", pa = "\0all", ma = /* @__PURE__ */ m({
3176
+ }, pa = ["title", "onClick"], ma = "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", ha = "\0all", ga = /* @__PURE__ */ m({
3162
3177
  __name: "BasePillPickerModal",
3163
3178
  props: {
3164
3179
  title: {},
@@ -3180,11 +3195,11 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
3180
3195
  },
3181
3196
  emits: ["pick", "close"],
3182
3197
  setup(t, { emit: n }) {
3183
- let r = t, i = n, u = a(() => r.icon ?? Te), d = k(""), f = k(pa), m = a(() => r.groups && r.groups.length > 0 ? [{
3184
- value: pa,
3198
+ let r = t, i = n, u = a(() => r.icon ?? Ee), d = k(""), f = k(ha), m = a(() => r.groups && r.groups.length > 0 ? [{
3199
+ value: ha,
3185
3200
  label: r.allLabel
3186
- }, ...r.groups] : []), h = a(() => r.items.filter((e) => (f.value === pa || e.group === f.value) && e.label.toLowerCase().includes(d.value.trim().toLowerCase())));
3187
- return (n, r) => (E(), o(bn, {
3201
+ }, ...r.groups] : []), h = a(() => r.items.filter((e) => (f.value === ha || e.group === f.value) && e.label.toLowerCase().includes(d.value.trim().toLowerCase())));
3202
+ return (n, r) => (D(), o(Sn, {
3188
3203
  title: t.title,
3189
3204
  icon: u.value,
3190
3205
  subtitle: t.subtitle,
@@ -3192,32 +3207,32 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
3192
3207
  "max-width-class": t.maxWidthClass,
3193
3208
  onCancel: r[4] ||= (e) => i("close")
3194
3209
  }, {
3195
- footer: L(() => [p(Cr, {
3210
+ footer: L(() => [p(Tr, {
3196
3211
  variant: "ghost",
3197
3212
  label: t.closeText,
3198
3213
  onClick: r[3] ||= (e) => i("close")
3199
3214
  }, null, 8, ["label"])]),
3200
- default: L(() => [t.items.length === 0 ? (E(), c("p", aa, P(t.emptyMessage), 1)) : (E(), c(e, { key: 1 }, [l("div", oa, [l("div", sa, [
3201
- p(F(Te), { class: "pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-slate-400" }),
3215
+ default: L(() => [t.items.length === 0 ? (D(), c("p", sa, P(t.emptyMessage), 1)) : (D(), c(e, { key: 1 }, [l("div", ca, [l("div", la, [
3216
+ p(F(Ee), { class: "pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-slate-400" }),
3202
3217
  R(l("input", {
3203
3218
  "onUpdate:modelValue": r[0] ||= (e) => d.value = e,
3204
3219
  type: "text",
3205
3220
  placeholder: t.searchPlaceholder,
3206
3221
  autocomplete: "off",
3207
- class: y([
3208
- fa,
3222
+ class: b([
3223
+ ma,
3209
3224
  "w-full pl-9 pr-8 placeholder:text-slate-400 dark:placeholder:text-slate-500",
3210
3225
  t.mono ? "font-mono" : ""
3211
3226
  ])
3212
- }, null, 10, ca), [[ie, d.value]]),
3213
- d.value ? (E(), c("button", {
3227
+ }, null, 10, ua), [[ae, d.value]]),
3228
+ d.value ? (D(), c("button", {
3214
3229
  key: 0,
3215
3230
  type: "button",
3216
3231
  "aria-label": "Clear the filter",
3217
3232
  class: "absolute right-2 top-1/2 -translate-y-1/2 text-slate-400 hover:text-slate-600 dark:hover:text-slate-200",
3218
3233
  onClick: r[1] ||= (e) => d.value = ""
3219
3234
  }, " ✕ ")) : s("", !0)
3220
- ]), m.value.length > 0 ? (E(), o(bi, {
3235
+ ]), m.value.length > 0 ? (D(), o(Si, {
3221
3236
  key: 0,
3222
3237
  modelValue: f.value,
3223
3238
  "onUpdate:modelValue": r[2] ||= (e) => f.value = e,
@@ -3227,13 +3242,13 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
3227
3242
  "modelValue",
3228
3243
  "options",
3229
3244
  "aria-label"
3230
- ])) : s("", !0)]), h.value.length === 0 ? (E(), c("p", la, P(t.noMatchMessage), 1)) : (E(), c("div", ua, [(E(!0), c(e, null, A(h.value, (e) => (E(), c("button", {
3245
+ ])) : s("", !0)]), h.value.length === 0 ? (D(), c("p", da, P(t.noMatchMessage), 1)) : (D(), c("div", fa, [(D(!0), c(e, null, A(h.value, (e) => (D(), c("button", {
3231
3246
  key: e.id,
3232
3247
  type: "button",
3233
3248
  title: e.title,
3234
- class: y(["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" : ""]),
3249
+ class: b(["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" : ""]),
3235
3250
  onClick: (t) => i("pick", e)
3236
- }, P(e.label), 11, da))), 128))]))], 64))]),
3251
+ }, P(e.label), 11, pa))), 128))]))], 64))]),
3237
3252
  _: 1
3238
3253
  }, 8, [
3239
3254
  "title",
@@ -3242,7 +3257,7 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
3242
3257
  "max-width-class"
3243
3258
  ]));
3244
3259
  }
3245
- }), ha = ["aria-label"], ga = ["title"], _a = { class: "text-[10px] tabular-nums text-slate-400 dark:text-slate-500" }, va = ["title"], ya = /* @__PURE__ */ m({
3260
+ }), _a = ["aria-label"], va = ["title"], ya = { class: "text-[10px] tabular-nums text-slate-400 dark:text-slate-500" }, ba = ["title"], xa = /* @__PURE__ */ m({
3246
3261
  __name: "BaseBarDistribution",
3247
3262
  props: {
3248
3263
  bars: {},
@@ -3254,27 +3269,27 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
3254
3269
  },
3255
3270
  setup(t) {
3256
3271
  let n = t, r = a(() => Math.max(1, ...n.bars.map((e) => e.count))), i = (e) => Math.max(3, Math.round(e.count / r.value * n.maxBarHeight)), o = (e) => `${n.titlePrefix ? `${n.titlePrefix} ` : ""}${e.label}: ${e.count} ${n.countNoun}${e.count === 1 ? "" : "s"}`;
3257
- return (n, r) => (E(), c("div", {
3272
+ return (n, r) => (D(), c("div", {
3258
3273
  class: "flex items-end gap-1.5 overflow-x-auto pb-1",
3259
3274
  role: "img",
3260
3275
  "aria-label": t.ariaLabel
3261
- }, [(E(!0), c(e, null, A(t.bars, (e) => (E(), c("div", {
3276
+ }, [(D(!0), c(e, null, A(t.bars, (e) => (D(), c("div", {
3262
3277
  key: e.label,
3263
3278
  class: "flex min-w-7 flex-1 flex-col items-center gap-0.5",
3264
3279
  title: o(e)
3265
3280
  }, [
3266
- l("span", _a, P(e.count), 1),
3281
+ l("span", ya, P(e.count), 1),
3267
3282
  l("div", {
3268
- class: y(["w-full max-w-8 rounded-t", t.barClass]),
3269
- style: x({ height: `${i(e)}px` })
3283
+ class: b(["w-full max-w-8 rounded-t", t.barClass]),
3284
+ style: S({ height: `${i(e)}px` })
3270
3285
  }, null, 6),
3271
3286
  l("span", {
3272
3287
  class: "max-w-full truncate font-mono text-[10px] text-slate-500 dark:text-slate-400",
3273
3288
  title: e.label
3274
- }, P(e.label), 9, va)
3275
- ], 8, ga))), 128))], 8, ha));
3289
+ }, P(e.label), 9, ba)
3290
+ ], 8, va))), 128))], 8, _a));
3276
3291
  }
3277
- }), ba = /* @__PURE__ */ m({
3292
+ }), Sa = /* @__PURE__ */ m({
3278
3293
  __name: "BaseDateTimePicker",
3279
3294
  props: {
3280
3295
  modelValue: { default: null },
@@ -3296,7 +3311,7 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
3296
3311
  },
3297
3312
  emits: ["update:modelValue"],
3298
3313
  setup(e, { emit: t }) {
3299
- let n = e, r = t, { isDark: i } = W(), s = a(() => ({
3314
+ let n = e, r = t, { isDark: i } = U(), s = a(() => ({
3300
3315
  enableTimePicker: n.mode !== "date",
3301
3316
  is24: n.is24,
3302
3317
  ...n.timeConfig
@@ -3305,7 +3320,7 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
3305
3320
  let e = n.is24 ? "HH:mm" : "hh:mm a";
3306
3321
  return n.mode === "date" ? { input: "dd/MM/yyyy" } : n.mode === "time" ? { input: e } : { input: `dd/MM/yyyy ${e}` };
3307
3322
  });
3308
- return (t, n) => (E(), o(F(Ne), {
3323
+ return (t, n) => (D(), o(F(Fe), {
3309
3324
  "model-value": e.modelValue,
3310
3325
  dark: F(i),
3311
3326
  "time-picker": e.mode === "time",
@@ -3316,7 +3331,7 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
3316
3331
  "onUpdate:modelValue": n[0] ||= (e) => r("update:modelValue", e)
3317
3332
  }, u({ _: 2 }, [A(t.$slots, (e, n) => ({
3318
3333
  name: n,
3319
- fn: L((e) => [j(t.$slots, n, b(g(e ?? {})))])
3334
+ fn: L((e) => [j(t.$slots, n, x(_(e ?? {})))])
3320
3335
  }))]), 1032, [
3321
3336
  "model-value",
3322
3337
  "dark",
@@ -3327,28 +3342,28 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
3327
3342
  "teleport"
3328
3343
  ]));
3329
3344
  }
3330
- }), xa = { class: "flex min-w-0 flex-1 flex-wrap items-center gap-1" }, Sa = { class: "truncate" }, Ca = [
3345
+ }), Ca = { class: "flex min-w-0 flex-1 flex-wrap items-center gap-1" }, wa = { class: "truncate" }, Ta = [
3331
3346
  "aria-label",
3332
3347
  "disabled",
3333
3348
  "onClick"
3334
- ], wa = [
3349
+ ], Ea = [
3335
3350
  "disabled",
3336
3351
  "readonly",
3337
3352
  "aria-label",
3338
3353
  "aria-expanded",
3339
3354
  "aria-activedescendant",
3340
3355
  "placeholder"
3341
- ], Ta = ["aria-multiselectable"], Ea = [
3356
+ ], Da = ["aria-multiselectable"], Oa = [
3342
3357
  "id",
3343
3358
  "aria-selected",
3344
3359
  "aria-disabled",
3345
3360
  "title",
3346
3361
  "onMouseenter",
3347
3362
  "onClick"
3348
- ], Da = { class: "truncate" }, Oa = {
3363
+ ], ka = { class: "truncate" }, Aa = {
3349
3364
  key: 0,
3350
3365
  class: "px-3 py-2 text-sm text-slate-500 dark:text-slate-400"
3351
- }, ka = /* @__PURE__ */ m({
3366
+ }, ja = /* @__PURE__ */ m({
3352
3367
  __name: "BaseSearchSelect",
3353
3368
  props: {
3354
3369
  options: {},
@@ -3380,97 +3395,97 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
3380
3395
  },
3381
3396
  emits: ["update:modelValue"],
3382
3397
  setup(t, { emit: n }) {
3383
- let r = t, i = n, u = k(null), d = k(null), f = k(!1), m = k(""), h = k(-1), g = `search-select-${ee()}`, _ = a(() => {
3398
+ let r = t, i = n, u = k(null), d = k(null), f = k(!1), m = k(""), h = k(-1), g = `search-select-${te()}`, _ = a(() => {
3384
3399
  let e = r.modelValue;
3385
3400
  return Array.isArray(e) ? [...e] : e == null || e === "" ? [] : [e];
3386
- }), b = a(() => _.value.map((e) => r.options.find((t) => t.value === e)).filter((e) => !!e)), x = a(() => _.value.length > 0), w = a(() => !r.multiple && b.value.length > 0), T = a(() => w.value ? b.value[0].label : r.multiple && x.value ? "" : r.placeholder), D = a(() => {
3401
+ }), v = a(() => _.value.map((e) => r.options.find((t) => t.value === e)).filter((e) => !!e)), x = a(() => _.value.length > 0), S = a(() => !r.multiple && v.value.length > 0), T = a(() => S.value ? v.value[0].label : r.multiple && x.value ? "" : r.placeholder), E = a(() => {
3387
3402
  let e = m.value.trim().toLowerCase();
3388
3403
  return e ? r.options.filter((t) => t.label.toLowerCase().includes(e)) : [...r.options];
3389
3404
  });
3390
- I(D, (e) => {
3405
+ I(E, (e) => {
3391
3406
  h.value = e.findIndex((e) => !e.disabled);
3392
3407
  });
3393
3408
  function O(e) {
3394
3409
  return _.value.includes(e.value);
3395
3410
  }
3396
- function j(e, t) {
3411
+ function ee(e, t) {
3397
3412
  return e.disabled ? "cursor-not-allowed text-slate-400 dark:text-slate-600" : O(e) ? t === h.value ? "bg-emerald-600 text-white" : "bg-emerald-500 text-white" : t === h.value ? "bg-slate-100 text-slate-900 dark:bg-slate-800 dark:text-slate-100" : "text-slate-700 dark:text-slate-200";
3398
3413
  }
3399
- function M() {
3400
- r.disabled || f.value || (f.value = !0, h.value = D.value.findIndex((e) => !e.disabled));
3414
+ function j() {
3415
+ r.disabled || f.value || (f.value = !0, h.value = E.value.findIndex((e) => !e.disabled));
3401
3416
  }
3402
- function N() {
3417
+ function M() {
3403
3418
  f.value = !1, m.value = "";
3404
3419
  }
3405
- function te(e) {
3406
- r.disabled || (e.target !== d.value && e.preventDefault(), f.value && e.target !== d.value ? N() : (d.value?.focus(), M()));
3420
+ function N(e) {
3421
+ r.disabled || (e.target !== d.value && e.preventDefault(), f.value && e.target !== d.value ? M() : (d.value?.focus(), j()));
3407
3422
  }
3408
3423
  function ne(e) {
3409
3424
  if (!e.disabled) {
3410
3425
  if (r.multiple) {
3411
3426
  let t = O(e) ? _.value.filter((t) => t !== e.value) : [..._.value, e.value];
3412
- i("update:modelValue", t), m.value = "", v(() => d.value?.focus());
3413
- } else i("update:modelValue", e.value), N(), d.value?.blur();
3427
+ i("update:modelValue", t), m.value = "", y(() => d.value?.focus());
3428
+ } else i("update:modelValue", e.value), M(), d.value?.blur();
3414
3429
  }
3415
3430
  }
3416
3431
  function re(e) {
3417
3432
  i("update:modelValue", _.value.filter((t) => t !== e.value));
3418
3433
  }
3419
- function L() {
3434
+ function ie() {
3420
3435
  i("update:modelValue", r.multiple ? [] : null), m.value = "";
3421
3436
  }
3422
- function oe(e) {
3423
- let t = D.value;
3437
+ function L(e) {
3438
+ let t = E.value;
3424
3439
  if (t.length === 0) return;
3425
3440
  let n = h.value;
3426
3441
  for (let r = 0; r < t.length && (n = (n + e + t.length) % t.length, t[n].disabled); r++);
3427
- h.value = n, v(() => document.getElementById(`${g}-${n}`)?.scrollIntoView?.({ block: "nearest" }));
3442
+ h.value = n, y(() => document.getElementById(`${g}-${n}`)?.scrollIntoView?.({ block: "nearest" }));
3428
3443
  }
3429
3444
  function se(e) {
3430
3445
  switch (e.key) {
3431
3446
  case "ArrowDown":
3432
- e.preventDefault(), f.value ? oe(1) : M();
3447
+ e.preventDefault(), f.value ? L(1) : j();
3433
3448
  break;
3434
3449
  case "ArrowUp":
3435
- e.preventDefault(), f.value ? oe(-1) : M();
3450
+ e.preventDefault(), f.value ? L(-1) : j();
3436
3451
  break;
3437
3452
  case "Enter":
3438
- f.value && h.value >= 0 && (e.preventDefault(), ne(D.value[h.value]));
3453
+ f.value && h.value >= 0 && (e.preventDefault(), ne(E.value[h.value]));
3439
3454
  break;
3440
3455
  case "Escape":
3441
- f.value && (e.preventDefault(), N());
3456
+ f.value && (e.preventDefault(), M());
3442
3457
  break;
3443
3458
  case "Tab":
3444
- N();
3459
+ M();
3445
3460
  break;
3446
- case "Backspace": r.multiple && m.value === "" && b.value.length && re(b.value[b.value.length - 1]);
3461
+ case "Backspace": r.multiple && m.value === "" && v.value.length && re(v.value[v.value.length - 1]);
3447
3462
  }
3448
3463
  }
3449
3464
  function ce(e) {
3450
- f.value && u.value && !u.value.contains(e.target) && N();
3465
+ f.value && u.value && !u.value.contains(e.target) && M();
3451
3466
  }
3452
- return C(() => document.addEventListener("mousedown", ce)), S(() => document.removeEventListener("mousedown", ce)), (n, r) => (E(), c("div", {
3467
+ return w(() => document.addEventListener("mousedown", ce)), C(() => document.removeEventListener("mousedown", ce)), (n, r) => (D(), c("div", {
3453
3468
  ref_key: "rootEl",
3454
3469
  ref: u,
3455
- class: y(t.block ? "relative w-full" : "relative inline-block min-w-48")
3470
+ class: b(t.block ? "relative w-full" : "relative inline-block min-w-48")
3456
3471
  }, [l("div", {
3457
- class: y(["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", [f.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"]]),
3458
- onMousedown: te
3472
+ class: b(["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", [f.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"]]),
3473
+ onMousedown: N
3459
3474
  }, [
3460
- l("div", xa, [(E(!0), c(e, null, A(b.value, (e) => R((E(), c("span", {
3475
+ l("div", Ca, [(D(!0), c(e, null, A(v.value, (e) => R((D(), c("span", {
3461
3476
  key: String(e.value),
3462
3477
  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"
3463
- }, [l("span", Sa, P(e.label), 1), l("button", {
3478
+ }, [l("span", wa, P(e.label), 1), l("button", {
3464
3479
  type: "button",
3465
3480
  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",
3466
3481
  "aria-label": `Remove ${e.label}`,
3467
3482
  disabled: t.disabled,
3468
3483
  onMousedown: r[0] ||= z(() => {}, ["stop", "prevent"]),
3469
3484
  onClick: z((t) => re(e), ["stop"])
3470
- }, [p(F(B), {
3485
+ }, [p(F(Ae), {
3471
3486
  class: "h-3 w-3",
3472
3487
  "aria-hidden": "true"
3473
- })], 40, Ca)])), [[ae, t.multiple]])), 128)), R(l("input", {
3488
+ })], 40, Ta)])), [[oe, t.multiple]])), 128)), R(l("input", {
3474
3489
  ref_key: "inputEl",
3475
3490
  ref: d,
3476
3491
  "onUpdate:modelValue": r[1] ||= (e) => m.value = e,
@@ -3485,65 +3500,65 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
3485
3500
  "aria-controls": g,
3486
3501
  "aria-activedescendant": f.value && h.value >= 0 ? `${g}-${h.value}` : void 0,
3487
3502
  placeholder: T.value,
3488
- class: y(["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"]),
3489
- onFocus: M,
3490
- onInput: M,
3503
+ class: b(["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", S.value ? "placeholder:text-slate-900 dark:placeholder:text-slate-100" : "placeholder:text-slate-400 dark:placeholder:text-slate-500"]),
3504
+ onFocus: j,
3505
+ onInput: j,
3491
3506
  onKeydown: se
3492
- }, null, 42, wa), [[ie, m.value]])]),
3493
- t.clearable && x.value && !t.disabled ? (E(), c("button", {
3507
+ }, null, 42, Ea), [[ae, m.value]])]),
3508
+ t.clearable && x.value && !t.disabled ? (D(), c("button", {
3494
3509
  key: 0,
3495
3510
  type: "button",
3496
3511
  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",
3497
3512
  "aria-label": "Clear selection",
3498
3513
  onMousedown: r[2] ||= z(() => {}, ["stop", "prevent"]),
3499
- onClick: z(L, ["stop"])
3500
- }, [p(F(B), {
3514
+ onClick: z(ie, ["stop"])
3515
+ }, [p(F(Ae), {
3501
3516
  class: "h-4 w-4",
3502
3517
  "aria-hidden": "true"
3503
3518
  })], 32)) : s("", !0),
3504
- p(F(ge), {
3505
- class: y(["h-4 w-4 shrink-0 text-slate-500 transition-transform dark:text-slate-400", f.value ? "rotate-180" : ""]),
3519
+ p(F(_e), {
3520
+ class: b(["h-4 w-4 shrink-0 text-slate-500 transition-transform dark:text-slate-400", f.value ? "rotate-180" : ""]),
3506
3521
  "aria-hidden": "true"
3507
3522
  }, null, 8, ["class"])
3508
- ], 34), f.value ? (E(), c("ul", {
3523
+ ], 34), f.value ? (D(), c("ul", {
3509
3524
  key: 0,
3510
3525
  id: g,
3511
3526
  role: "listbox",
3512
3527
  "aria-multiselectable": t.multiple || void 0,
3513
3528
  class: "absolute z-30 mt-1 max-h-60 w-full overflow-auto rounded-lg border border-slate-200 bg-white py-1 shadow-lg dark:border-slate-700 dark:bg-slate-900"
3514
- }, [(E(!0), c(e, null, A(D.value, (e, t) => (E(), c("li", {
3529
+ }, [(D(!0), c(e, null, A(E.value, (e, t) => (D(), c("li", {
3515
3530
  id: `${g}-${t}`,
3516
3531
  key: String(e.value),
3517
3532
  role: "option",
3518
3533
  "aria-selected": O(e),
3519
3534
  "aria-disabled": e.disabled || void 0,
3520
3535
  title: e.title,
3521
- class: y(["flex cursor-pointer items-center justify-between gap-2 px-3 py-2 text-left text-sm", j(e, t)]),
3536
+ class: b(["flex cursor-pointer items-center justify-between gap-2 px-3 py-2 text-left text-sm", ee(e, t)]),
3522
3537
  onMousedown: r[3] ||= z(() => {}, ["prevent"]),
3523
3538
  onMouseenter: (e) => h.value = t,
3524
3539
  onClick: (t) => ne(e)
3525
- }, [l("span", Da, P(e.label), 1), O(e) ? (E(), o(F(pe), {
3540
+ }, [l("span", ka, P(e.label), 1), O(e) ? (D(), o(F(me), {
3526
3541
  key: 0,
3527
3542
  class: "h-4 w-4 shrink-0",
3528
3543
  "aria-hidden": "true"
3529
- })) : s("", !0)], 42, Ea))), 128)), D.value.length === 0 ? (E(), c("li", Oa, P(t.options.length === 0 ? t.emptyText : t.noResultsText), 1)) : s("", !0)], 8, Ta)) : s("", !0)], 2));
3544
+ })) : s("", !0)], 42, Oa))), 128)), E.value.length === 0 ? (D(), c("li", Aa, P(t.options.length === 0 ? t.emptyText : t.noResultsText), 1)) : s("", !0)], 8, Da)) : s("", !0)], 2));
3530
3545
  }
3531
- }), Aa = { class: "rounded-xl border border-slate-200 bg-white text-left shadow-sm dark:border-slate-700 dark:bg-slate-900" }, ja = {
3546
+ }), Ma = { class: "rounded-xl border border-slate-200 bg-white text-left shadow-sm dark:border-slate-700 dark:bg-slate-900" }, Na = {
3532
3547
  key: 0,
3533
3548
  class: "flex flex-wrap items-center justify-between gap-3 border-b border-slate-200 px-5 py-3 dark:border-slate-700"
3534
- }, Ma = { class: "min-w-0" }, Na = {
3549
+ }, Pa = { class: "min-w-0" }, Fa = {
3535
3550
  key: 0,
3536
3551
  class: "text-base font-semibold text-slate-900 dark:text-slate-100"
3537
- }, Pa = {
3552
+ }, Ia = {
3538
3553
  key: 1,
3539
3554
  class: "text-sm text-slate-500 dark:text-slate-400"
3540
- }, Fa = {
3555
+ }, La = {
3541
3556
  key: 0,
3542
3557
  class: "flex items-center gap-2"
3543
- }, Ia = {
3558
+ }, Ra = {
3544
3559
  key: 1,
3545
3560
  class: "flex flex-wrap items-center justify-end gap-2 border-t border-slate-200 px-5 py-3 dark:border-slate-700"
3546
- }, La = /* @__PURE__ */ m({
3561
+ }, za = /* @__PURE__ */ m({
3547
3562
  __name: "BaseCard",
3548
3563
  props: {
3549
3564
  title: { default: "" },
@@ -3551,24 +3566,24 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
3551
3566
  padding: { default: "md" }
3552
3567
  },
3553
3568
  setup(e) {
3554
- return (t, n) => (E(), c("section", Aa, [
3555
- e.title || e.subtitle || t.$slots.actions ? (E(), c("header", ja, [l("div", Ma, [e.title ? (E(), c("h2", Na, P(e.title), 1)) : s("", !0), e.subtitle ? (E(), c("p", Pa, P(e.subtitle), 1)) : s("", !0)]), t.$slots.actions ? (E(), c("div", Fa, [j(t.$slots, "actions")])) : s("", !0)])) : s("", !0),
3556
- l("div", { class: y(e.padding === "sm" ? "p-4" : e.padding === "none" ? "" : "p-5") }, [j(t.$slots, "default")], 2),
3557
- t.$slots.footer ? (E(), c("footer", Ia, [j(t.$slots, "footer")])) : s("", !0)
3569
+ return (t, n) => (D(), c("section", Ma, [
3570
+ e.title || e.subtitle || t.$slots.actions ? (D(), c("header", Na, [l("div", Pa, [e.title ? (D(), c("h2", Fa, P(e.title), 1)) : s("", !0), e.subtitle ? (D(), c("p", Ia, P(e.subtitle), 1)) : s("", !0)]), t.$slots.actions ? (D(), c("div", La, [j(t.$slots, "actions")])) : s("", !0)])) : s("", !0),
3571
+ l("div", { class: b(e.padding === "sm" ? "p-4" : e.padding === "none" ? "" : "p-5") }, [j(t.$slots, "default")], 2),
3572
+ t.$slots.footer ? (D(), c("footer", Ra, [j(t.$slots, "footer")])) : s("", !0)
3558
3573
  ]));
3559
3574
  }
3560
- }), Ra = ["for"], za = {
3575
+ }), Ba = ["for"], Va = {
3561
3576
  key: 0,
3562
3577
  class: "ml-0.5 text-red-500",
3563
3578
  "aria-hidden": "true"
3564
- }, Ba = {
3579
+ }, Ha = {
3565
3580
  key: 1,
3566
3581
  class: "mt-1 text-xs font-medium text-red-600 dark:text-red-400",
3567
3582
  role: "alert"
3568
- }, Va = {
3583
+ }, Ua = {
3569
3584
  key: 2,
3570
3585
  class: "mt-1 text-xs text-slate-500 dark:text-slate-400"
3571
- }, Ha = /* @__PURE__ */ m({
3586
+ }, Wa = /* @__PURE__ */ m({
3572
3587
  __name: "BaseField",
3573
3588
  props: {
3574
3589
  label: { default: "" },
@@ -3589,17 +3604,17 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
3589
3604
  }
3590
3605
  },
3591
3606
  setup(e) {
3592
- return (t, n) => (E(), c("div", { class: y([e.grow ? "min-w-48 flex-1" : "", "text-left"]) }, [
3593
- e.label ? (E(), c("label", {
3607
+ return (t, n) => (D(), c("div", { class: b([e.grow ? "min-w-48 flex-1" : "", "text-left"]) }, [
3608
+ e.label ? (D(), c("label", {
3594
3609
  key: 0,
3595
3610
  for: e.labelFor || void 0,
3596
- class: y(["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"])
3597
- }, [f(P(e.label), 1), e.required ? (E(), c("span", za, "*")) : s("", !0)], 10, Ra)) : s("", !0),
3611
+ class: b(["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"])
3612
+ }, [f(P(e.label), 1), e.required ? (D(), c("span", Va, "*")) : s("", !0)], 10, Ba)) : s("", !0),
3598
3613
  j(t.$slots, "default"),
3599
- e.error ? (E(), c("p", Ba, P(e.error), 1)) : e.hint ? (E(), c("p", Va, P(e.hint), 1)) : s("", !0)
3614
+ e.error ? (D(), c("p", Ha, P(e.error), 1)) : e.hint ? (D(), c("p", Ua, P(e.hint), 1)) : s("", !0)
3600
3615
  ], 2));
3601
3616
  }
3602
- }), Ua = { class: "flex items-start justify-between gap-3" }, Wa = { class: "min-w-0 text-left" }, Ga = { class: "truncate text-sm font-bold tracking-wide text-gray-800 dark:text-slate-200" }, Ka = /* @__PURE__ */ m({
3617
+ }), Ga = { class: "flex items-start justify-between gap-3" }, Ka = { class: "min-w-0 text-left" }, qa = { class: "truncate text-sm font-bold tracking-wide text-gray-800 dark:text-slate-200" }, Ja = /* @__PURE__ */ m({
3603
3618
  __name: "BaseStatCard",
3604
3619
  props: {
3605
3620
  title: {},
@@ -3646,30 +3661,30 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
3646
3661
  icon: "text-slate-500 dark:text-slate-300"
3647
3662
  }
3648
3663
  }, r = a(() => n[t.accent]);
3649
- return (t, n) => (E(), o(N(e.to ? F(Ae) : "div"), _(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" : ""]] }), {
3650
- default: L(() => [l("div", Ua, [l("div", Wa, [
3651
- l("p", Ga, P(e.title), 1),
3652
- l("p", { class: y(["mt-1 truncate text-3xl font-bold", r.value.value]) }, P(e.value), 3),
3653
- e.subtitle ? (E(), c("p", {
3664
+ return (t, n) => (D(), o(N(e.to ? F(Me) : "div"), v(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" : ""]] }), {
3665
+ default: L(() => [l("div", Ga, [l("div", Ka, [
3666
+ l("p", qa, P(e.title), 1),
3667
+ l("p", { class: b(["mt-1 truncate text-3xl font-bold", r.value.value]) }, P(e.value), 3),
3668
+ e.subtitle ? (D(), c("p", {
3654
3669
  key: 0,
3655
- class: y(["mt-1 text-sm font-medium", r.value.subtitle])
3670
+ class: b(["mt-1 text-sm font-medium", r.value.subtitle])
3656
3671
  }, P(e.subtitle), 3)) : s("", !0),
3657
3672
  j(t.$slots, "default")
3658
- ]), t.$slots.icon ? (E(), c("div", {
3673
+ ]), t.$slots.icon ? (D(), c("div", {
3659
3674
  key: 0,
3660
- class: y(["flex h-12 w-12 shrink-0 items-center justify-center rounded-xl", r.value.iconBox])
3675
+ class: b(["flex h-12 w-12 shrink-0 items-center justify-center rounded-xl", r.value.iconBox])
3661
3676
  }, [j(t.$slots, "icon", { iconClass: `h-6 w-6 ${r.value.icon}` })], 2)) : s("", !0)])]),
3662
3677
  _: 3
3663
3678
  }, 16, ["class"]));
3664
3679
  }
3665
- }), qa = [
3680
+ }), Ya = [
3666
3681
  "aria-checked",
3667
3682
  "aria-label",
3668
3683
  "disabled"
3669
- ], Ja = {
3684
+ ], Xa = {
3670
3685
  key: 0,
3671
3686
  class: "text-sm font-medium text-slate-700 dark:text-slate-200"
3672
- }, Ya = /* @__PURE__ */ m({
3687
+ }, Za = /* @__PURE__ */ m({
3673
3688
  __name: "BaseToggle",
3674
3689
  props: {
3675
3690
  modelValue: {
@@ -3698,23 +3713,23 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
3698
3713
  let e = !n.modelValue;
3699
3714
  r("update:modelValue", e), r("change", e);
3700
3715
  }
3701
- return (t, n) => (E(), c("label", { class: y(["inline-flex items-center gap-3 select-none", e.disabled ? "cursor-not-allowed opacity-60" : "cursor-pointer"]) }, [l("button", {
3716
+ return (t, n) => (D(), c("label", { class: b(["inline-flex items-center gap-3 select-none", e.disabled ? "cursor-not-allowed opacity-60" : "cursor-pointer"]) }, [l("button", {
3702
3717
  type: "button",
3703
3718
  role: "switch",
3704
3719
  "aria-checked": e.modelValue,
3705
3720
  "aria-label": e.label ? void 0 : e.ariaLabel || void 0,
3706
3721
  disabled: e.disabled,
3707
- class: y(["relative inline-flex h-6 w-11 shrink-0 items-center rounded-full transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 focus-visible:ring-offset-2 dark:focus-visible:ring-offset-slate-900 disabled:cursor-not-allowed", e.modelValue ? i[e.color] : e.offTone === "red" ? "bg-red-200 dark:bg-red-900/50" : "bg-slate-200 dark:bg-slate-700"]),
3722
+ class: b(["relative inline-flex h-6 w-11 shrink-0 items-center rounded-full transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 focus-visible:ring-offset-2 dark:focus-visible:ring-offset-slate-900 disabled:cursor-not-allowed", e.modelValue ? i[e.color] : e.offTone === "red" ? "bg-red-200 dark:bg-red-900/50" : "bg-slate-200 dark:bg-slate-700"]),
3708
3723
  onClick: a
3709
3724
  }, [l("span", {
3710
- class: y(["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"]),
3725
+ class: b(["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"]),
3711
3726
  "aria-hidden": "true"
3712
- }, null, 2)], 10, qa), e.label ? (E(), c("span", Ja, P(e.label), 1)) : s("", !0)], 2));
3727
+ }, null, 2)], 10, Ya), e.label ? (D(), c("span", Xa, P(e.label), 1)) : s("", !0)], 2));
3713
3728
  }
3714
- }), Xa = ["checked", "disabled"], Za = {
3729
+ }), Qa = ["checked", "disabled"], $a = {
3715
3730
  key: 0,
3716
3731
  class: "text-sm text-slate-700 dark:text-slate-200"
3717
- }, Qa = /* @__PURE__ */ m({
3732
+ }, eo = /* @__PURE__ */ m({
3718
3733
  inheritAttrs: !1,
3719
3734
  __name: "BaseCheckbox",
3720
3735
  props: {
@@ -3735,21 +3750,21 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
3735
3750
  let t = e.target.checked;
3736
3751
  n("update:modelValue", t), n("change", t);
3737
3752
  }
3738
- return (t, n) => (E(), c("label", { class: y(["inline-flex items-center gap-2 select-none", e.disabled ? "cursor-not-allowed opacity-60" : "cursor-pointer"]) }, [l("input", _(t.$attrs, {
3753
+ return (t, n) => (D(), c("label", { class: b(["inline-flex items-center gap-2 select-none", e.disabled ? "cursor-not-allowed opacity-60" : "cursor-pointer"]) }, [l("input", v(t.$attrs, {
3739
3754
  type: "checkbox",
3740
3755
  checked: e.modelValue,
3741
3756
  disabled: e.disabled,
3742
3757
  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",
3743
3758
  onChange: r
3744
- }), null, 16, Xa), e.label || t.$slots.default ? (E(), c("span", Za, [j(t.$slots, "default", {}, () => [f(P(e.label), 1)])])) : s("", !0)], 2));
3759
+ }), null, 16, Qa), e.label || t.$slots.default ? (D(), c("span", $a, [j(t.$slots, "default", {}, () => [f(P(e.label), 1)])])) : s("", !0)], 2));
3745
3760
  }
3746
- }), $a = { class: "flex flex-col gap-2 text-left" }, eo = {
3761
+ }), to = { class: "flex flex-col gap-2 text-left" }, no = {
3747
3762
  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",
3748
3763
  "aria-hidden": "true"
3749
- }, to = { class: "min-w-0" }, no = { class: "block truncate text-sm font-medium text-slate-900 dark:text-slate-100" }, ro = {
3764
+ }, ro = { class: "min-w-0" }, io = { class: "block truncate text-sm font-medium text-slate-900 dark:text-slate-100" }, ao = {
3750
3765
  key: 0,
3751
3766
  class: "block truncate text-xs text-slate-500 dark:text-slate-400"
3752
- }, io = /* @__PURE__ */ m({
3767
+ }, oo = /* @__PURE__ */ m({
3753
3768
  __name: "BaseSidebarUser",
3754
3769
  props: {
3755
3770
  name: {},
@@ -3765,23 +3780,23 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
3765
3780
  emits: ["logout"],
3766
3781
  setup(e, { emit: t }) {
3767
3782
  let n = e, r = t, i = a(() => (n.name || "?").split(/[\s._-]+/).filter(Boolean).slice(0, 2).map((e) => e[0].toUpperCase()).join(""));
3768
- return (t, n) => (E(), c("div", $a, [(E(), o(N(e.to ? F(Ae) : "div"), _(e.to ? { to: e.to } : {}, {
3783
+ return (t, n) => (D(), c("div", to, [(D(), o(N(e.to ? F(Me) : "div"), v(e.to ? { to: e.to } : {}, {
3769
3784
  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" : ""],
3770
3785
  title: e.to ? e.profileLabel : void 0
3771
3786
  }), {
3772
- default: L(() => [l("span", eo, P(i.value), 1), l("span", to, [l("span", no, P(e.name), 1), e.email ? (E(), c("span", ro, P(e.email), 1)) : s("", !0)])]),
3787
+ default: L(() => [l("span", no, P(i.value), 1), l("span", ro, [l("span", io, P(e.name), 1), e.email ? (D(), c("span", ao, P(e.email), 1)) : s("", !0)])]),
3773
3788
  _: 1
3774
- }, 16, ["class", "title"])), e.showLogout ? (E(), o(nt, {
3789
+ }, 16, ["class", "title"])), e.showLogout ? (D(), o(it, {
3775
3790
  key: 0,
3776
3791
  class: "w-full justify-center",
3777
3792
  description: e.logoutLabel,
3778
- color: F(K).RED,
3779
- size: F(q).SMALL,
3793
+ color: F(G).RED,
3794
+ size: F(K).SMALL,
3780
3795
  outline: "",
3781
3796
  "icon-left": "",
3782
3797
  onClick: n[0] ||= (e) => r("logout")
3783
3798
  }, {
3784
- default: L(() => [p(F(ce), {
3799
+ default: L(() => [p(F(le), {
3785
3800
  class: "mr-1.5 h-4 w-4",
3786
3801
  "aria-hidden": "true"
3787
3802
  })]),
@@ -3792,16 +3807,16 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
3792
3807
  "size"
3793
3808
  ])) : s("", !0)]));
3794
3809
  }
3795
- }), ao = { class: "flex min-h-screen w-full flex-col items-center justify-center bg-slate-50 px-4 py-10 dark:bg-slate-950" }, oo = { class: "mb-6 flex justify-center" }, so = {
3810
+ }), so = { class: "flex min-h-screen w-full flex-col items-center justify-center bg-slate-50 px-4 py-10 dark:bg-slate-950" }, co = { class: "mb-6 flex justify-center" }, lo = {
3796
3811
  key: 0,
3797
3812
  class: "mb-1 text-2xl font-bold tracking-tight text-slate-900 dark:text-slate-100"
3798
- }, co = {
3813
+ }, uo = {
3799
3814
  key: 1,
3800
3815
  class: "text-sm text-slate-500 dark:text-slate-400"
3801
- }, lo = {
3816
+ }, fo = {
3802
3817
  key: 2,
3803
3818
  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"
3804
- }, uo = /* @__PURE__ */ m({
3819
+ }, po = /* @__PURE__ */ m({
3805
3820
  __name: "BaseAuthLayout",
3806
3821
  props: {
3807
3822
  title: { default: "" },
@@ -3812,18 +3827,18 @@ var Wn = ["aria-label", "aria-expanded"], Gn = { class: "flex flex-col h-full" }
3812
3827
  }
3813
3828
  },
3814
3829
  setup(e) {
3815
- return (t, n) => (E(), c("div", ao, [l("div", oo, [j(t.$slots, "logo", {}, () => [p(jt, { size: F(J).MEDIUM }, null, 8, ["size"])])]), l("div", { class: y(["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"]) }, [
3816
- e.title ? (E(), c("h1", so, P(e.title), 1)) : s("", !0),
3817
- e.subtitle ? (E(), c("p", co, P(e.subtitle), 1)) : s("", !0),
3818
- l("div", { class: y(e.title || e.subtitle ? "mt-6" : "") }, [j(t.$slots, "default")], 2),
3819
- t.$slots.footer ? (E(), c("div", lo, [j(t.$slots, "footer")])) : s("", !0)
3830
+ return (t, n) => (D(), c("div", so, [l("div", co, [j(t.$slots, "logo", {}, () => [p(Nt, { size: F(q).MEDIUM }, null, 8, ["size"])])]), l("div", { class: b(["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"]) }, [
3831
+ e.title ? (D(), c("h1", lo, P(e.title), 1)) : s("", !0),
3832
+ e.subtitle ? (D(), c("p", uo, P(e.subtitle), 1)) : s("", !0),
3833
+ l("div", { class: b(e.title || e.subtitle ? "mt-6" : "") }, [j(t.$slots, "default")], 2),
3834
+ t.$slots.footer ? (D(), c("div", fo, [j(t.$slots, "footer")])) : s("", !0)
3820
3835
  ], 2)]));
3821
3836
  }
3822
3837
  });
3823
3838
  //#endregion
3824
3839
  //#region node_modules/@heroicons/vue/20/solid/esm/CheckCircleIcon.js
3825
- function fo(e, t) {
3826
- return E(), c("svg", {
3840
+ function mo(e, t) {
3841
+ return D(), c("svg", {
3827
3842
  xmlns: "http://www.w3.org/2000/svg",
3828
3843
  viewBox: "0 0 20 20",
3829
3844
  fill: "currentColor",
@@ -3837,8 +3852,8 @@ function fo(e, t) {
3837
3852
  }
3838
3853
  //#endregion
3839
3854
  //#region node_modules/@heroicons/vue/20/solid/esm/XCircleIcon.js
3840
- function po(e, t) {
3841
- return E(), c("svg", {
3855
+ function ho(e, t) {
3856
+ return D(), c("svg", {
3842
3857
  xmlns: "http://www.w3.org/2000/svg",
3843
3858
  viewBox: "0 0 20 20",
3844
3859
  fill: "currentColor",
@@ -3852,7 +3867,7 @@ function po(e, t) {
3852
3867
  }
3853
3868
  //#endregion
3854
3869
  //#region src/components/BaseBooleanBadge.vue
3855
- var mo = /* @__PURE__ */ m({
3870
+ var go = /* @__PURE__ */ m({
3856
3871
  __name: "BaseBooleanBadge",
3857
3872
  props: {
3858
3873
  value: {
@@ -3863,20 +3878,20 @@ var mo = /* @__PURE__ */ m({
3863
3878
  falseLabel: { default: "No" }
3864
3879
  },
3865
3880
  setup(e) {
3866
- return (t, n) => (E(), c("span", { class: y(["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 ? (E(), o(F(fo), {
3881
+ return (t, n) => (D(), c("span", { class: b(["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 ? (D(), o(F(mo), {
3867
3882
  key: 0,
3868
3883
  class: "h-3.5 w-3.5",
3869
3884
  "aria-hidden": "true"
3870
- })) : (E(), o(F(po), {
3885
+ })) : (D(), o(F(ho), {
3871
3886
  key: 1,
3872
3887
  class: "h-3.5 w-3.5",
3873
3888
  "aria-hidden": "true"
3874
3889
  })), f(" " + P(e.value ? e.trueLabel : e.falseLabel), 1)], 2));
3875
3890
  }
3876
- }), ho = { class: "text-xs uppercase tracking-wide text-slate-500 dark:text-slate-400" }, go = ["href"], _o = {
3891
+ }), _o = { class: "text-xs uppercase tracking-wide text-slate-500 dark:text-slate-400" }, vo = ["href"], yo = {
3877
3892
  key: 1,
3878
3893
  class: "text-slate-400 dark:text-slate-500"
3879
- }, vo = /* @__PURE__ */ m({
3894
+ }, bo = /* @__PURE__ */ m({
3880
3895
  __name: "BaseDetailList",
3881
3896
  props: {
3882
3897
  items: {},
@@ -3887,43 +3902,43 @@ var mo = /* @__PURE__ */ m({
3887
3902
  function n(e) {
3888
3903
  return e == null || e === "";
3889
3904
  }
3890
- return (r, i) => (E(), c("dl", { class: y(["grid grid-cols-[minmax(0,1fr)] gap-x-6 gap-y-4 text-left", t.columns === 2 ? "sm:grid-cols-[repeat(2,minmax(0,1fr))]" : t.columns === 3 ? "sm:grid-cols-[repeat(2,minmax(0,1fr))] lg:grid-cols-[repeat(3,minmax(0,1fr))]" : ""]) }, [(E(!0), c(e, null, A(t.items, (r) => (E(), c("div", {
3905
+ return (r, i) => (D(), c("dl", { class: b(["grid grid-cols-[minmax(0,1fr)] gap-x-6 gap-y-4 text-left", t.columns === 2 ? "sm:grid-cols-[repeat(2,minmax(0,1fr))]" : t.columns === 3 ? "sm:grid-cols-[repeat(2,minmax(0,1fr))] lg:grid-cols-[repeat(3,minmax(0,1fr))]" : ""]) }, [(D(!0), c(e, null, A(t.items, (r) => (D(), c("div", {
3891
3906
  key: r.label,
3892
3907
  class: "min-w-0"
3893
- }, [l("dt", ho, P(r.label), 1), l("dd", { class: y(["mt-1 break-words text-sm text-slate-900 dark:text-slate-100", r.mono ? "font-mono" : ""]) }, [r.href && !n(r.value) ? (E(), c("a", {
3908
+ }, [l("dt", _o, P(r.label), 1), l("dd", { class: b(["mt-1 break-words text-sm text-slate-900 dark:text-slate-100", r.mono ? "font-mono" : ""]) }, [r.href && !n(r.value) ? (D(), c("a", {
3894
3909
  key: 0,
3895
3910
  href: r.href,
3896
3911
  target: "_blank",
3897
3912
  rel: "noopener noreferrer",
3898
3913
  class: "text-emerald-600 hover:underline dark:text-emerald-400"
3899
- }, P(r.value), 9, go)) : n(r.value) ? (E(), c("span", _o, P(t.emptyText), 1)) : (E(), c(e, { key: 2 }, [f(P(r.value), 1)], 64))], 2)]))), 128))], 2));
3914
+ }, P(r.value), 9, vo)) : n(r.value) ? (D(), c("span", yo, P(t.emptyText), 1)) : (D(), c(e, { key: 2 }, [f(P(r.value), 1)], 64))], 2)]))), 128))], 2));
3900
3915
  }
3901
3916
  });
3902
3917
  //#endregion
3903
3918
  //#region src/composables/useDebounce.ts
3904
- function yo(e, t = 300) {
3919
+ function xo(e, t = 300) {
3905
3920
  let n = k(e.value), r = null;
3906
3921
  return I(e, (e) => {
3907
3922
  r && clearTimeout(r), r = setTimeout(() => {
3908
3923
  n.value = e, r = null;
3909
3924
  }, t);
3910
- }), w(() => {
3925
+ }), T(() => {
3911
3926
  r &&= (clearTimeout(r), null);
3912
3927
  }), n;
3913
3928
  }
3914
3929
  //#endregion
3915
3930
  //#region src/composables/useToast.ts
3916
- function bo(e = 3e3) {
3917
- let t = k(!1), n = k(""), r = k(Y.SUCCESS), i = null;
3931
+ function So(e = 3e3) {
3932
+ let t = k(!1), n = k(""), r = k(J.SUCCESS), i = null;
3918
3933
  function a() {
3919
3934
  i &&= (clearTimeout(i), null);
3920
3935
  }
3921
- function o(o, s = Y.SUCCESS, c = e) {
3936
+ function o(o, s = J.SUCCESS, c = e) {
3922
3937
  n.value = o, r.value = s, t.value = !0, a(), i = setTimeout(() => {
3923
3938
  t.value = !1, i = null;
3924
3939
  }, c);
3925
3940
  }
3926
- return w(() => {
3941
+ return T(() => {
3927
3942
  a();
3928
3943
  }), {
3929
3944
  showToast: t,
@@ -3934,8 +3949,8 @@ function bo(e = 3e3) {
3934
3949
  }
3935
3950
  //#endregion
3936
3951
  //#region src/composables/useQueryParamSync.ts
3937
- function xo() {
3938
- let e = je(), t = Me();
3952
+ function Co() {
3953
+ let e = Ne(), t = Pe();
3939
3954
  function n(t) {
3940
3955
  let n = e.query[t];
3941
3956
  return typeof n == "string" ? n : "";
@@ -3956,8 +3971,8 @@ function xo() {
3956
3971
  }
3957
3972
  //#endregion
3958
3973
  //#region src/composables/useFieldClasses.ts
3959
- function So() {
3960
- let { isDark: e } = W(), t = a(() => e.value ? "text-gray-300" : "text-gray-600"), n = a(() => 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");
3974
+ function wo() {
3975
+ let { isDark: e } = U(), t = a(() => e.value ? "text-gray-300" : "text-gray-600"), n = a(() => 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");
3961
3976
  function r(t) {
3962
3977
  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;
3963
3978
  }
@@ -3969,7 +3984,7 @@ function So() {
3969
3984
  }
3970
3985
  //#endregion
3971
3986
  //#region src/composables/usePolling.ts
3972
- function Co(e, t, n = {}) {
3987
+ function To(e, t, n = {}) {
3973
3988
  let { immediate: r = !0, pauseWhenHidden: i = !0 } = n, a = null, o = k(!1), s = !1;
3974
3989
  function c() {
3975
3990
  a === null && t !== null && (a = setInterval(() => void e(), t));
@@ -3992,74 +4007,98 @@ function Co(e, t, n = {}) {
3992
4007
  o.value = !1, l(), s = !0;
3993
4008
  }
3994
4009
  }
3995
- return C(() => {
4010
+ return w(() => {
3996
4011
  u(), i && document.addEventListener("visibilitychange", f);
3997
- }), T(() => {
4012
+ }), E(() => {
3998
4013
  d(), i && document.removeEventListener("visibilitychange", f);
3999
4014
  }), {
4000
4015
  start: u,
4001
4016
  stop: d,
4002
- active: O(o)
4017
+ active: ee(o)
4018
+ };
4019
+ }
4020
+ //#endregion
4021
+ //#region src/composables/useLatestRequest.ts
4022
+ function Eo() {
4023
+ let e = 0, t = null;
4024
+ function n() {
4025
+ let n = ++e;
4026
+ t?.abort();
4027
+ let r = new AbortController();
4028
+ return t = r, {
4029
+ signal: r.signal,
4030
+ isLatest: () => n === e
4031
+ };
4032
+ }
4033
+ function r() {
4034
+ ++e, t?.abort(), t = null;
4035
+ }
4036
+ return g() && T(r), {
4037
+ begin: n,
4038
+ cancel: r
4003
4039
  };
4004
4040
  }
4041
+ function Do(e) {
4042
+ return typeof DOMException < "u" && e instanceof DOMException && e.name === "AbortError" || e instanceof Error && e.name === "AbortError";
4043
+ }
4005
4044
  //#endregion
4006
4045
  //#region src/enums/BaseBadgeEnum.ts
4007
- var wo = /* @__PURE__ */ function(e) {
4046
+ var Oo = /* @__PURE__ */ function(e) {
4008
4047
  return e.WIN = "WIN", e.LOSE = "LOSE", e;
4009
4048
  }({});
4010
4049
  //#endregion
4011
4050
  //#region src/utils/util.ts
4012
- function To(e) {
4051
+ function ko(e) {
4013
4052
  let t = "red";
4014
4053
  switch (e) {
4015
- case V.ERROR:
4054
+ case B.ERROR:
4016
4055
  t = "red";
4017
4056
  break;
4018
- case V.SUCCESS:
4057
+ case B.SUCCESS:
4019
4058
  t = "green";
4020
4059
  break;
4021
- case V.INFO:
4060
+ case B.INFO:
4022
4061
  t = "gray";
4023
4062
  break;
4024
- case V.WARNING: t = "yellow";
4063
+ case B.WARNING: t = "yellow";
4025
4064
  }
4026
4065
  return t;
4027
4066
  }
4028
- function Eo(e) {
4067
+ function Ao(e) {
4029
4068
  let t = "red";
4030
4069
  switch (e) {
4031
- case G.GREEN:
4070
+ case W.GREEN:
4032
4071
  t = "green";
4033
4072
  break;
4034
- case G.RED:
4073
+ case W.RED:
4035
4074
  t = "red";
4036
4075
  break;
4037
- case G.BLUE:
4076
+ case W.BLUE:
4038
4077
  t = "blue";
4039
4078
  break;
4040
- case G.YELLOW:
4079
+ case W.YELLOW:
4041
4080
  t = "yellow";
4042
4081
  break;
4043
- case G.BLACK:
4082
+ case W.BLACK:
4044
4083
  t = "black";
4045
4084
  break;
4046
- case G.GRAY:
4085
+ case W.GRAY:
4047
4086
  t = "gray";
4048
4087
  break;
4049
- case G.NONE: t = "";
4088
+ case W.NONE: t = "";
4050
4089
  }
4051
4090
  return t;
4052
4091
  }
4053
4092
  //#endregion
4054
4093
  //#region src/utils/httpColors.ts
4055
- var Do = {
4094
+ var jo = {
4056
4095
  GET: "bg-blue-600",
4057
4096
  POST: "bg-emerald-600",
4058
4097
  PUT: "bg-amber-600",
4059
4098
  DELETE: "bg-red-600",
4060
4099
  PATCH: "bg-purple-600",
4061
4100
  HEAD: "bg-gray-600"
4062
- }, Oo = {
4101
+ }, Mo = {
4063
4102
  GET: "bg-blue-500",
4064
4103
  POST: "bg-green-500",
4065
4104
  PUT: "bg-yellow-500",
@@ -4067,39 +4106,39 @@ var Do = {
4067
4106
  PATCH: "bg-purple-500",
4068
4107
  HEAD: "bg-gray-500"
4069
4108
  };
4070
- function ko(e) {
4071
- return e ? Do[e.toUpperCase()] ?? "bg-gray-600" : "bg-gray-600";
4109
+ function No(e) {
4110
+ return e ? jo[e.toUpperCase()] ?? "bg-gray-600" : "bg-gray-600";
4072
4111
  }
4073
- function Ao(e) {
4074
- return e ? Oo[e.toUpperCase()] ?? "bg-gray-500" : "bg-gray-500";
4112
+ function Po(e) {
4113
+ return e ? Mo[e.toUpperCase()] ?? "bg-gray-500" : "bg-gray-500";
4075
4114
  }
4076
- function jo(e) {
4115
+ function Fo(e) {
4077
4116
  let t = e ?? 0;
4078
4117
  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";
4079
4118
  }
4080
- function Mo(e, t) {
4119
+ function Io(e, t) {
4081
4120
  let n = (e || "ANY").toUpperCase();
4082
4121
  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";
4083
4122
  }
4084
- function No(e, t) {
4123
+ function Lo(e, t) {
4085
4124
  let n = e ?? 200;
4086
4125
  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";
4087
4126
  }
4088
- function Po(e, t) {
4127
+ function Ro(e, t) {
4089
4128
  let n = e ?? 200;
4090
4129
  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";
4091
4130
  }
4092
4131
  //#endregion
4093
4132
  //#region src/utils/kvRows.ts
4094
- function Fo(e) {
4133
+ function zo(e) {
4095
4134
  return !(e.key ?? "").trim() || e.matcherType === "absent" ? !1 : !(e.value ?? "").trim();
4096
4135
  }
4097
- function Io(e) {
4136
+ function Bo(e) {
4098
4137
  return e.matcherType === "absent" || !(e.value ?? "").trim() ? !1 : !(e.key ?? "").trim();
4099
4138
  }
4100
4139
  //#endregion
4101
4140
  //#region src/utils/sanitizeHtml.ts
4102
- var Lo = /* @__PURE__ */ new Set([
4141
+ var Vo = /* @__PURE__ */ new Set([
4103
4142
  "A",
4104
4143
  "B",
4105
4144
  "STRONG",
@@ -4114,7 +4153,7 @@ var Lo = /* @__PURE__ */ new Set([
4114
4153
  "LI",
4115
4154
  "SPAN",
4116
4155
  "DIV"
4117
- ]), Ro = /* @__PURE__ */ new Set([
4156
+ ]), Ho = /* @__PURE__ */ new Set([
4118
4157
  "SCRIPT",
4119
4158
  "STYLE",
4120
4159
  "IFRAME",
@@ -4122,53 +4161,53 @@ var Lo = /* @__PURE__ */ new Set([
4122
4161
  "EMBED",
4123
4162
  "NOSCRIPT",
4124
4163
  "TEMPLATE"
4125
- ]), zo = { A: /* @__PURE__ */ new Set(["href", "title"]) };
4126
- function Bo(e) {
4164
+ ]), Uo = { A: /* @__PURE__ */ new Set(["href", "title"]) };
4165
+ function Wo(e) {
4127
4166
  let t = e.trim().toLowerCase();
4128
4167
  return t.startsWith("http://") || t.startsWith("https://") || t.startsWith("mailto:") || t.startsWith("tel:") || t.startsWith("/") || t.startsWith("#") || t === "";
4129
4168
  }
4130
- function Vo(e) {
4169
+ function Go(e) {
4131
4170
  if (e.nodeType !== Node.ELEMENT_NODE) return;
4132
4171
  let t = e, n = t.tagName.toUpperCase();
4133
- if (!Lo.has(n)) {
4134
- Ro.has(n) ? t.remove() : t.replaceWith(document.createTextNode(t.textContent ?? ""));
4172
+ if (!Vo.has(n)) {
4173
+ Ho.has(n) ? t.remove() : t.replaceWith(document.createTextNode(t.textContent ?? ""));
4135
4174
  return;
4136
4175
  }
4137
- let r = zo[n] ?? /* @__PURE__ */ new Set();
4176
+ let r = Uo[n] ?? /* @__PURE__ */ new Set();
4138
4177
  for (let e of Array.from(t.attributes)) {
4139
4178
  if (!r.has(e.name.toLowerCase())) {
4140
4179
  t.removeAttribute(e.name);
4141
4180
  continue;
4142
4181
  }
4143
- n === "A" && e.name.toLowerCase() === "href" && !Bo(e.value) && t.removeAttribute(e.name);
4182
+ n === "A" && e.name.toLowerCase() === "href" && !Wo(e.value) && t.removeAttribute(e.name);
4144
4183
  }
4145
4184
  n === "A" && t.hasAttribute("href") && (t.setAttribute("rel", "noopener noreferrer"), t.setAttribute("target", "_blank"));
4146
- for (let e of Array.from(t.childNodes)) Vo(e);
4185
+ for (let e of Array.from(t.childNodes)) Go(e);
4147
4186
  }
4148
- function Ho(e) {
4187
+ function Ko(e) {
4149
4188
  if (!e) return "";
4150
4189
  let t = new DOMParser().parseFromString(`<div>${e}</div>`, "text/html").body.firstElementChild;
4151
4190
  if (!t) return "";
4152
- for (let e of Array.from(t.childNodes)) Vo(e);
4191
+ for (let e of Array.from(t.childNodes)) Go(e);
4153
4192
  return t.innerHTML;
4154
4193
  }
4155
4194
  //#endregion
4156
4195
  //#region src/utils/format.ts
4157
- var Uo = "—";
4158
- function Wo(e, t = 4) {
4159
- if (e == null || typeof e == "string" && e.trim() === "") return Uo;
4196
+ var $ = "—";
4197
+ function qo(e, t = 4) {
4198
+ if (e == null || typeof e == "string" && e.trim() === "") return $;
4160
4199
  let n = typeof e == "string" ? Number(e) : e;
4161
4200
  return isFinite(n) ? n.toLocaleString(void 0, {
4162
4201
  minimumFractionDigits: t,
4163
4202
  maximumFractionDigits: t
4164
- }) : Uo;
4203
+ }) : $;
4165
4204
  }
4166
- function Go(e) {
4167
- if (e == null || e === "") return Uo;
4205
+ function Jo(e) {
4206
+ if (e == null || e === "") return $;
4168
4207
  let t = new Date(e);
4169
4208
  return isNaN(t.getTime()) ? String(e) : t.toLocaleString();
4170
4209
  }
4171
- function Ko(e) {
4210
+ function Yo(e) {
4172
4211
  return new Date(e).toLocaleString(void 0, {
4173
4212
  month: "short",
4174
4213
  day: "numeric",
@@ -4176,13 +4215,13 @@ function Ko(e) {
4176
4215
  minute: "2-digit"
4177
4216
  });
4178
4217
  }
4179
- function qo(e) {
4218
+ function Xo(e) {
4180
4219
  return new Date(e).toLocaleDateString(void 0, {
4181
4220
  month: "short",
4182
4221
  day: "numeric"
4183
4222
  });
4184
4223
  }
4185
- function Jo(e) {
4224
+ function Zo(e) {
4186
4225
  try {
4187
4226
  return new Date(e).toLocaleString(void 0, {
4188
4227
  year: "numeric",
@@ -4198,7 +4237,7 @@ function Jo(e) {
4198
4237
  return String(e);
4199
4238
  }
4200
4239
  }
4201
- function Yo(e) {
4240
+ function Qo(e) {
4202
4241
  if (!isFinite(e) || e === 0) return e.toFixed(2);
4203
4242
  let t = Math.abs(e), n = 2;
4204
4243
  return t < 1e-4 ? n = 8 : t < .01 ? n = 6 : t < 1 ? n = 4 : t < 100 && (n = 3), e.toLocaleString(void 0, {
@@ -4206,14 +4245,24 @@ function Yo(e) {
4206
4245
  maximumFractionDigits: n
4207
4246
  });
4208
4247
  }
4209
- function Xo(e, t = 2) {
4248
+ function $o(e, t = 2) {
4210
4249
  return `${e >= 0 ? "+" : ""}${e.toFixed(t)}%`;
4211
4250
  }
4212
- function Zo(e) {
4251
+ function es(e) {
4213
4252
  return `${e < 0 ? "-" : "+"}$${Math.abs(e).toFixed(2)}`;
4214
4253
  }
4215
- function Qo(e) {
4216
- if (e == null || e === "") return Uo;
4254
+ function ts(e, t = 2, n = "$") {
4255
+ if (e == null || typeof e == "string" && e.trim() === "") return $;
4256
+ let r = typeof e == "string" ? Number(e) : e;
4257
+ if (!isFinite(r)) return $;
4258
+ let i = Math.abs(r).toLocaleString(void 0, {
4259
+ minimumFractionDigits: t,
4260
+ maximumFractionDigits: t
4261
+ });
4262
+ return `${r < 0 && Number(Math.abs(r).toFixed(t)) !== 0 ? "-" : ""}${n}${i}`;
4263
+ }
4264
+ function ns(e) {
4265
+ if (e == null || e === "") return $;
4217
4266
  let t = new Date(e);
4218
4267
  return isNaN(t.getTime()) ? String(e) : t.toLocaleDateString("en-US", {
4219
4268
  year: "numeric",
@@ -4221,8 +4270,8 @@ function Qo(e) {
4221
4270
  day: "numeric"
4222
4271
  });
4223
4272
  }
4224
- function $o(e) {
4225
- if (e == null || e === "") return Uo;
4273
+ function rs(e) {
4274
+ if (e == null || e === "") return $;
4226
4275
  let t = new Date(e);
4227
4276
  return isNaN(t.getTime()) ? String(e) : t.toLocaleDateString("en-US", {
4228
4277
  year: "numeric",
@@ -4232,22 +4281,22 @@ function $o(e) {
4232
4281
  minute: "2-digit"
4233
4282
  });
4234
4283
  }
4235
- function es(e) {
4284
+ function is(e) {
4236
4285
  if (typeof e != "number" || !isFinite(e) || e <= 0) return "";
4237
4286
  let t = e / 1e3, n = t < 1 ? 3 : 2;
4238
4287
  return `= ${t.toFixed(n)} s`;
4239
4288
  }
4240
- function ts(e) {
4289
+ function as(e) {
4241
4290
  return e ? e < 1024 ? `${e} B` : e < 1048576 ? `${(e / 1024).toFixed(1)} KB` : `${(e / 1048576).toFixed(1)} MB` : "";
4242
4291
  }
4243
- function ns(e) {
4292
+ function os(e) {
4244
4293
  try {
4245
4294
  return JSON.stringify(JSON.parse(e), null, 2);
4246
4295
  } catch {
4247
4296
  return e;
4248
4297
  }
4249
4298
  }
4250
- function rs(e) {
4299
+ function ss(e) {
4251
4300
  if (e == null) return "";
4252
4301
  if (typeof e == "string") return e;
4253
4302
  try {
@@ -4256,14 +4305,14 @@ function rs(e) {
4256
4305
  return String(e);
4257
4306
  }
4258
4307
  }
4259
- function is(e, t = 2) {
4260
- if (e == null || !isFinite(e)) return Uo;
4308
+ function cs(e, t = 2) {
4309
+ if (e == null || !isFinite(e)) return $;
4261
4310
  let n = Math.floor(Math.max(0, e) / 6e4), r = Math.floor(n / 1440), i = Math.floor(n % 1440 / 60), a = n % 60, o = [];
4262
4311
  return r > 0 && o.push(`${r}d`), (r > 0 || i > 0) && o.push(`${i}h`), o.push(`${a}m`), o.slice(0, t).join(" ");
4263
4312
  }
4264
4313
  //#endregion
4265
4314
  //#region src/utils/validate.ts
4266
- function as(e) {
4315
+ function ls(e) {
4267
4316
  let t = (e ?? "").trim();
4268
4317
  if (!t) return !1;
4269
4318
  try {
@@ -4273,7 +4322,7 @@ function as(e) {
4273
4322
  return !1;
4274
4323
  }
4275
4324
  }
4276
- function os(e) {
4325
+ function us(e) {
4277
4326
  if (!e.trim()) return !0;
4278
4327
  try {
4279
4328
  return JSON.parse(e), !0;
@@ -4281,7 +4330,7 @@ function os(e) {
4281
4330
  return !1;
4282
4331
  }
4283
4332
  }
4284
- function ss(e) {
4333
+ function ds(e) {
4285
4334
  if (!e.trim()) return !0;
4286
4335
  try {
4287
4336
  return !new DOMParser().parseFromString(e, "application/xml").getElementsByTagName("parsererror").length;
@@ -4289,7 +4338,7 @@ function ss(e) {
4289
4338
  return !1;
4290
4339
  }
4291
4340
  }
4292
- function cs(e) {
4341
+ function fs(e) {
4293
4342
  if (!e.trim()) return !0;
4294
4343
  let t = e.replace(/\s+/g, "");
4295
4344
  if (!t) return !0;
@@ -4302,7 +4351,7 @@ function cs(e) {
4302
4351
  }
4303
4352
  //#endregion
4304
4353
  //#region src/utils/specForm.ts
4305
- function ls(e, t) {
4354
+ function ps(e, t) {
4306
4355
  let n = {};
4307
4356
  if (!e) return n;
4308
4357
  for (let r of e) {
@@ -4311,7 +4360,7 @@ function ls(e, t) {
4311
4360
  }
4312
4361
  return n;
4313
4362
  }
4314
- function us(e, t) {
4363
+ function ms(e, t) {
4315
4364
  if (!e) return null;
4316
4365
  for (let n of e) if (n.type === "decimal" || n.type === "integer") {
4317
4366
  let e = t[n.key], r = e === "" || e == null;
@@ -4322,7 +4371,7 @@ function us(e, t) {
4322
4371
  }
4323
4372
  //#endregion
4324
4373
  //#region src/utils/pnl.ts
4325
- function ds(e) {
4374
+ function hs(e) {
4326
4375
  if (e.buyPrice == null || e.lastPrice == null || e.filledQty == null) return {
4327
4376
  pnlUsd: null,
4328
4377
  pnlPct: null
@@ -4337,4 +4386,4 @@ function ds(e) {
4337
4386
  };
4338
4387
  }
4339
4388
  //#endregion
4340
- export { V as AlertEnum, Er as BaseActionButton, ze as BaseAlert, gr as BaseAppLayout, uo as BaseAuthLayout, Ue as BaseBadge, wo as BaseBadgeEnum, ya as BaseBarDistribution, mo as BaseBooleanBadge, qe as BaseBreadcrumb, nt as BaseButton, K as BaseButtonEnum, q as BaseButtonSizeEnum, La as BaseCard, Qa as BaseCheckbox, $r as BaseChipButton, si as BaseCodeBlock, Cn as BaseCollapsibleSection, Dn as BaseConfirmModal, Or as BaseCopyButton, ia as BaseCredentialsForm, ba as BaseDateTimePicker, vo as BaseDetailList, gi as BaseDropdown, pr as BaseEntityPickerModal, Ha as BaseField, oi as BaseFileDropzone, Vi as BaseFilterChip, Mr as BaseGoogleSignInButton, li as BaseInput, st as BaseLine, ct as BaseLoginEnum, Wr as BaseLoginForm, jt as BaseLogo, J as BaseLogoEnum, Rt as BaseModal, Mt as BaseModalEnum, bn as BaseModalShell, Pn as BaseNotFoundPage, Zr as BaseNotificationPanel, br as BasePageHeader, ma as BasePillPickerModal, ei as BaseRemoveButton, zt as BaseRow, ka as BaseSearchSelect, bi as BaseSegmentedControl, di as BaseSelect, er as BaseSidebar, io as BaseSidebarUser, Ii as BaseSpecFields, Bt as BaseSpinner, zi as BaseStatBreakdown, Ka as BaseStatCard, ri as BaseStatusPill, Oi as BaseTable, jn as BaseTextInputModal, Ut as BaseToast, Y as BaseToastEnum, Ya as BaseToggle, Cr as BaseToolbarButton, Gt as ColoredSquares, G as ColorsEnums, Jt as EarningsCard, $t as EuroAmount, rt as LineEnum, an as Pagination, X as PositioningEnum, un as TrendArrow, ls as buildSpecParams, ds as computePnL, us as firstInvalidNumericSpec, ts as fmtBytes, Qo as fmtCalendarDate, $o as fmtCalendarDateTime, Go as fmtDate, qo as fmtDateShort, Ko as fmtDateTime, Jo as fmtDateTimeMs, is as fmtDuration, es as fmtMsAsSeconds, Wo as fmtNumber, Xo as fmtPct, Yo as fmtPrice, Zo as fmtUsd, ns as formatJson, To as getBaseColor, Eo as getBaseColorOf, Be as humanizeEnum, Ve as humanizeTextVNodes, Ie as initTheme, Bo as isSafeHref, as as isValidAbsoluteUrl, cs as isValidBase64, os as isValidJson, ss as isValidXml, Ao as methodBadgeBright, ko as methodBadgeSolid, Mo as methodBadgeTinted, Io as rowKeyMissing, Fo as rowValueMissing, Ho as sanitizeHtml, No as statusBadgeSoft, jo as statusBadgeSolid, Po as statusBadgeTinted, rs as stringifyValue, yo as useDebouncedRef, dn as useEscapeKey, So as useFieldClasses, In as useMobileSidebar, Un as useNotifications, Co as usePolling, xo as useQueryParamSync, Bn as useSidebarCollapse, W as useTheme, Z as useThemeClasses, bo as useToast };
4389
+ export { B as AlertEnum, Or as BaseActionButton, Ve as BaseAlert, vr as BaseAppLayout, po as BaseAuthLayout, Ge as BaseBadge, Oo as BaseBadgeEnum, xa as BaseBarDistribution, go as BaseBooleanBadge, Ye as BaseBreadcrumb, it as BaseButton, G as BaseButtonEnum, K as BaseButtonSizeEnum, za as BaseCard, eo as BaseCheckbox, ti as BaseChipButton, li as BaseCodeBlock, Tn as BaseCollapsibleSection, kn as BaseConfirmModal, Ar as BaseCopyButton, oa as BaseCredentialsForm, Sa as BaseDateTimePicker, bo as BaseDetailList, vi as BaseDropdown, hr as BaseEntityPickerModal, Wa as BaseField, ci as BaseFileDropzone, Ui as BaseFilterChip, Pr as BaseGoogleSignInButton, di as BaseInput, lt as BaseLine, ut as BaseLoginEnum, Kr as BaseLoginForm, Nt as BaseLogo, q as BaseLogoEnum, Bt as BaseModal, Pt as BaseModalEnum, Sn as BaseModalShell, In as BaseNotFoundPage, $r as BaseNotificationPanel, Sr as BasePageHeader, ga as BasePillPickerModal, ni as BaseRemoveButton, Vt as BaseRow, ja as BaseSearchSelect, Si as BaseSegmentedControl, pi as BaseSelect, nr as BaseSidebar, oo as BaseSidebarUser, Ri as BaseSpecFields, Ht as BaseSpinner, Vi as BaseStatBreakdown, Ja as BaseStatCard, ai as BaseStatusPill, Ai as BaseTable, Nn as BaseTextInputModal, Gt as BaseToast, J as BaseToastEnum, Za as BaseToggle, Tr as BaseToolbarButton, qt as ColoredSquares, W as ColorsEnums, Xt as EarningsCard, tn as EuroAmount, at as LineEnum, sn as Pagination, Y as PositioningEnum, fn as TrendArrow, ps as buildSpecParams, hs as computePnL, ms as firstInvalidNumericSpec, as as fmtBytes, ns as fmtCalendarDate, rs as fmtCalendarDateTime, Jo as fmtDate, Xo as fmtDateShort, Yo as fmtDateTime, Zo as fmtDateTimeMs, cs as fmtDuration, ts as fmtMoney, is as fmtMsAsSeconds, qo as fmtNumber, $o as fmtPct, Qo as fmtPrice, es as fmtUsd, os as formatJson, ko as getBaseColor, Ao as getBaseColorOf, He as humanizeEnum, Ue as humanizeTextVNodes, Re as initTheme, Do as isAbortError, Wo as isSafeHref, ls as isValidAbsoluteUrl, fs as isValidBase64, us as isValidJson, ds as isValidXml, Po as methodBadgeBright, No as methodBadgeSolid, Io as methodBadgeTinted, Bo as rowKeyMissing, zo as rowValueMissing, Ko as sanitizeHtml, Lo as statusBadgeSoft, Fo as statusBadgeSolid, Ro as statusBadgeTinted, ss as stringifyValue, xo as useDebouncedRef, pn as useEscapeKey, wo as useFieldClasses, Eo as useLatestRequest, Rn as useMobileSidebar, Gn as useNotifications, To as usePolling, Co as useQueryParamSync, Hn as useSidebarCollapse, U as useTheme, X as useThemeClasses, So as useToast };