@vasakgroup/vue-libvasak 1.2.0 → 1.4.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.
@@ -1,63 +1,119 @@
1
- import { ref as w, onMounted as X, onUnmounted as ce, readonly as it, watch as W, defineComponent as E, toRef as Ae, computed as v, createElementBlock as i, unref as R, openBlock as r, normalizeStyle as se, createCommentVNode as x, createElementVNode as T, createVNode as O, toDisplayString as V, normalizeClass as h, renderSlot as S, createBlock as Q, onBeforeUnmount as de, Fragment as Z, renderList as le, withCtx as K, mergeModels as Se, useAttrs as Ce, useId as st, useModel as ut, withDirectives as ze, mergeProps as re, isRef as ct, vModelSelect as dt, inject as pe, getCurrentInstance as Re, provide as fe, createTextVNode as Le, toHandlers as qe, createSlots as ft, withModifiers as M, withKeys as F, Teleport as me, Transition as ye, nextTick as Y, TransitionGroup as mt, vShow as Ne, cloneVNode as bt, h as vt, Comment as pt, Text as yt } from "vue";
2
- import { listen as gt } from "@tauri-apps/api/event";
3
- import { getSymbolSource as ht, getIconSource as xt } from "@vasakgroup/plugin-vicons";
4
- import { getCurrentWindow as wt } from "@tauri-apps/api/window";
5
- import { useI18n as kt } from "@vasakgroup/tauri-plugin-i18n";
6
- const $t = "vicons:theme-changed", ve = /* @__PURE__ */ new Map(), ae = /* @__PURE__ */ new Map(), oe = w(0);
7
- let ne = 0, ue = null, te = null;
8
- function Bl() {
9
- ve.clear(), ae.clear(), ne = 0, ue = null, te = null, oe.value = 0;
1
+ import { ref as w, onMounted as W, onUnmounted as ve, readonly as vt, watch as Q, defineComponent as D, toRef as Pe, useTemplateRef as pt, computed as v, createElementBlock as r, unref as F, openBlock as i, normalizeStyle as fe, createCommentVNode as x, createElementVNode as B, createVNode as O, toDisplayString as M, normalizeClass as y, renderSlot as S, createBlock as U, onBeforeUnmount as pe, Fragment as te, renderList as ue, withCtx as G, mergeModels as Re, useAttrs as Be, useId as yt, useModel as gt, withDirectives as Se, mergeProps as ce, isRef as ht, vModelSelect as xt, inject as we, getCurrentInstance as Ge, provide as ye, createTextVNode as Me, toHandlers as Qe, createSlots as wt, withModifiers as V, withKeys as R, Teleport as ge, Transition as ke, nextTick as J, TransitionGroup as kt, vShow as Ye, cloneVNode as $t, h as Ct, Comment as zt, Text as Et } from "vue";
2
+ import { listen as Lt } from "@tauri-apps/api/event";
3
+ import { getSymbolSource as Dt, getIconSource as Tt } from "@vasakgroup/plugin-vicons";
4
+ import { getCurrentWindow as At } from "@tauri-apps/api/window";
5
+ import { useI18n as Bt } from "@vasakgroup/tauri-plugin-i18n";
6
+ const St = "vicons:theme-changed", xe = /* @__PURE__ */ new Map(), re = /* @__PURE__ */ new Map(), me = w(0);
7
+ let se = 0, be = null, ie = null;
8
+ function Ql() {
9
+ xe.clear(), re.clear(), se = 0, be = null, ie = null, me.value = 0, ae.clear(), ne.clear(), Xe = 0, ee?.disconnect(), ee = null, De = !1, X !== null && (clearTimeout(X), X = null), _ && (_.cancelado = !0), _ = null;
10
10
  }
11
- function Ct() {
12
- ve.clear(), ae.clear(), oe.value++;
11
+ const Mt = 100, ze = 10, Vt = 16, ae = /* @__PURE__ */ new Map(), ne = /* @__PURE__ */ new Set();
12
+ let Xe = 0, ee = null, De = !1;
13
+ function It() {
14
+ return De ? ee : (De = !0, typeof IntersectionObserver > "u" ? null : (ee = new IntersectionObserver(
15
+ (e) => {
16
+ for (const n of e) {
17
+ const t = n.target.dataset?.iconoId;
18
+ if (t == null) continue;
19
+ const a = Number.parseInt(t, 10);
20
+ n.isIntersecting ? ne.add(a) : ne.delete(a);
21
+ }
22
+ },
23
+ { threshold: 0 }
24
+ ), ee));
25
+ }
26
+ function Ot(e) {
27
+ const n = Xe++;
28
+ return ae.set(n, { recargar: e, elemento: null }), ne.add(n), n;
29
+ }
30
+ function jt(e, n) {
31
+ const t = ae.get(e);
32
+ if (!t || t.elemento === n || (t.elemento && (ee?.unobserve(t.elemento), delete t.elemento.dataset.iconoId, t.elemento = null), !n)) return;
33
+ const a = It();
34
+ a && (t.elemento = n, n.dataset.iconoId = String(e), a.observe(n));
35
+ }
36
+ function Pt(e) {
37
+ const n = ae.get(e);
38
+ n?.elemento && (ee?.unobserve(n.elemento), delete n.elemento.dataset.iconoId), ne.delete(e), ae.delete(e);
39
+ }
40
+ let X = null, _ = null;
41
+ function Rt(e) {
42
+ return new Promise((n) => setTimeout(n, e));
43
+ }
44
+ async function Ft(e) {
45
+ const n = [...ae.keys()], t = n.filter((l) => ne.has(l)), a = n.filter((l) => !ne.has(l));
46
+ for (const l of [t, a])
47
+ for (let o = 0; o < l.length; o += ze) {
48
+ if (e.cancelado) return;
49
+ const s = l.slice(o, o + ze);
50
+ if (await Promise.allSettled(
51
+ s.map((u) => ae.get(u)?.recargar() ?? Promise.resolve())
52
+ ), e.cancelado) return;
53
+ (o + ze < l.length || l === t) && await Rt(Vt);
54
+ }
55
+ _ === e && (_ = null);
56
+ }
57
+ function Nt() {
58
+ X !== null && (clearTimeout(X), X = null), _ && (_.cancelado = !0);
59
+ const e = { cancelado: !1 };
60
+ _ = e, Ft(e);
61
+ }
62
+ function qt() {
63
+ xe.clear(), re.clear(), me.value++, X !== null && clearTimeout(X), X = setTimeout(() => {
64
+ X = null, Nt();
65
+ }, Mt);
13
66
  }
14
- function He() {
15
- return ne++, ue || te ? te ?? Promise.resolve() : (te = gt($t, Ct).then((e) => {
16
- ne <= 0 ? e() : ue = e, te = null;
17
- }), te);
67
+ function Je() {
68
+ return se++, be || ie ? ie ?? Promise.resolve() : (ie = Lt(St, qt).then((e) => {
69
+ se <= 0 ? e() : be = e, ie = null;
70
+ }), ie);
18
71
  }
19
- function ke() {
20
- ne--, !(ne > 0) && (ne = 0, ue?.(), ue = null);
72
+ function Te() {
73
+ se--, !(se > 0) && (se = 0, be?.(), be = null);
21
74
  }
22
- function zt(e, n) {
23
- const t = `${n}:${e}`, a = ve.get(t);
75
+ function Ht(e, n) {
76
+ const t = `${n}:${e}`, a = xe.get(t);
24
77
  if (a !== void 0)
25
78
  return Promise.resolve(a);
26
- const l = ae.get(t);
79
+ const l = re.get(t);
27
80
  if (l)
28
81
  return l;
29
- const o = oe.value, s = (n === "symbol" ? ht(e) : xt(e)).then((u) => (oe.value === o && ve.set(t, u), u)).finally(() => {
30
- ae.get(t) === s && ae.delete(t);
82
+ const o = me.value, s = (n === "symbol" ? Dt(e) : Tt(e)).then((u) => (me.value === o && xe.set(t, u), u)).finally(() => {
83
+ re.get(t) === s && re.delete(t);
31
84
  });
32
- return ae.set(t, s), s;
85
+ return re.set(t, s), s;
33
86
  }
34
- function Al() {
87
+ function Yl() {
35
88
  let e = !1;
36
- return X(async () => {
37
- await He(), e && ke();
38
- }), ce(() => {
39
- e || (e = !0, ke());
40
- }), it(oe);
89
+ return W(async () => {
90
+ await Je(), e && Te();
91
+ }), ve(() => {
92
+ e || (e = !0, Te());
93
+ }), vt(me);
41
94
  }
42
- function Lt(e, n) {
95
+ function Ut(e, n) {
43
96
  const t = w("");
44
97
  let a = !1, l = 0;
45
- async function o() {
46
- const s = ++l, u = e.value;
47
- if (!u) {
98
+ const o = Ot(async () => {
99
+ await s();
100
+ });
101
+ async function s() {
102
+ const u = ++l, m = e.value;
103
+ if (!m) {
48
104
  t.value = "";
49
105
  return;
50
106
  }
51
- const m = await zt(u, n.value);
52
- s === l && !a && (t.value = m);
107
+ const f = await Ht(m, n.value);
108
+ u === l && !a && (t.value = f);
53
109
  }
54
- return X(async () => {
55
- await He(), a || await o();
56
- }), ce(() => {
57
- a = !0, ke();
58
- }), W([e, n], o), W(oe, o), t;
110
+ return W(async () => {
111
+ await Je(), a || await s();
112
+ }), ve(() => {
113
+ a = !0, Pt(o), Te();
114
+ }), Q([e, n], s), { fuente: t, mirarElemento: (u) => jt(o, u) };
59
115
  }
60
- const Dt = ["src", "alt"], H = /* @__PURE__ */ E({
116
+ const Kt = ["src", "alt"], N = /* @__PURE__ */ D({
61
117
  __name: "ThemeIcon",
62
118
  props: {
63
119
  name: {},
@@ -66,23 +122,29 @@ const Dt = ["src", "alt"], H = /* @__PURE__ */ E({
66
122
  alt: { default: "" }
67
123
  },
68
124
  setup(e) {
69
- const n = e, t = Lt(Ae(n, "name"), Ae(n, "type")), a = v(() => `${n.size}px`);
70
- return (l, o) => R(t) ? (r(), i("img", {
125
+ const n = e, { fuente: t, mirarElemento: a } = Ut(Pe(n, "name"), Pe(n, "type")), l = pt("dibujo");
126
+ Q(l, (s) => a(s), { immediate: !0 });
127
+ const o = v(() => `${n.size}px`);
128
+ return (s, u) => F(t) ? (i(), r("img", {
71
129
  key: 0,
72
- src: R(t),
130
+ ref_key: "dibujo",
131
+ ref: l,
132
+ src: F(t),
73
133
  alt: e.alt,
74
- style: se({ width: a.value, height: a.value }),
134
+ style: fe({ width: o.value, height: o.value }),
75
135
  class: "shrink-0 object-contain"
76
- }, null, 12, Dt)) : (r(), i("span", {
136
+ }, null, 12, Kt)) : (i(), r("span", {
77
137
  key: 1,
78
- style: se({ width: a.value, height: a.value }),
138
+ ref_key: "dibujo",
139
+ ref: l,
140
+ style: fe({ width: o.value, height: o.value }),
79
141
  class: "shrink-0"
80
142
  }, null, 4));
81
143
  }
82
- }), Et = { class: "flex flex-col gap-2" }, Tt = ["aria-expanded"], Bt = {
144
+ }), Wt = { class: "flex flex-col gap-2" }, Gt = ["aria-expanded"], Qt = {
83
145
  key: 1,
84
146
  class: "flex flex-col gap-1"
85
- }, Ue = /* @__PURE__ */ E({
147
+ }, Ze = /* @__PURE__ */ D({
86
148
  __name: "SideGroup",
87
149
  props: {
88
150
  title: {},
@@ -91,39 +153,39 @@ const Dt = ["src", "alt"], H = /* @__PURE__ */ E({
91
153
  },
92
154
  setup(e) {
93
155
  const n = e, t = w(n.defaultOpen);
94
- return W(
156
+ return Q(
95
157
  () => n.collapsed,
96
158
  (a) => {
97
159
  a && (t.value = !0);
98
160
  }
99
- ), (a, l) => (r(), i("section", Et, [
100
- e.collapsed ? x("", !0) : (r(), i("button", {
161
+ ), (a, l) => (i(), r("section", Wt, [
162
+ e.collapsed ? x("", !0) : (i(), r("button", {
101
163
  key: 0,
102
164
  type: "button",
103
165
  class: "group flex w-full items-center justify-between rounded-corner px-2 py-1 text-tx-muted text-xs uppercase tracking-[0.08em] hover:bg-ui-surface/60",
104
166
  "aria-expanded": t.value,
105
167
  onClick: l[0] || (l[0] = (o) => t.value = !t.value)
106
168
  }, [
107
- T("span", null, V(e.title), 1),
108
- O(H, {
169
+ B("span", null, M(e.title), 1),
170
+ O(N, {
109
171
  name: "pan-down-symbolic",
110
172
  type: "symbol",
111
173
  size: 12,
112
- class: h(["transition-transform duration-200", t.value ? "" : "-rotate-90"])
174
+ class: y(["transition-transform duration-200", t.value ? "" : "-rotate-90"])
113
175
  }, null, 8, ["class"])
114
- ], 8, Tt)),
115
- t.value || e.collapsed ? (r(), i("div", Bt, [
176
+ ], 8, Gt)),
177
+ t.value || e.collapsed ? (i(), r("div", Qt, [
116
178
  S(a.$slots, "default")
117
179
  ])) : x("", !0)
118
180
  ]));
119
181
  }
120
- }), At = ["title", "aria-label", "disabled", "aria-current"], St = { key: 1 }, Vt = {
182
+ }), Yt = ["title", "aria-label", "disabled", "aria-current"], Xt = { key: 1 }, Jt = {
121
183
  key: 0,
122
184
  class: "min-w-0 flex-1 truncate font-medium"
123
- }, Mt = {
185
+ }, Zt = {
124
186
  key: 1,
125
187
  class: "rounded-corner bg-ui-surface px-2 py-0.5 font-semibold text-tx-muted text-xs"
126
- }, Ke = /* @__PURE__ */ E({
188
+ }, _e = /* @__PURE__ */ D({
127
189
  __name: "SideButton",
128
190
  props: {
129
191
  label: {},
@@ -135,49 +197,49 @@ const Dt = ["src", "alt"], H = /* @__PURE__ */ E({
135
197
  },
136
198
  emits: ["click"],
137
199
  setup(e) {
138
- return (n, t) => (r(), i("button", {
200
+ return (n, t) => (i(), r("button", {
139
201
  type: "button",
140
202
  title: e.collapsed ? e.label : void 0,
141
203
  "aria-label": e.collapsed ? e.label : void 0,
142
204
  disabled: e.disabled,
143
205
  "aria-current": e.active ? "page" : void 0,
144
- class: h(["group relative flex w-full items-center gap-3 rounded-corner border px-3 py-2 text-left text-sm transition-[color,background-color,border-color,scale] duration-200 active:scale-[0.98]", [
206
+ class: y(["group relative flex w-full items-center gap-3 rounded-corner border px-3 py-2 text-left text-sm transition-[color,background-color,border-color,scale] duration-200 active:scale-[0.98]", [
145
207
  e.active ? "border-secondary bg-primary/15 text-tx-main shadow-sm" : "border-transparent bg-transparent hover:border-ui-border hover:bg-ui-surface/70",
146
208
  e.disabled ? "cursor-not-allowed opacity-60" : "cursor-pointer",
147
209
  e.collapsed ? "justify-center px-2" : ""
148
210
  ]]),
149
211
  onClick: t[0] || (t[0] = (a) => n.$emit("click"))
150
212
  }, [
151
- T("span", {
152
- class: h(["flex h-8 w-8 shrink-0 items-center justify-center rounded-corner font-semibold text-xs uppercase tracking-wide", e.active ? "border-secondary bg-primary/20" : ""]),
213
+ B("span", {
214
+ class: y(["flex h-8 w-8 shrink-0 items-center justify-center rounded-corner font-semibold text-xs uppercase tracking-wide", e.active ? "border-secondary bg-primary/20" : ""]),
153
215
  "aria-hidden": "true"
154
216
  }, [
155
- e.icon ? (r(), Q(H, {
217
+ e.icon ? (i(), U(N, {
156
218
  key: 0,
157
219
  name: e.icon,
158
220
  size: 20
159
- }, null, 8, ["name"])) : (r(), i("span", St, V(e.label.charAt(0).toUpperCase()), 1))
221
+ }, null, 8, ["name"])) : (i(), r("span", Xt, M(e.label.charAt(0).toUpperCase()), 1))
160
222
  ], 2),
161
- e.collapsed ? x("", !0) : (r(), i("span", Vt, V(e.label), 1)),
162
- !e.collapsed && e.badge !== "" ? (r(), i("span", Mt, V(e.badge), 1)) : x("", !0)
163
- ], 10, At));
223
+ e.collapsed ? x("", !0) : (i(), r("span", Jt, M(e.label), 1)),
224
+ !e.collapsed && e.badge !== "" ? (i(), r("span", Zt, M(e.badge), 1)) : x("", !0)
225
+ ], 10, Yt));
164
226
  }
165
- }), It = {
227
+ }), _t = {
166
228
  key: 0,
167
229
  class: "flex flex-col gap-2 border-ui-border border-b p-2"
168
- }, Ot = { class: "flex items-center gap-2" }, jt = ["aria-label", "aria-expanded"], Pt = {
230
+ }, ea = { class: "flex items-center gap-2" }, ta = ["aria-label", "aria-expanded"], aa = {
169
231
  key: 0,
170
232
  class: "min-w-0 flex-1"
171
- }, Ft = {
233
+ }, na = {
172
234
  key: 0,
173
235
  class: "truncate font-semibold text-sm"
174
- }, Rt = {
236
+ }, la = {
175
237
  key: 1,
176
238
  class: "truncate text-tx-muted text-xs"
177
- }, qt = { key: 0 }, Nt = {
239
+ }, oa = { key: 0 }, ia = {
178
240
  key: 1,
179
241
  class: "flex border-ui-border border-b p-2"
180
- }, Ht = ["aria-label", "aria-expanded"], Ut = { class: "flex min-h-0 flex-1 flex-col gap-3 overflow-y-auto p-2" }, Ve = "hidden h-8 w-8 shrink-0 items-center justify-center rounded-corner border border-ui-border bg-ui-surface/70 transition-colors hover:bg-ui-surface md:inline-flex", Me = 767, Kt = /* @__PURE__ */ E({
242
+ }, ra = ["aria-label", "aria-expanded"], sa = { class: "flex min-h-0 flex-1 flex-col gap-3 overflow-y-auto p-2" }, Fe = "hidden h-8 w-8 shrink-0 items-center justify-center rounded-corner border border-ui-border bg-ui-surface/70 transition-colors hover:bg-ui-surface md:inline-flex", Ne = 767, ua = /* @__PURE__ */ D({
181
243
  __name: "SideBar",
182
244
  props: {
183
245
  title: { default: "" },
@@ -194,84 +256,84 @@ const Dt = ["src", "alt"], H = /* @__PURE__ */ E({
194
256
  let u = null, m = null;
195
257
  const f = v(() => s.value || o.value), d = v(() => !!(a.title || a.subtitle));
196
258
  v(() => a.categories.length > 0);
197
- function L() {
259
+ function E() {
198
260
  return document.documentElement?.clientWidth || window.innerWidth;
199
261
  }
200
- function D() {
201
- s.value = L() <= Me;
262
+ function L() {
263
+ s.value = E() <= Ne;
202
264
  }
203
265
  function A() {
204
266
  o.value = !o.value, l("update:collapsed", o.value);
205
267
  }
206
- function y($) {
268
+ function g($) {
207
269
  l("update:modelValue", $), l("change", $);
208
270
  }
209
- return W(
271
+ return Q(
210
272
  () => a.collapsed,
211
273
  ($) => {
212
274
  $ !== void 0 && (o.value = $);
213
275
  }
214
- ), X(() => {
215
- u = window.matchMedia(`(max-width: ${Me}px)`), D(), u.addEventListener("change", D), window.addEventListener("resize", D), typeof ResizeObserver < "u" && document.documentElement && (m = new ResizeObserver(D), m.observe(document.documentElement));
216
- }), de(() => {
217
- u?.removeEventListener("change", D), window.removeEventListener("resize", D), m?.disconnect(), m = null;
218
- }), n({ collapsed: f }), ($, j) => (r(), i("aside", {
219
- class: h(["relative z-30 flex h-full shrink-0 flex-col rounded-corner border border-ui-border bg-ui-surface/70 transition-[width] duration-300", ["w-[84px]", f.value ? "md:w-[84px]" : "md:w-72"]])
276
+ ), W(() => {
277
+ u = window.matchMedia(`(max-width: ${Ne}px)`), L(), u.addEventListener("change", L), window.addEventListener("resize", L), typeof ResizeObserver < "u" && document.documentElement && (m = new ResizeObserver(L), m.observe(document.documentElement));
278
+ }), pe(() => {
279
+ u?.removeEventListener("change", L), window.removeEventListener("resize", L), m?.disconnect(), m = null;
280
+ }), n({ collapsed: f }), ($, j) => (i(), r("aside", {
281
+ class: y(["relative z-30 flex h-full shrink-0 flex-col rounded-corner border border-ui-border bg-ui-surface/70 transition-[width] duration-300", ["w-[84px]", f.value ? "md:w-[84px]" : "md:w-72"]])
220
282
  }, [
221
- d.value || $.$slots.header ? (r(), i("header", It, [
222
- T("div", Ot, [
223
- T("button", {
283
+ d.value || $.$slots.header ? (i(), r("header", _t, [
284
+ B("div", ea, [
285
+ B("button", {
224
286
  type: "button",
225
- class: h(Ve),
287
+ class: y(Fe),
226
288
  "aria-label": f.value ? e.expandLabel : e.collapseLabel,
227
289
  "aria-expanded": !f.value,
228
290
  onClick: A
229
291
  }, [
230
- O(H, {
292
+ O(N, {
231
293
  name: f.value ? "pan-end-symbolic" : "pan-start-symbolic",
232
294
  type: "symbol",
233
295
  size: 16
234
296
  }, null, 8, ["name"])
235
- ], 8, jt),
236
- d.value && !f.value ? (r(), i("div", Pt, [
237
- e.title ? (r(), i("p", Ft, V(e.title), 1)) : x("", !0),
238
- e.subtitle ? (r(), i("p", Rt, V(e.subtitle), 1)) : x("", !0)
297
+ ], 8, ta),
298
+ d.value && !f.value ? (i(), r("div", aa, [
299
+ e.title ? (i(), r("p", na, M(e.title), 1)) : x("", !0),
300
+ e.subtitle ? (i(), r("p", la, M(e.subtitle), 1)) : x("", !0)
239
301
  ])) : x("", !0)
240
302
  ]),
241
- $.$slots.header && !f.value ? (r(), i("div", qt, [
303
+ $.$slots.header && !f.value ? (i(), r("div", oa, [
242
304
  S($.$slots, "header", { collapsed: f.value })
243
305
  ])) : x("", !0)
244
- ])) : (r(), i("div", Nt, [
245
- T("button", {
306
+ ])) : (i(), r("div", ia, [
307
+ B("button", {
246
308
  type: "button",
247
- class: h(Ve),
309
+ class: y(Fe),
248
310
  "aria-label": f.value ? e.expandLabel : e.collapseLabel,
249
311
  "aria-expanded": !f.value,
250
312
  onClick: A
251
313
  }, [
252
- O(H, {
314
+ O(N, {
253
315
  name: f.value ? "pan-end-symbolic" : "pan-start-symbolic",
254
316
  type: "symbol",
255
317
  size: 16
256
318
  }, null, 8, ["name"])
257
- ], 8, Ht)
319
+ ], 8, ra)
258
320
  ])),
259
- T("div", Ut, [
260
- (r(!0), i(Z, null, le(e.categories, (C) => (r(), Q(Ue, {
321
+ B("div", sa, [
322
+ (i(!0), r(te, null, ue(e.categories, (C) => (i(), U(Ze, {
261
323
  key: C.id,
262
324
  title: C.title,
263
325
  collapsed: f.value
264
326
  }, {
265
- default: K(() => [
266
- (r(!0), i(Z, null, le(C.items, (g) => (r(), Q(Ke, {
267
- key: g.id,
268
- label: g.label,
269
- icon: g.icon,
270
- badge: g.badge,
271
- disabled: g.disabled,
327
+ default: G(() => [
328
+ (i(!0), r(te, null, ue(C.items, (h) => (i(), U(_e, {
329
+ key: h.id,
330
+ label: h.label,
331
+ icon: h.icon,
332
+ badge: h.badge,
333
+ disabled: h.disabled,
272
334
  collapsed: f.value,
273
- active: e.modelValue === g.id,
274
- onClick: (c) => y(g.id)
335
+ active: e.modelValue === h.id,
336
+ onClick: (c) => g(h.id)
275
337
  }, null, 8, ["label", "icon", "badge", "disabled", "collapsed", "active", "onClick"]))), 128))
276
338
  ]),
277
339
  _: 2
@@ -280,10 +342,10 @@ const Dt = ["src", "alt"], H = /* @__PURE__ */ E({
280
342
  ])
281
343
  ], 2));
282
344
  }
283
- }), Wt = { class: "flex min-w-0 flex-col gap-1" }, Gt = ["for"], Qt = { class: "relative flex min-w-0 items-center" }, Yt = ["id"], Xt = /* @__PURE__ */ E({
345
+ }), ca = { class: "flex min-w-0 flex-col gap-1" }, da = ["for"], fa = { class: "relative flex min-w-0 items-center" }, ma = ["id"], ba = /* @__PURE__ */ D({
284
346
  inheritAttrs: !1,
285
347
  __name: "SelectField",
286
- props: /* @__PURE__ */ Se({
348
+ props: /* @__PURE__ */ Re({
287
349
  label: {}
288
350
  }, {
289
351
  modelValue: {
@@ -291,32 +353,32 @@ const Dt = ["src", "alt"], H = /* @__PURE__ */ E({
291
353
  },
292
354
  modelModifiers: {}
293
355
  }),
294
- emits: /* @__PURE__ */ Se(["change"], ["update:modelValue"]),
356
+ emits: /* @__PURE__ */ Re(["change"], ["update:modelValue"]),
295
357
  setup(e, { emit: n }) {
296
- const t = e, a = Ce(), l = st(), o = v(() => a.id ?? l), s = n, [u, m] = ut(e, "modelValue", {
358
+ const t = e, a = Be(), l = yt(), o = v(() => a.id ?? l), s = n, [u, m] = gt(e, "modelValue", {
297
359
  set(f) {
298
360
  return m.number ? Number(f) : f;
299
361
  }
300
362
  });
301
- return (f, d) => (r(), i("div", Wt, [
302
- t.label ? (r(), i("label", {
363
+ return (f, d) => (i(), r("div", ca, [
364
+ t.label ? (i(), r("label", {
303
365
  key: 0,
304
366
  for: o.value,
305
367
  class: "text-tx-muted text-xs"
306
- }, V(t.label), 9, Gt)) : x("", !0),
307
- T("div", Qt, [
308
- ze(T("select", re({
368
+ }, M(t.label), 9, da)) : x("", !0),
369
+ B("div", fa, [
370
+ Se(B("select", ce({
309
371
  id: o.value,
310
- "onUpdate:modelValue": d[0] || (d[0] = (L) => ct(u) ? u.value = L : null),
372
+ "onUpdate:modelValue": d[0] || (d[0] = (E) => ht(u) ? u.value = E : null),
311
373
  class: "min-w-0 flex-1 appearance-none truncate rounded-corner border border-ui-border bg-ui-surface/60 py-1.5 pr-8 pl-2 text-sm text-tx-main"
312
- }, R(a), {
313
- onChange: d[1] || (d[1] = (L) => s("change", L))
374
+ }, F(a), {
375
+ onChange: d[1] || (d[1] = (E) => s("change", E))
314
376
  }), [
315
377
  S(f.$slots, "default")
316
- ], 16, Yt), [
317
- [dt, R(u)]
378
+ ], 16, ma), [
379
+ [xt, F(u)]
318
380
  ]),
319
- O(H, {
381
+ O(N, {
320
382
  name: "pan-down-symbolic",
321
383
  type: "symbol",
322
384
  size: 14,
@@ -325,40 +387,40 @@ const Dt = ["src", "alt"], H = /* @__PURE__ */ E({
325
387
  ])
326
388
  ]));
327
389
  }
328
- }), De = /* @__PURE__ */ Symbol("barra de vasak");
329
- function $e(e) {
390
+ }), Ve = /* @__PURE__ */ Symbol("barra de vasak");
391
+ function Ae(e) {
330
392
  return e === "left" || e === "right" ? "vertical" : "horizontal";
331
393
  }
332
- const Jt = ["top", "bottom", "left", "right"];
333
- function Zt(e) {
334
- return typeof e == "string" && Jt.includes(e);
394
+ const va = ["top", "bottom", "left", "right"];
395
+ function pa(e) {
396
+ return typeof e == "string" && va.includes(e);
335
397
  }
336
- function be() {
337
- const e = pe(De, null);
398
+ function he() {
399
+ const e = we(Ve, null);
338
400
  if (e) return e;
339
401
  const n = w("top");
340
402
  return {
341
403
  posicion: n,
342
- orientacion: v(() => $e(n.value)),
343
- vertical: v(() => $e(n.value) === "vertical")
404
+ orientacion: v(() => Ae(n.value)),
405
+ vertical: v(() => Ae(n.value) === "vertical")
344
406
  };
345
407
  }
346
- const Ee = ["minimize", "maximize", "close"], _t = "window", ea = "barPosition";
347
- function ta(e) {
348
- const t = e?.[_t]?.[ea];
349
- return Zt(t) ? t : null;
408
+ const Ie = ["minimize", "maximize", "close"], ya = "window", ga = "barPosition";
409
+ function ha(e) {
410
+ const t = e?.[ya]?.[ga];
411
+ return pa(t) ? t : null;
350
412
  }
351
- function aa(e = "top") {
413
+ function xa(e = "top") {
352
414
  const n = w(e);
353
415
  let t = null, a = !1;
354
416
  async function l() {
355
417
  try {
356
418
  const { readConfig: o } = await import("@vasakgroup/plugin-config-manager"), s = await o();
357
- n.value = ta(s) ?? e;
419
+ n.value = ha(s) ?? e;
358
420
  } catch {
359
421
  }
360
422
  }
361
- return X(async () => {
423
+ return W(async () => {
362
424
  await l();
363
425
  try {
364
426
  const { listen: o } = await import("@tauri-apps/api/event"), s = await o("config-changed", () => {
@@ -371,110 +433,110 @@ function aa(e = "top") {
371
433
  t = s;
372
434
  } catch {
373
435
  }
374
- }), de(() => {
436
+ }), pe(() => {
375
437
  a = !0, t?.(), t = null;
376
438
  }), n;
377
439
  }
378
- function We(e) {
379
- const n = Re(), t = {};
440
+ function et(e) {
441
+ const n = Ge(), t = {};
380
442
  for (const a of e) {
381
443
  const l = `on${a[0].toUpperCase()}${a.slice(1)}`;
382
444
  n?.vnode.props?.[l] && (t[a] = () => n.emit(a));
383
445
  }
384
446
  return t;
385
447
  }
386
- const na = ["title", "aria-label"], la = ["title", "aria-label"], oa = ["title", "aria-label"], xe = "flex items-center justify-center rounded-corner border border-ui-border bg-ui-bg/80 p-1 transition-colors", Ge = /* @__PURE__ */ E({
448
+ const wa = ["title", "aria-label"], ka = ["title", "aria-label"], $a = ["title", "aria-label"], Ee = "flex items-center justify-center rounded-corner border border-ui-border bg-ui-bg/80 p-1 transition-colors", tt = /* @__PURE__ */ D({
387
449
  __name: "WindowControls",
388
450
  props: {
389
- controls: { default: () => Ee },
451
+ controls: { default: () => Ie },
390
452
  minimizeLabel: {},
391
453
  maximizeLabel: {},
392
454
  closeLabel: {}
393
455
  },
394
456
  emits: ["minimize", "maximize", "close"],
395
457
  setup(e, { emit: n }) {
396
- const t = e, { t: a } = kt(), l = v(() => t.minimizeLabel ?? a("ventana.minimizar")), o = v(() => t.maximizeLabel ?? a("ventana.maximizar")), s = v(() => t.closeLabel ?? a("ventana.cerrar")), u = n, { vertical: m } = be(), f = v(() => ({
458
+ const t = e, { t: a } = Bt(), l = v(() => t.minimizeLabel ?? a("ventana.minimizar")), o = v(() => t.maximizeLabel ?? a("ventana.maximizar")), s = v(() => t.closeLabel ?? a("ventana.cerrar")), u = n, { vertical: m } = he(), f = v(() => ({
397
459
  minimize: t.controls.includes("minimize"),
398
460
  maximize: t.controls.includes("maximize"),
399
461
  close: t.controls.includes("close")
400
462
  }));
401
463
  function d() {
402
- return wt();
464
+ return At();
403
465
  }
404
- const L = Re();
405
- function D(j) {
406
- return !!L?.vnode.props?.[`on${j}`];
466
+ const E = Ge();
467
+ function L(j) {
468
+ return !!E?.vnode.props?.[`on${j}`];
407
469
  }
408
470
  function A() {
409
- if (D("Minimize")) return u("minimize");
471
+ if (L("Minimize")) return u("minimize");
410
472
  d().minimize();
411
473
  }
412
- function y() {
413
- if (D("Maximize")) return u("maximize");
474
+ function g() {
475
+ if (L("Maximize")) return u("maximize");
414
476
  d().toggleMaximize();
415
477
  }
416
478
  function $() {
417
- if (D("Close")) return u("close");
479
+ if (L("Close")) return u("close");
418
480
  d().close();
419
481
  }
420
- return (j, C) => e.controls.length ? (r(), i("div", {
482
+ return (j, C) => e.controls.length ? (i(), r("div", {
421
483
  key: 0,
422
- class: h(["flex shrink-0 gap-1", R(m) ? "flex-col" : ""]),
484
+ class: y(["flex shrink-0 gap-1", F(m) ? "flex-col" : ""]),
423
485
  "data-tauri-drag-region": ""
424
486
  }, [
425
- f.value.minimize ? (r(), i("button", {
487
+ f.value.minimize ? (i(), r("button", {
426
488
  key: 0,
427
489
  type: "button",
428
- class: h([xe, "hover:bg-status-success"]),
490
+ class: y([Ee, "hover:bg-status-success"]),
429
491
  title: l.value,
430
492
  "aria-label": l.value,
431
- onClick: C[0] || (C[0] = (g) => A())
493
+ onClick: C[0] || (C[0] = (h) => A())
432
494
  }, [
433
- O(H, {
495
+ O(N, {
434
496
  name: "window-minimize",
435
497
  type: "symbol",
436
498
  size: 24
437
499
  })
438
- ], 10, na)) : x("", !0),
439
- f.value.maximize ? (r(), i("button", {
500
+ ], 10, wa)) : x("", !0),
501
+ f.value.maximize ? (i(), r("button", {
440
502
  key: 1,
441
503
  type: "button",
442
- class: h([xe, "hover:bg-status-warning"]),
504
+ class: y([Ee, "hover:bg-status-warning"]),
443
505
  title: o.value,
444
506
  "aria-label": o.value,
445
- onClick: C[1] || (C[1] = (g) => y())
507
+ onClick: C[1] || (C[1] = (h) => g())
446
508
  }, [
447
- O(H, {
509
+ O(N, {
448
510
  name: "window-maximize",
449
511
  type: "symbol",
450
512
  size: 24
451
513
  })
452
- ], 10, la)) : x("", !0),
453
- f.value.close ? (r(), i("button", {
514
+ ], 10, ka)) : x("", !0),
515
+ f.value.close ? (i(), r("button", {
454
516
  key: 2,
455
517
  type: "button",
456
- class: h([xe, "hover:bg-status-error"]),
518
+ class: y([Ee, "hover:bg-status-error"]),
457
519
  title: s.value,
458
520
  "aria-label": s.value,
459
- onClick: C[2] || (C[2] = (g) => $())
521
+ onClick: C[2] || (C[2] = (h) => $())
460
522
  }, [
461
- O(H, {
523
+ O(N, {
462
524
  name: "window-close",
463
525
  type: "symbol",
464
526
  size: 24
465
527
  })
466
- ], 10, oa)) : x("", !0)
528
+ ], 10, $a)) : x("", !0)
467
529
  ], 2)) : x("", !0);
468
530
  }
469
- }), ra = {
531
+ }), Ca = {
470
532
  key: 0,
471
533
  class: "flex shrink-0 items-center",
472
534
  "data-tauri-drag-region": ""
473
- }, ia = {
535
+ }, za = {
474
536
  key: 1,
475
537
  class: "min-w-0 shrink truncate text-sm",
476
538
  "data-tauri-drag-region": ""
477
- }, Qe = /* @__PURE__ */ E({
539
+ }, at = /* @__PURE__ */ D({
478
540
  __name: "AppBar",
479
541
  props: {
480
542
  position: { default: null },
@@ -482,58 +544,58 @@ const na = ["title", "aria-label"], la = ["title", "aria-label"], oa = ["title",
482
544
  minimizeLabel: {},
483
545
  maximizeLabel: {},
484
546
  closeLabel: {},
485
- controls: { default: () => Ee }
547
+ controls: { default: () => Ie }
486
548
  },
487
549
  emits: ["minimize", "maximize", "close"],
488
550
  setup(e) {
489
- const n = e, t = be(), a = v(() => n.position ?? t.posicion.value), l = v(() => a.value === "left" || a.value === "right");
490
- return fe(De, {
551
+ const n = e, t = he(), a = v(() => n.position ?? t.posicion.value), l = v(() => a.value === "left" || a.value === "right");
552
+ return ye(Ve, {
491
553
  posicion: a,
492
554
  orientacion: v(() => l.value ? "vertical" : "horizontal"),
493
555
  vertical: l
494
- }), (o, s) => (r(), i("div", {
495
- class: h(["relative flex shrink-0 items-center gap-2 p-1 font-title", l.value ? "h-full flex-col" : "w-full"]),
556
+ }), (o, s) => (i(), r("div", {
557
+ class: y(["relative flex shrink-0 items-center gap-2 p-1 font-title", l.value ? "h-full flex-col" : "w-full"]),
496
558
  "data-tauri-drag-region": ""
497
559
  }, [
498
- o.$slots.identidad ? (r(), i("div", ra, [
560
+ o.$slots.identidad ? (i(), r("div", Ca, [
499
561
  S(o.$slots, "identidad")
500
562
  ])) : x("", !0),
501
- (o.$slots.titulo || e.title) && !l.value ? (r(), i("p", ia, [
563
+ (o.$slots.titulo || e.title) && !l.value ? (i(), r("p", za, [
502
564
  S(o.$slots, "titulo", {}, () => [
503
- Le(V(e.title), 1)
565
+ Me(M(e.title), 1)
504
566
  ])
505
567
  ])) : x("", !0),
506
- T("div", {
507
- class: h(["flex min-h-0 min-w-0 flex-1 items-center gap-2 overflow-auto", l.value ? "flex-col" : ""]),
568
+ B("div", {
569
+ class: y(["flex min-h-0 min-w-0 flex-1 items-center gap-2 overflow-auto", l.value ? "flex-col" : ""]),
508
570
  "data-tauri-drag-region": ""
509
571
  }, [
510
572
  S(o.$slots, "default")
511
573
  ], 2),
512
- o.$slots.acciones ? (r(), i("div", {
574
+ o.$slots.acciones ? (i(), r("div", {
513
575
  key: 2,
514
- class: h(["flex shrink-0 items-center gap-1", l.value ? "flex-col" : ""])
576
+ class: y(["flex shrink-0 items-center gap-1", l.value ? "flex-col" : ""])
515
577
  }, [
516
578
  S(o.$slots, "acciones")
517
579
  ], 2)) : x("", !0),
518
- O(Ge, re({
580
+ O(tt, ce({
519
581
  controls: e.controls,
520
582
  "minimize-label": e.minimizeLabel,
521
583
  "maximize-label": e.maximizeLabel,
522
584
  "close-label": e.closeLabel
523
- }, qe(R(We)(["minimize", "maximize", "close"]))), null, 16, ["controls", "minimize-label", "maximize-label", "close-label"]),
524
- o.$slots.centro ? (r(), i("div", {
585
+ }, Qe(F(et)(["minimize", "maximize", "close"]))), null, 16, ["controls", "minimize-label", "maximize-label", "close-label"]),
586
+ o.$slots.centro ? (i(), r("div", {
525
587
  key: 3,
526
- class: h(["pointer-events-none absolute flex items-center justify-center", l.value ? "inset-x-0 top-1/2 -translate-y-1/2 flex-col" : "inset-y-0 left-1/2 -translate-x-1/2"])
588
+ class: y(["pointer-events-none absolute flex items-center justify-center", l.value ? "inset-x-0 top-1/2 -translate-y-1/2 flex-col" : "inset-y-0 left-1/2 -translate-x-1/2"])
527
589
  }, [
528
- T("div", {
529
- class: h(["pointer-events-auto flex items-center gap-2", l.value ? "flex-col" : ""])
590
+ B("div", {
591
+ class: y(["pointer-events-auto flex items-center gap-2", l.value ? "flex-col" : ""])
530
592
  }, [
531
593
  S(o.$slots, "centro")
532
594
  ], 2)
533
595
  ], 2)) : x("", !0)
534
596
  ], 2));
535
597
  }
536
- }), sa = { class: "flex min-h-0 min-w-0 flex-1" }, ua = /* @__PURE__ */ E({
598
+ }), Ea = { class: "flex min-h-0 min-w-0 flex-1" }, La = /* @__PURE__ */ D({
537
599
  __name: "WindowFrame",
538
600
  props: {
539
601
  position: { default: null },
@@ -541,23 +603,23 @@ const na = ["title", "aria-label"], la = ["title", "aria-label"], oa = ["title",
541
603
  minimizeLabel: {},
542
604
  maximizeLabel: {},
543
605
  closeLabel: {},
544
- controls: { default: () => Ee },
606
+ controls: { default: () => Ie },
545
607
  hideBar: { type: Boolean, default: !1 }
546
608
  },
547
609
  emits: ["minimize", "maximize", "close"],
548
610
  setup(e) {
549
- const n = e, t = aa(), a = v(() => n.position ?? t.value), l = v(() => $e(a.value)), o = v(() => l.value === "vertical");
550
- fe(De, { posicion: a, orientacion: l, vertical: o });
611
+ const n = e, t = xa(), a = v(() => n.position ?? t.value), l = v(() => Ae(a.value)), o = v(() => l.value === "vertical");
612
+ ye(Ve, { posicion: a, orientacion: l, vertical: o });
551
613
  const s = {
552
614
  top: "flex-col",
553
615
  bottom: "flex-col-reverse",
554
616
  left: "flex-row",
555
617
  right: "flex-row-reverse"
556
618
  };
557
- return (u, m) => (r(), i("div", {
558
- class: h(["flex h-screen w-screen overflow-hidden rounded-corner-window border border-ui-border bg-ui-bg/80", s[a.value]])
619
+ return (u, m) => (i(), r("div", {
620
+ class: y(["flex h-screen w-screen overflow-hidden rounded-corner-window border border-ui-border bg-ui-bg/80", s[a.value]])
559
621
  }, [
560
- e.hideBar ? x("", !0) : (r(), Q(Qe, re({
622
+ e.hideBar ? x("", !0) : (i(), U(at, ce({
561
623
  key: 0,
562
624
  position: a.value,
563
625
  title: e.title,
@@ -565,57 +627,57 @@ const na = ["title", "aria-label"], la = ["title", "aria-label"], oa = ["title",
565
627
  "maximize-label": e.maximizeLabel,
566
628
  "close-label": e.closeLabel,
567
629
  controls: e.controls
568
- }, qe(R(We)(["minimize", "maximize", "close"]))), ft({
569
- default: K(() => [
630
+ }, Qe(F(et)(["minimize", "maximize", "close"]))), wt({
631
+ default: G(() => [
570
632
  S(u.$slots, "barra")
571
633
  ]),
572
634
  _: 2
573
635
  }, [
574
636
  u.$slots.identidad ? {
575
637
  name: "identidad",
576
- fn: K(() => [
638
+ fn: G(() => [
577
639
  S(u.$slots, "identidad")
578
640
  ]),
579
641
  key: "0"
580
642
  } : void 0,
581
643
  u.$slots.titulo ? {
582
644
  name: "titulo",
583
- fn: K(() => [
645
+ fn: G(() => [
584
646
  S(u.$slots, "titulo")
585
647
  ]),
586
648
  key: "1"
587
649
  } : void 0,
588
650
  u.$slots.centro ? {
589
651
  name: "centro",
590
- fn: K(() => [
652
+ fn: G(() => [
591
653
  S(u.$slots, "centro")
592
654
  ]),
593
655
  key: "2"
594
656
  } : void 0,
595
657
  u.$slots.acciones ? {
596
658
  name: "acciones",
597
- fn: K(() => [
659
+ fn: G(() => [
598
660
  S(u.$slots, "acciones")
599
661
  ]),
600
662
  key: "3"
601
663
  } : void 0
602
664
  ]), 1040, ["position", "title", "minimize-label", "maximize-label", "close-label", "controls"])),
603
- T("div", sa, [
665
+ B("div", Ea, [
604
666
  S(u.$slots, "default")
605
667
  ])
606
668
  ], 2));
607
669
  }
608
- }), ca = ["aria-selected", "title", "aria-label", "tabindex"], da = {
670
+ }), Da = ["aria-selected", "title", "aria-label", "tabindex"], Ta = {
609
671
  key: 1,
610
672
  "aria-hidden": "true"
611
- }, fa = {
673
+ }, Aa = {
612
674
  key: 2,
613
675
  class: "min-w-0 flex-1 truncate"
614
- }, ma = ["title", "aria-label"], ba = { class: "whitespace-nowrap" }, va = {
676
+ }, Ba = ["title", "aria-label"], Sa = { class: "whitespace-nowrap" }, Ma = {
615
677
  key: 0,
616
678
  class: "size-2 shrink-0 rounded-full bg-current",
617
679
  "aria-hidden": "true"
618
- }, pa = ["title", "aria-label"], ya = 500, Ie = 8, Oe = 6, Ye = /* @__PURE__ */ E({
680
+ }, Va = ["title", "aria-label"], Ia = 500, qe = 8, He = 6, nt = /* @__PURE__ */ D({
619
681
  __name: "TabItem",
620
682
  props: {
621
683
  tab: {},
@@ -626,165 +688,165 @@ const na = ["title", "aria-label"], la = ["title", "aria-label"], oa = ["title",
626
688
  },
627
689
  emits: ["select", "close", "menu", "mover", "navegar"],
628
690
  setup(e, { emit: n }) {
629
- const t = e, a = n, { vertical: l, posicion: o } = be(), s = w(null), u = w(null), m = w(!1), f = w(!1), d = w(!1), L = w({ top: 0, left: 0, right: 0 });
630
- let D = null, A = null;
631
- const y = v(() => t.tab.closable !== !1), $ = v(() => t.tab.tooltip ?? t.tab.label), j = v(
691
+ const t = e, a = n, { vertical: l, posicion: o } = he(), s = w(null), u = w(null), m = w(!1), f = w(!1), d = w(!1), E = w({ top: 0, left: 0, right: 0 });
692
+ let L = null, A = null;
693
+ const g = v(() => t.tab.closable !== !1), $ = v(() => t.tab.tooltip ?? t.tab.label), j = v(
632
694
  () => t.tab.dirty ? `${t.tab.label} · ${t.dirtyLabel}` : t.tab.label
633
- ), C = v(() => t.tab.label.trim().charAt(0).toUpperCase()), g = v(() => m.value || d.value), c = v(
634
- () => !!t.tab.dirty && !(g.value && y.value)
695
+ ), C = v(() => t.tab.label.trim().charAt(0).toUpperCase()), h = v(() => m.value || d.value), c = v(
696
+ () => !!t.tab.dirty && !(h.value && g.value)
635
697
  ), b = v(
636
- () => y.value && (g.value || t.active || !t.tab.dirty)
698
+ () => g.value && (h.value || t.active || !t.tab.dirty)
637
699
  ), p = v(
638
700
  () => l.value && (m.value || f.value || d.value)
639
701
  ), P = v(() => {
640
- const q = { position: "fixed", top: `${L.value.top}px`, zIndex: 50 };
641
- return o.value === "right" ? { ...q, right: `${L.value.right + Oe}px` } : { ...q, left: `${L.value.left + Oe}px` };
702
+ const q = { position: "fixed", top: `${E.value.top}px`, zIndex: 50 };
703
+ return o.value === "right" ? { ...q, right: `${E.value.right + He}px` } : { ...q, left: `${E.value.left + He}px` };
642
704
  });
643
- function _() {
705
+ function le() {
644
706
  const q = s.value;
645
707
  if (!q) return;
646
708
  const k = q.getBoundingClientRect();
647
- L.value = {
709
+ E.value = {
648
710
  top: k.top,
649
711
  left: k.right,
650
712
  right: window.innerWidth - k.left
651
713
  };
652
714
  }
653
- function U(q) {
715
+ function K(q) {
654
716
  const k = q.relatedTarget;
655
717
  k && u.value?.contains(k) || (d.value = !1);
656
718
  }
657
- function ee() {
658
- m.value = !0, _();
719
+ function oe() {
720
+ m.value = !0, le();
659
721
  }
660
- function G() {
661
- f.value = !0, _();
722
+ function Y() {
723
+ f.value = !0, le();
662
724
  }
663
- function B() {
664
- D !== null && clearTimeout(D), D = null, A = null;
725
+ function T() {
726
+ L !== null && clearTimeout(L), L = null, A = null;
665
727
  }
666
728
  function z(q) {
667
- q.button === 0 && (A = { x: q.clientX, y: q.clientY }, D = setTimeout(() => {
668
- A && a("menu", A), B();
669
- }, ya));
729
+ q.button === 0 && (A = { x: q.clientX, y: q.clientY }, L = setTimeout(() => {
730
+ A && a("menu", A), T();
731
+ }, Ia));
670
732
  }
671
733
  function I(q) {
672
734
  if (!A) return;
673
- (Math.abs(q.clientX - A.x) > Ie || Math.abs(q.clientY - A.y) > Ie) && B();
735
+ (Math.abs(q.clientX - A.x) > qe || Math.abs(q.clientY - A.y) > qe) && T();
674
736
  }
675
- function ie(q) {
676
- q.button === 1 && y.value && (q.preventDefault(), a("close"));
737
+ function de(q) {
738
+ q.button === 1 && g.value && (q.preventDefault(), a("close"));
677
739
  }
678
- function rt(q) {
740
+ function bt(q) {
679
741
  q.preventDefault(), a("menu", { x: q.clientX, y: q.clientY });
680
742
  }
681
- return de(B), (q, k) => (r(), i("div", {
743
+ return pe(T), (q, k) => (i(), r("div", {
682
744
  ref_key: "raiz",
683
745
  ref: s,
684
- class: h(["group relative flex shrink-0 cursor-pointer items-center gap-2 rounded-corner border border-ui-border transition-colors", [
746
+ class: y(["group relative flex shrink-0 cursor-pointer items-center gap-2 rounded-corner border border-ui-border transition-colors", [
685
747
  e.active ? "bg-primary font-bold text-tx-on-primary" : "bg-ui-bg/80 hover:bg-ui-surface/70",
686
- R(l) ? "size-8 justify-center p-0 text-sm" : "w-34 max-w-34 px-3 py-1 text-sm"
748
+ F(l) ? "size-8 justify-center p-0 text-sm" : "w-34 max-w-34 px-3 py-1 text-sm"
687
749
  ]]),
688
750
  role: "tab",
689
751
  "aria-selected": e.active,
690
752
  title: $.value,
691
753
  "aria-label": j.value,
692
754
  tabindex: e.tabindex,
693
- onClick: k[5] || (k[5] = M((N) => a("select"), ["stop"])),
755
+ onClick: k[5] || (k[5] = V((H) => a("select"), ["stop"])),
694
756
  onKeydown: [
695
- k[6] || (k[6] = F(M((N) => a("select"), ["stop"]), ["enter"])),
696
- k[7] || (k[7] = F(M((N) => a("select"), ["prevent", "stop"]), ["space"])),
697
- k[8] || (k[8] = F(M((N) => a("navegar", "anterior"), ["prevent", "stop"]), ["left"])),
698
- k[9] || (k[9] = F(M((N) => a("navegar", "anterior"), ["prevent", "stop"]), ["up"])),
699
- k[10] || (k[10] = F(M((N) => a("navegar", "siguiente"), ["prevent", "stop"]), ["right"])),
700
- k[11] || (k[11] = F(M((N) => a("navegar", "siguiente"), ["prevent", "stop"]), ["down"])),
701
- k[12] || (k[12] = F(M((N) => a("navegar", "primera"), ["prevent", "stop"]), ["home"])),
702
- k[13] || (k[13] = F(M((N) => a("navegar", "ultima"), ["prevent", "stop"]), ["end"])),
703
- k[14] || (k[14] = F(M((N) => a("mover", -1), ["alt", "prevent", "stop"]), ["left"])),
704
- k[15] || (k[15] = F(M((N) => a("mover", -1), ["alt", "prevent", "stop"]), ["up"])),
705
- k[16] || (k[16] = F(M((N) => a("mover", 1), ["alt", "prevent", "stop"]), ["right"])),
706
- k[17] || (k[17] = F(M((N) => a("mover", 1), ["alt", "prevent", "stop"]), ["down"])),
707
- k[18] || (k[18] = F(M((N) => y.value && a("close"), ["prevent", "stop"]), ["delete"]))
757
+ k[6] || (k[6] = R(V((H) => a("select"), ["stop"]), ["enter"])),
758
+ k[7] || (k[7] = R(V((H) => a("select"), ["prevent", "stop"]), ["space"])),
759
+ k[8] || (k[8] = R(V((H) => a("navegar", "anterior"), ["prevent", "stop"]), ["left"])),
760
+ k[9] || (k[9] = R(V((H) => a("navegar", "anterior"), ["prevent", "stop"]), ["up"])),
761
+ k[10] || (k[10] = R(V((H) => a("navegar", "siguiente"), ["prevent", "stop"]), ["right"])),
762
+ k[11] || (k[11] = R(V((H) => a("navegar", "siguiente"), ["prevent", "stop"]), ["down"])),
763
+ k[12] || (k[12] = R(V((H) => a("navegar", "primera"), ["prevent", "stop"]), ["home"])),
764
+ k[13] || (k[13] = R(V((H) => a("navegar", "ultima"), ["prevent", "stop"]), ["end"])),
765
+ k[14] || (k[14] = R(V((H) => a("mover", -1), ["alt", "prevent", "stop"]), ["left"])),
766
+ k[15] || (k[15] = R(V((H) => a("mover", -1), ["alt", "prevent", "stop"]), ["up"])),
767
+ k[16] || (k[16] = R(V((H) => a("mover", 1), ["alt", "prevent", "stop"]), ["right"])),
768
+ k[17] || (k[17] = R(V((H) => a("mover", 1), ["alt", "prevent", "stop"]), ["down"])),
769
+ k[18] || (k[18] = R(V((H) => g.value && a("close"), ["prevent", "stop"]), ["delete"]))
708
770
  ],
709
- onAuxclick: M(ie, ["stop"]),
710
- onContextmenu: rt,
771
+ onAuxclick: V(de, ["stop"]),
772
+ onContextmenu: bt,
711
773
  onPointerdown: z,
712
774
  onPointermove: I,
713
- onPointerup: B,
714
- onPointerleave: B,
715
- onMouseenter: ee,
716
- onMouseleave: k[19] || (k[19] = (N) => m.value = !1),
717
- onFocus: G,
718
- onBlur: k[20] || (k[20] = (N) => f.value = !1)
775
+ onPointerup: T,
776
+ onPointerleave: T,
777
+ onMouseenter: oe,
778
+ onMouseleave: k[19] || (k[19] = (H) => m.value = !1),
779
+ onFocus: Y,
780
+ onBlur: k[20] || (k[20] = (H) => f.value = !1)
719
781
  }, [
720
- e.tab.icon ? (r(), Q(H, {
782
+ e.tab.icon ? (i(), U(N, {
721
783
  key: 0,
722
784
  name: e.tab.icon,
723
785
  size: 16,
724
786
  class: "shrink-0"
725
- }, null, 8, ["name"])) : R(l) ? (r(), i("span", da, V(C.value), 1)) : x("", !0),
726
- R(l) ? x("", !0) : (r(), i("span", fa, V(e.tab.label), 1)),
727
- c.value ? (r(), i("span", {
787
+ }, null, 8, ["name"])) : F(l) ? (i(), r("span", Ta, M(C.value), 1)) : x("", !0),
788
+ F(l) ? x("", !0) : (i(), r("span", Aa, M(e.tab.label), 1)),
789
+ c.value ? (i(), r("span", {
728
790
  key: 3,
729
- class: h(["size-2 shrink-0 rounded-full bg-current", R(l) ? "absolute right-0.5 top-0.5" : ""]),
791
+ class: y(["size-2 shrink-0 rounded-full bg-current", F(l) ? "absolute right-0.5 top-0.5" : ""]),
730
792
  "aria-hidden": "true"
731
- }, null, 2)) : b.value && !R(l) ? (r(), i("button", {
793
+ }, null, 2)) : b.value && !F(l) ? (i(), r("button", {
732
794
  key: 4,
733
795
  type: "button",
734
796
  class: "flex size-4 shrink-0 items-center justify-center rounded-corner-sm hover:bg-ui-surface",
735
797
  title: e.closeLabel,
736
798
  "aria-label": `${e.closeLabel}: ${j.value}`,
737
- onClick: k[0] || (k[0] = M((N) => a("close"), ["stop"]))
799
+ onClick: k[0] || (k[0] = V((H) => a("close"), ["stop"]))
738
800
  }, [
739
- O(H, {
801
+ O(N, {
740
802
  name: "gtk-close",
741
803
  type: "symbol",
742
804
  size: 12
743
805
  })
744
- ], 8, ma)) : x("", !0),
745
- (r(), Q(me, { to: "body" }, [
746
- O(ye, {
806
+ ], 8, Ba)) : x("", !0),
807
+ (i(), U(ge, { to: "body" }, [
808
+ O(ke, {
747
809
  "enter-active-class": "transition duration-150 ease-out",
748
810
  "enter-from-class": "opacity-0 scale-95",
749
811
  "leave-active-class": "transition duration-100 ease-in",
750
812
  "leave-to-class": "opacity-0 scale-95"
751
813
  }, {
752
- default: K(() => [
753
- p.value ? (r(), i("div", {
814
+ default: G(() => [
815
+ p.value ? (i(), r("div", {
754
816
  key: 0,
755
- class: h(["flex items-center gap-2 rounded-corner border border-ui-border bg-ui-surface/95 px-3 py-1 text-sm shadow-lg", e.active ? "font-bold" : ""]),
817
+ class: y(["flex items-center gap-2 rounded-corner border border-ui-border bg-ui-surface/95 px-3 py-1 text-sm shadow-lg", e.active ? "font-bold" : ""]),
756
818
  ref_key: "desplegadoRef",
757
819
  ref: u,
758
- style: se(P.value),
759
- onMouseenter: k[2] || (k[2] = (N) => d.value = !0),
760
- onMouseleave: k[3] || (k[3] = (N) => d.value = !1),
761
- onFocusin: k[4] || (k[4] = (N) => d.value = !0),
762
- onFocusout: U
820
+ style: fe(P.value),
821
+ onMouseenter: k[2] || (k[2] = (H) => d.value = !0),
822
+ onMouseleave: k[3] || (k[3] = (H) => d.value = !1),
823
+ onFocusin: k[4] || (k[4] = (H) => d.value = !0),
824
+ onFocusout: K
763
825
  }, [
764
- T("span", ba, V(e.tab.label), 1),
765
- e.tab.dirty ? (r(), i("span", va)) : x("", !0),
766
- y.value ? (r(), i("button", {
826
+ B("span", Sa, M(e.tab.label), 1),
827
+ e.tab.dirty ? (i(), r("span", Ma)) : x("", !0),
828
+ g.value ? (i(), r("button", {
767
829
  key: 1,
768
830
  type: "button",
769
831
  class: "flex size-4 shrink-0 items-center justify-center rounded-corner-sm hover:bg-ui-surface",
770
832
  title: e.closeLabel,
771
833
  "aria-label": `${e.closeLabel}: ${j.value}`,
772
- onClick: k[1] || (k[1] = M((N) => a("close"), ["stop"]))
834
+ onClick: k[1] || (k[1] = V((H) => a("close"), ["stop"]))
773
835
  }, [
774
- O(H, {
836
+ O(N, {
775
837
  name: "gtk-close",
776
838
  type: "symbol",
777
839
  size: 12
778
840
  })
779
- ], 8, pa)) : x("", !0)
841
+ ], 8, Va)) : x("", !0)
780
842
  ], 38)) : x("", !0)
781
843
  ]),
782
844
  _: 1
783
845
  })
784
846
  ]))
785
- ], 42, ca));
847
+ ], 42, Da));
786
848
  }
787
- }), ga = ["aria-orientation"], ha = ["draggable", "onDragstart", "onDragover", "onDrop"], xa = ["title", "aria-label"], wa = /* @__PURE__ */ E({
849
+ }), Oa = ["aria-orientation"], ja = ["draggable", "onDragstart", "onDragover", "onDrop"], Pa = ["title", "aria-label"], Ra = /* @__PURE__ */ D({
788
850
  __name: "TabBar",
789
851
  props: {
790
852
  tabs: {},
@@ -796,40 +858,40 @@ const na = ["title", "aria-label"], la = ["title", "aria-label"], oa = ["title",
796
858
  },
797
859
  emits: ["update:modelValue", "select", "close", "new", "reorder", "menu"],
798
860
  setup(e, { emit: n }) {
799
- const t = e, a = n, { vertical: l } = be(), o = w(null), s = w(0), u = w(null), m = w(null);
800
- function f(g) {
801
- a("update:modelValue", g), a("select", g);
861
+ const t = e, a = n, { vertical: l } = he(), o = w(null), s = w(0), u = w(null), m = w(null);
862
+ function f(h) {
863
+ a("update:modelValue", h), a("select", h);
802
864
  }
803
- async function d(g, c) {
865
+ async function d(h, c) {
804
866
  const b = t.tabs.length - 1;
805
867
  if (b < 0) return;
806
- const p = c === "primera" ? 0 : c === "ultima" ? b : c === "anterior" ? (g - 1 + t.tabs.length) % t.tabs.length : (g + 1) % t.tabs.length;
807
- s.value = p, await Y(), o.value?.querySelectorAll('[role="tab"]')?.[p]?.focus();
868
+ const p = c === "primera" ? 0 : c === "ultima" ? b : c === "anterior" ? (h - 1 + t.tabs.length) % t.tabs.length : (h + 1) % t.tabs.length;
869
+ s.value = p, await J(), o.value?.querySelectorAll('[role="tab"]')?.[p]?.focus();
808
870
  }
809
- function L(g, c) {
871
+ function E(h, c) {
810
872
  if (t.fixedOrder) return;
811
- const b = g + c;
873
+ const b = h + c;
812
874
  if (b < 0 || b >= t.tabs.length) return;
813
- const p = [...t.tabs], [P] = p.splice(g, 1);
875
+ const p = [...t.tabs], [P] = p.splice(h, 1);
814
876
  P && (p.splice(b, 0, P), s.value = b, a("reorder", p));
815
877
  }
816
- function D(g) {
878
+ function L(h) {
817
879
  const c = o.value;
818
880
  if (!c) return;
819
- const b = g.deltaY || g.deltaX || 0, p = l.value ? c.scrollTop : c.scrollLeft;
820
- l.value ? c.scrollTop += b : c.scrollLeft += b, (l.value ? c.scrollTop : c.scrollLeft) !== p && g.preventDefault();
881
+ const b = h.deltaY || h.deltaX || 0, p = l.value ? c.scrollTop : c.scrollLeft;
882
+ l.value ? c.scrollTop += b : c.scrollLeft += b, (l.value ? c.scrollTop : c.scrollLeft) !== p && h.preventDefault();
821
883
  }
822
- function A(g, c) {
823
- t.fixedOrder || (u.value = g, c.dataTransfer?.setData("text/plain", String(g)), c.dataTransfer && (c.dataTransfer.effectAllowed = "move"));
884
+ function A(h, c) {
885
+ t.fixedOrder || (u.value = h, c.dataTransfer?.setData("text/plain", String(h)), c.dataTransfer && (c.dataTransfer.effectAllowed = "move"));
824
886
  }
825
- function y(g, c) {
826
- t.fixedOrder || u.value === null || (c.preventDefault(), m.value = g, c.dataTransfer && (c.dataTransfer.dropEffect = "move"));
887
+ function g(h, c) {
888
+ t.fixedOrder || u.value === null || (c.preventDefault(), m.value = h, c.dataTransfer && (c.dataTransfer.dropEffect = "move"));
827
889
  }
828
- function $(g) {
890
+ function $(h) {
829
891
  const c = u.value;
830
- if (j(), t.fixedOrder || c === null || c === g) return;
892
+ if (j(), t.fixedOrder || c === null || c === h) return;
831
893
  const b = [...t.tabs], [p] = b.splice(c, 1);
832
- p && (b.splice(g, 0, p), a("reorder", b));
894
+ p && (b.splice(h, 0, p), a("reorder", b));
833
895
  }
834
896
  function j() {
835
897
  u.value = null, m.value = null;
@@ -837,30 +899,30 @@ const na = ["title", "aria-label"], la = ["title", "aria-label"], oa = ["title",
837
899
  const C = v(
838
900
  () => l.value ? "flex h-full flex-col items-center gap-1 overflow-y-auto overflow-x-hidden" : "flex items-center gap-1 overflow-x-auto overflow-y-hidden"
839
901
  );
840
- return (g, c) => (r(), i("div", {
841
- class: h(["flex min-h-0 min-w-0 items-center gap-1", R(l) ? "w-full flex-col" : "h-full"]),
902
+ return (h, c) => (i(), r("div", {
903
+ class: y(["flex min-h-0 min-w-0 items-center gap-1", F(l) ? "w-full flex-col" : "h-full"]),
842
904
  role: "tablist",
843
- "aria-orientation": R(l) ? "vertical" : "horizontal"
905
+ "aria-orientation": F(l) ? "vertical" : "horizontal"
844
906
  }, [
845
- T("div", {
907
+ B("div", {
846
908
  ref_key: "carril",
847
909
  ref: o,
848
- class: h(C.value),
849
- onWheel: D
910
+ class: y(C.value),
911
+ onWheel: L
850
912
  }, [
851
- (r(!0), i(Z, null, le(e.tabs, (b, p) => (r(), i("div", {
913
+ (i(!0), r(te, null, ue(e.tabs, (b, p) => (i(), r("div", {
852
914
  key: b.id,
853
- class: h(["transition-opacity", [
915
+ class: y(["transition-opacity", [
854
916
  u.value === p ? "opacity-40" : "",
855
917
  m.value === p && u.value !== p ? "ring-2 ring-secondary rounded-corner" : ""
856
918
  ]]),
857
919
  draggable: !e.fixedOrder,
858
920
  onDragstart: (P) => A(p, P),
859
- onDragover: (P) => y(p, P),
860
- onDrop: M((P) => $(p), ["prevent"]),
921
+ onDragover: (P) => g(p, P),
922
+ onDrop: V((P) => $(p), ["prevent"]),
861
923
  onDragend: j
862
924
  }, [
863
- O(Ye, {
925
+ O(nt, {
864
926
  tab: b,
865
927
  active: b.id === e.modelValue,
866
928
  "close-label": e.closeLabel,
@@ -870,11 +932,11 @@ const na = ["title", "aria-label"], la = ["title", "aria-label"], oa = ["title",
870
932
  onClose: (P) => a("close", b.id),
871
933
  onMenu: (P) => a("menu", { id: b.id, ...P }),
872
934
  onNavegar: (P) => d(p, P),
873
- onMover: (P) => L(p, P)
935
+ onMover: (P) => E(p, P)
874
936
  }, null, 8, ["tab", "active", "close-label", "dirty-label", "tabindex", "onSelect", "onClose", "onMenu", "onNavegar", "onMover"])
875
- ], 42, ha))), 128))
937
+ ], 42, ja))), 128))
876
938
  ], 34),
877
- e.newLabel ? (r(), i("button", {
939
+ e.newLabel ? (i(), r("button", {
878
940
  key: 0,
879
941
  type: "button",
880
942
  class: "flex size-7 shrink-0 items-center justify-center rounded-corner border border-ui-border bg-ui-bg/80 hover:bg-ui-surface/70",
@@ -882,15 +944,15 @@ const na = ["title", "aria-label"], la = ["title", "aria-label"], oa = ["title",
882
944
  "aria-label": e.newLabel,
883
945
  onClick: c[0] || (c[0] = (b) => a("new"))
884
946
  }, [
885
- O(H, {
947
+ O(N, {
886
948
  name: "gtk-add",
887
949
  type: "symbol",
888
950
  size: 14
889
951
  })
890
- ], 8, xa)) : x("", !0)
891
- ], 10, ga));
952
+ ], 8, Pa)) : x("", !0)
953
+ ], 10, Oa));
892
954
  }
893
- }), ka = ["id", "aria-label", "type", "value", "placeholder", "disabled", "readonly", "required", "aria-describedby", "autocomplete", "aria-invalid"], Xe = /* @__PURE__ */ E({
955
+ }), Fa = ["id", "aria-label", "type", "value", "placeholder", "disabled", "readonly", "required", "aria-describedby", "autocomplete", "aria-invalid"], lt = /* @__PURE__ */ D({
894
956
  __name: "TextInput",
895
957
  props: {
896
958
  modelValue: {},
@@ -928,7 +990,7 @@ const na = ["title", "aria-label"], la = ["title", "aria-label"], oa = ["title",
928
990
  a.mono ? "font-mono" : "",
929
991
  a.disabled ? "cursor-not-allowed opacity-60" : ""
930
992
  ]);
931
- return (d, L) => (r(), i("input", {
993
+ return (d, E) => (i(), r("input", {
932
994
  ref_key: "campo",
933
995
  ref: u,
934
996
  id: e.id,
@@ -942,14 +1004,14 @@ const na = ["title", "aria-label"], la = ["title", "aria-label"], oa = ["title",
942
1004
  "aria-describedby": e.describedBy,
943
1005
  autocomplete: e.autocomplete,
944
1006
  "aria-invalid": e.invalid || void 0,
945
- class: h(f.value),
1007
+ class: y(f.value),
946
1008
  onInput: o,
947
1009
  onChange: s,
948
- onKeyup: L[0] || (L[0] = (D) => l("keyup", D)),
949
- onKeydown: L[1] || (L[1] = (D) => l("keydown", D))
950
- }, null, 42, ka));
1010
+ onKeyup: E[0] || (E[0] = (L) => l("keyup", L)),
1011
+ onKeydown: E[1] || (E[1] = (L) => l("keydown", L))
1012
+ }, null, 42, Fa));
951
1013
  }
952
- }), $a = { class: "pointer-events-none absolute left-2 flex items-center" }, Ca = ["aria-label"], Te = /* @__PURE__ */ E({
1014
+ }), Na = { class: "pointer-events-none absolute left-2 flex items-center" }, qa = ["aria-label"], Oe = /* @__PURE__ */ D({
953
1015
  __name: "SearchField",
954
1016
  props: {
955
1017
  modelValue: { default: "" },
@@ -980,38 +1042,38 @@ const na = ["title", "aria-label"], la = ["title", "aria-label"], oa = ["title",
980
1042
  function d() {
981
1043
  clearTimeout(s), s = void 0;
982
1044
  }
983
- function L($) {
1045
+ function E($) {
984
1046
  l("update:modelValue", $), !(a.debounce <= 0) && (d(), s = setTimeout(() => l("search", $), a.debounce));
985
1047
  }
986
- function D() {
1048
+ function L() {
987
1049
  d(), l("search", a.modelValue);
988
1050
  }
989
1051
  function A() {
990
- d(), l("update:modelValue", ""), l("clear"), y();
1052
+ d(), l("update:modelValue", ""), l("clear"), g();
991
1053
  }
992
- function y() {
1054
+ function g() {
993
1055
  return o.value?.enfocar() ?? !1;
994
1056
  }
995
- return n({ enfocar: y }), X(async () => {
996
- a.autofocus && (await Y(), y());
997
- }), ce(d), W(
1057
+ return n({ enfocar: g }), W(async () => {
1058
+ a.autofocus && (await J(), g());
1059
+ }), ve(d), Q(
998
1060
  () => a.disabled,
999
1061
  ($) => {
1000
1062
  $ && d();
1001
1063
  }
1002
- ), ($, j) => (r(), i("div", {
1064
+ ), ($, j) => (i(), r("div", {
1003
1065
  class: "relative flex items-center",
1004
- onKeydown: F(D, ["enter"])
1066
+ onKeydown: R(L, ["enter"])
1005
1067
  }, [
1006
- T("span", $a, [
1007
- O(H, {
1068
+ B("span", Na, [
1069
+ O(N, {
1008
1070
  name: e.busy ? "content-loading" : "system-search",
1009
1071
  type: "symbol",
1010
1072
  size: 14,
1011
- class: h(e.busy ? "animate-spin opacity-70" : "opacity-60")
1073
+ class: y(e.busy ? "animate-spin opacity-70" : "opacity-60")
1012
1074
  }, null, 8, ["name", "class"])
1013
1075
  ]),
1014
- O(Xe, re({
1076
+ O(lt, ce({
1015
1077
  ref_key: "campo",
1016
1078
  ref: o,
1017
1079
  type: "search",
@@ -1021,28 +1083,28 @@ const na = ["title", "aria-label"], la = ["title", "aria-label"], oa = ["title",
1021
1083
  }, m.value, {
1022
1084
  disabled: e.disabled,
1023
1085
  class: ["pl-7 [&::-webkit-search-cancel-button]:appearance-none", f.value ? "pr-8" : ""],
1024
- "onUpdate:modelValue": L,
1086
+ "onUpdate:modelValue": E,
1025
1087
  onKeydown: j[0] || (j[0] = (C) => l("keydown", C))
1026
1088
  }), null, 16, ["model-value", "placeholder", "ariaLabel", "disabled", "class"]),
1027
- f.value ? (r(), i("button", {
1089
+ f.value ? (i(), r("button", {
1028
1090
  key: 0,
1029
1091
  type: "button",
1030
1092
  class: "absolute right-1 flex size-6 items-center justify-center rounded-corner text-tx-muted hover:bg-ui-surface",
1031
1093
  "aria-label": e.label ? `${e.label}: vaciar` : "Vaciar",
1032
- onMousedown: j[1] || (j[1] = M(() => {
1094
+ onMousedown: j[1] || (j[1] = V(() => {
1033
1095
  }, ["prevent"])),
1034
1096
  onClick: A
1035
1097
  }, [
1036
- O(H, {
1098
+ O(N, {
1037
1099
  name: "gtk-close",
1038
1100
  type: "symbol",
1039
1101
  size: 12,
1040
1102
  alt: ""
1041
1103
  })
1042
- ], 40, Ca)) : x("", !0)
1104
+ ], 40, qa)) : x("", !0)
1043
1105
  ], 32));
1044
1106
  }
1045
- }), za = ["title", "aria-label", "aria-expanded"], La = /* @__PURE__ */ E({
1107
+ }), Ha = ["title", "aria-label", "aria-expanded"], Ua = /* @__PURE__ */ D({
1046
1108
  __name: "BarSearch",
1047
1109
  props: {
1048
1110
  modelValue: { default: "" },
@@ -1054,48 +1116,48 @@ const na = ["title", "aria-label"], la = ["title", "aria-label"], oa = ["title",
1054
1116
  },
1055
1117
  emits: ["update:modelValue", "search", "open", "close"],
1056
1118
  setup(e, { emit: n }) {
1057
- const t = e, a = n, { vertical: l, posicion: o } = be(), s = w(!1), u = w(null), m = v(() => l.value || t.collapsed), f = v(() => !m.value || s.value), d = v(() => {
1119
+ const t = e, a = n, { vertical: l, posicion: o } = he(), s = w(!1), u = w(null), m = v(() => l.value || t.collapsed), f = v(() => !m.value || s.value), d = v(() => {
1058
1120
  if (!m.value) return "";
1059
- const y = "absolute z-40 w-64 rounded-corner border border-ui-border bg-ui-surface/95 p-1 shadow-lg";
1060
- return o.value === "left" ? `${y} left-full top-0 ml-1` : o.value === "right" ? `${y} right-full top-0 mr-1` : o.value === "bottom" ? `${y} bottom-full right-0 mb-1` : `${y} top-full right-0 mt-1`;
1121
+ const g = "absolute z-40 w-64 rounded-corner border border-ui-border bg-ui-surface/95 p-1 shadow-lg";
1122
+ return o.value === "left" ? `${g} left-full top-0 ml-1` : o.value === "right" ? `${g} right-full top-0 mr-1` : o.value === "bottom" ? `${g} bottom-full right-0 mb-1` : `${g} top-full right-0 mt-1`;
1061
1123
  });
1062
- async function L() {
1063
- s.value = !0, a("open"), await Y(), u.value?.enfocar();
1124
+ async function E() {
1125
+ s.value = !0, a("open"), await J(), u.value?.enfocar();
1064
1126
  }
1065
- function D() {
1127
+ function L() {
1066
1128
  s.value && (s.value = !1, a("close"));
1067
1129
  }
1068
- function A(y) {
1069
- const $ = y.relatedTarget;
1070
- $ && y.currentTarget.contains($) || D();
1130
+ function A(g) {
1131
+ const $ = g.relatedTarget;
1132
+ $ && g.currentTarget.contains($) || L();
1071
1133
  }
1072
- return (y, $) => (r(), i("div", {
1134
+ return (g, $) => (i(), r("div", {
1073
1135
  class: "relative flex shrink-0 items-center",
1074
1136
  onFocusout: A
1075
1137
  }, [
1076
- m.value ? (r(), i("button", {
1138
+ m.value ? (i(), r("button", {
1077
1139
  key: 0,
1078
1140
  type: "button",
1079
1141
  class: "flex size-7 items-center justify-center rounded-corner border border-ui-border bg-ui-bg/80 hover:bg-ui-surface/70",
1080
1142
  title: e.label,
1081
1143
  "aria-label": e.label,
1082
1144
  "aria-expanded": s.value,
1083
- onMousedown: $[0] || ($[0] = M(() => {
1145
+ onMousedown: $[0] || ($[0] = V(() => {
1084
1146
  }, ["prevent"])),
1085
- onClick: $[1] || ($[1] = (j) => s.value ? D() : L())
1147
+ onClick: $[1] || ($[1] = (j) => s.value ? L() : E())
1086
1148
  }, [
1087
- O(H, {
1149
+ O(N, {
1088
1150
  name: "system-search",
1089
1151
  type: "symbol",
1090
1152
  size: 14
1091
1153
  })
1092
- ], 40, za)) : x("", !0),
1093
- f.value ? (r(), i("div", {
1154
+ ], 40, Ha)) : x("", !0),
1155
+ f.value ? (i(), r("div", {
1094
1156
  key: 1,
1095
- class: h(d.value),
1096
- onKeydown: F(D, ["esc"])
1157
+ class: y(d.value),
1158
+ onKeydown: R(L, ["esc"])
1097
1159
  }, [
1098
- O(Te, {
1160
+ O(Oe, {
1099
1161
  ref_key: "campo",
1100
1162
  ref: u,
1101
1163
  "model-value": e.modelValue,
@@ -1103,17 +1165,17 @@ const na = ["title", "aria-label"], la = ["title", "aria-label"], oa = ["title",
1103
1165
  label: e.label,
1104
1166
  disabled: e.disabled,
1105
1167
  debounce: e.debounce,
1106
- class: h(m.value ? "" : "w-48"),
1168
+ class: y(m.value ? "" : "w-48"),
1107
1169
  "onUpdate:modelValue": $[2] || ($[2] = (j) => a("update:modelValue", j)),
1108
1170
  onSearch: $[3] || ($[3] = (j) => a("search", j))
1109
1171
  }, null, 8, ["model-value", "placeholder", "label", "disabled", "debounce", "class"])
1110
1172
  ], 34)) : x("", !0)
1111
1173
  ], 32));
1112
1174
  }
1113
- }), Da = ["type", "disabled"], Ea = {
1175
+ }), Ka = ["type", "disabled"], Wa = {
1114
1176
  key: 0,
1115
1177
  class: "w-4 h-4 animate-spin rounded-full border-2 border-current border-t-transparent"
1116
- }, Ta = ["src", "alt"], Ba = { key: 2 }, Aa = ["src", "alt"], Sa = /* @__PURE__ */ E({
1178
+ }, Ga = ["src", "alt"], Qa = { key: 2 }, Ya = ["src", "alt"], Xa = /* @__PURE__ */ D({
1117
1179
  __name: "ActionButton",
1118
1180
  props: {
1119
1181
  label: {},
@@ -1143,10 +1205,10 @@ const na = ["title", "aria-label"], la = ["title", "aria-label"], oa = ["title",
1143
1205
  }, s = (u) => {
1144
1206
  t.stopPropagation && u.stopPropagation(), t.preventDefault && u.preventDefault(), !t.disabled && !t.loading && a("click");
1145
1207
  };
1146
- return (u, m) => (r(), i("button", {
1208
+ return (u, m) => (i(), r("button", {
1147
1209
  type: t.type,
1148
1210
  onClick: s,
1149
- class: h(["rounded-corner transition-[background-color,opacity] duration-200 disabled:opacity-50 disabled:cursor-not-allowed flex items-center justify-center gap-2", [
1211
+ class: y(["rounded-corner transition-[background-color,opacity] duration-200 disabled:opacity-50 disabled:cursor-not-allowed flex items-center justify-center gap-2", [
1150
1212
  l[t.variant],
1151
1213
  o[t.size],
1152
1214
  t.fullWidth ? "w-full" : "",
@@ -1155,43 +1217,43 @@ const na = ["title", "aria-label"], la = ["title", "aria-label"], oa = ["title",
1155
1217
  ]]),
1156
1218
  disabled: t.disabled || t.loading
1157
1219
  }, [
1158
- e.loading ? (r(), i("span", Ea)) : x("", !0),
1159
- t.iconSrc && !t.iconRight ? (r(), i("img", {
1220
+ e.loading ? (i(), r("span", Wa)) : x("", !0),
1221
+ t.iconSrc && !t.iconRight ? (i(), r("img", {
1160
1222
  key: 1,
1161
1223
  src: t.iconSrc,
1162
1224
  alt: t.iconAlt || t.label,
1163
1225
  class: "w-4 h-4"
1164
- }, null, 8, Ta)) : x("", !0),
1165
- t.label ? (r(), i("span", Ba, V(t.label), 1)) : x("", !0),
1166
- t.iconSrc && t.iconRight ? (r(), i("img", {
1226
+ }, null, 8, Ga)) : x("", !0),
1227
+ t.label ? (i(), r("span", Qa, M(t.label), 1)) : x("", !0),
1228
+ t.iconSrc && t.iconRight ? (i(), r("img", {
1167
1229
  key: 3,
1168
1230
  src: t.iconSrc,
1169
1231
  alt: t.iconAlt || t.label,
1170
1232
  class: "w-4 h-4"
1171
- }, null, 8, Aa)) : x("", !0)
1172
- ], 10, Da));
1233
+ }, null, 8, Ya)) : x("", !0)
1234
+ ], 10, Ka));
1173
1235
  }
1174
- }), ge = (e, n) => {
1236
+ }), $e = (e, n) => {
1175
1237
  const t = e.__vccOpts || e;
1176
1238
  for (const [a, l] of n)
1177
1239
  t[a] = l;
1178
1240
  return t;
1179
- }, Va = /* @__PURE__ */ ge(Sa, [["__scopeId", "data-v-3c1bd6bd"]]), Je = {
1241
+ }, Ja = /* @__PURE__ */ $e(Xa, [["__scopeId", "data-v-3c1bd6bd"]]), ot = {
1180
1242
  info: "border-ui-border bg-ui-surface/70 text-tx-main",
1181
1243
  success: "border-status-success/40 bg-status-success/10 text-tx-main",
1182
1244
  warning: "border-status-warning/40 bg-status-warning/10 text-tx-main",
1183
1245
  error: "border-status-error/40 bg-status-error/10 text-tx-main"
1184
1246
  };
1185
- function Ze(e) {
1247
+ function it(e) {
1186
1248
  return e === "error" ? "alert" : "status";
1187
1249
  }
1188
- const Ma = ["role"], Ia = {
1250
+ const Za = ["role"], _a = {
1189
1251
  key: 0,
1190
1252
  class: "mt-0.5"
1191
- }, Oa = { class: "min-w-0 flex-1" }, ja = {
1253
+ }, en = { class: "min-w-0 flex-1" }, tn = {
1192
1254
  key: 0,
1193
1255
  class: "font-semibold"
1194
- }, Pa = /* @__PURE__ */ E({
1256
+ }, an = /* @__PURE__ */ D({
1195
1257
  __name: "AlertMessage",
1196
1258
  props: {
1197
1259
  tone: { default: "info" },
@@ -1200,34 +1262,34 @@ const Ma = ["role"], Ia = {
1200
1262
  iconType: { default: "symbol" }
1201
1263
  },
1202
1264
  setup(e) {
1203
- const n = e, t = v(() => Je[n.tone]), a = v(() => Ze(n.tone));
1204
- return (l, o) => (r(), i("div", {
1265
+ const n = e, t = v(() => ot[n.tone]), a = v(() => it(n.tone));
1266
+ return (l, o) => (i(), r("div", {
1205
1267
  role: a.value,
1206
1268
  "aria-atomic": "true",
1207
- class: h(["flex gap-3 rounded-corner border px-4 py-2 text-sm", t.value])
1269
+ class: y(["flex gap-3 rounded-corner border px-4 py-2 text-sm", t.value])
1208
1270
  }, [
1209
- e.icon ? (r(), i("span", Ia, [
1210
- O(H, {
1271
+ e.icon ? (i(), r("span", _a, [
1272
+ O(N, {
1211
1273
  name: e.icon,
1212
1274
  type: e.iconType,
1213
1275
  size: 18,
1214
1276
  alt: ""
1215
1277
  }, null, 8, ["name", "type"])
1216
1278
  ])) : x("", !0),
1217
- T("div", Oa, [
1218
- e.title ? (r(), i("p", ja, V(e.title), 1)) : x("", !0),
1219
- T("div", {
1220
- class: h(e.title ? "mt-1" : "")
1279
+ B("div", en, [
1280
+ e.title ? (i(), r("p", tn, M(e.title), 1)) : x("", !0),
1281
+ B("div", {
1282
+ class: y(e.title ? "mt-1" : "")
1221
1283
  }, [
1222
1284
  S(l.$slots, "default")
1223
1285
  ], 2)
1224
1286
  ])
1225
- ], 10, Ma));
1287
+ ], 10, Za));
1226
1288
  }
1227
- }), Fa = { class: "font-medium text-sm text-tx-main" }, Ra = {
1289
+ }), nn = { class: "font-medium text-sm text-tx-main" }, ln = {
1228
1290
  key: 0,
1229
1291
  class: "text-sm text-tx-muted"
1230
- }, qa = /* @__PURE__ */ E({
1292
+ }, on = /* @__PURE__ */ D({
1231
1293
  __name: "EmptyState",
1232
1294
  props: {
1233
1295
  title: {},
@@ -1237,37 +1299,37 @@ const Ma = ["role"], Ia = {
1237
1299
  bordered: { type: Boolean, default: !1 }
1238
1300
  },
1239
1301
  setup(e) {
1240
- return (n, t) => (r(), i("div", {
1241
- class: h(["flex flex-col items-center justify-center gap-3 px-8 py-12 text-center", e.bordered ? "rounded-corner border border-ui-border border-dashed bg-ui-surface/20" : ""])
1302
+ return (n, t) => (i(), r("div", {
1303
+ class: y(["flex flex-col items-center justify-center gap-3 px-8 py-12 text-center", e.bordered ? "rounded-corner border border-ui-border border-dashed bg-ui-surface/20" : ""])
1242
1304
  }, [
1243
- O(H, {
1305
+ O(N, {
1244
1306
  name: e.icon,
1245
1307
  type: e.iconType,
1246
1308
  size: 48,
1247
1309
  class: "opacity-60"
1248
1310
  }, null, 8, ["name", "type"]),
1249
- T("p", Fa, V(e.title), 1),
1250
- e.note ? (r(), i("p", Ra, V(e.note), 1)) : x("", !0),
1311
+ B("p", nn, M(e.title), 1),
1312
+ e.note ? (i(), r("p", ln, M(e.note), 1)) : x("", !0),
1251
1313
  S(n.$slots, "default")
1252
1314
  ], 2));
1253
1315
  }
1254
- }), Na = { class: "text-sm text-tx-muted" }, Ha = /* @__PURE__ */ E({
1316
+ }), rn = { class: "text-sm text-tx-muted" }, sn = /* @__PURE__ */ D({
1255
1317
  __name: "LoadingState",
1256
1318
  props: {
1257
1319
  label: {},
1258
1320
  bordered: { type: Boolean, default: !1 }
1259
1321
  },
1260
1322
  setup(e) {
1261
- return (n, t) => (r(), i("div", {
1323
+ return (n, t) => (i(), r("div", {
1262
1324
  role: "status",
1263
1325
  "aria-atomic": "true",
1264
- class: h(["flex flex-col items-center justify-center gap-4 px-8 py-12 text-center", e.bordered ? "rounded-corner border border-ui-border border-dashed bg-ui-surface/20" : ""])
1326
+ class: y(["flex flex-col items-center justify-center gap-4 px-8 py-12 text-center", e.bordered ? "rounded-corner border border-ui-border border-dashed bg-ui-surface/20" : ""])
1265
1327
  }, [
1266
- t[0] || (t[0] = T("span", { class: "h-10 w-10 animate-spin rounded-full border-4 border-ui-border border-t-primary motion-reduce:animate-none" }, null, -1)),
1267
- T("p", Na, V(e.label), 1)
1328
+ t[0] || (t[0] = B("span", { class: "h-10 w-10 animate-spin rounded-full border-4 border-ui-border border-t-primary motion-reduce:animate-none" }, null, -1)),
1329
+ B("p", rn, M(e.label), 1)
1268
1330
  ], 2));
1269
1331
  }
1270
- }), Ua = ["role"], Ka = /* @__PURE__ */ E({
1332
+ }), un = ["role"], cn = /* @__PURE__ */ D({
1271
1333
  __name: "ToastArea",
1272
1334
  props: {
1273
1335
  toasts: {},
@@ -1277,38 +1339,38 @@ const Ma = ["role"], Ia = {
1277
1339
  const n = e, t = v(
1278
1340
  () => n.position === "bottom-center" ? "bottom-4 left-1/2 -translate-x-1/2" : "right-4 bottom-4"
1279
1341
  );
1280
- return (a, l) => (r(), Q(me, { to: "body" }, [
1281
- T("div", {
1282
- class: h(["pointer-events-none fixed z-60 flex flex-col gap-2", t.value])
1342
+ return (a, l) => (i(), U(ge, { to: "body" }, [
1343
+ B("div", {
1344
+ class: y(["pointer-events-none fixed z-60 flex flex-col gap-2", t.value])
1283
1345
  }, [
1284
- O(mt, {
1346
+ O(kt, {
1285
1347
  "enter-active-class": "transition-all duration-300 ease-out",
1286
1348
  "leave-active-class": "transition-all duration-200 ease-in",
1287
1349
  "enter-from-class": "translate-y-2 opacity-0",
1288
1350
  "leave-to-class": "translate-y-2 opacity-0",
1289
1351
  "move-class": "transition-transform duration-300"
1290
1352
  }, {
1291
- default: K(() => [
1292
- (r(!0), i(Z, null, le(e.toasts, (o) => (r(), i("div", {
1353
+ default: G(() => [
1354
+ (i(!0), r(te, null, ue(e.toasts, (o) => (i(), r("div", {
1293
1355
  key: o.id,
1294
- role: R(Ze)(o.tone ?? "info"),
1356
+ role: F(it)(o.tone ?? "info"),
1295
1357
  "aria-atomic": "true",
1296
- class: h(["pointer-events-auto rounded-corner border px-4 py-2 text-sm shadow-lg backdrop-blur-sm", R(Je)[o.tone ?? "info"]])
1358
+ class: y(["pointer-events-auto rounded-corner border px-4 py-2 text-sm shadow-lg backdrop-blur-sm", F(ot)[o.tone ?? "info"]])
1297
1359
  }, [
1298
1360
  S(a.$slots, "default", { aviso: o }, () => [
1299
- Le(V(o.message), 1)
1361
+ Me(M(o.message), 1)
1300
1362
  ])
1301
- ], 10, Ua))), 128))
1363
+ ], 10, un))), 128))
1302
1364
  ]),
1303
1365
  _: 3
1304
1366
  })
1305
1367
  ], 2)
1306
1368
  ]));
1307
1369
  }
1308
- }), Wa = ["aria-label", "aria-valuenow"], Ga = {
1370
+ }), dn = ["aria-label", "aria-valuenow"], fn = {
1309
1371
  key: 1,
1310
1372
  class: "h-full w-full animate-pulse rounded-corner bg-primary motion-reduce:animate-none motion-reduce:bg-primary/40"
1311
- }, Qa = /* @__PURE__ */ E({
1373
+ }, mn = /* @__PURE__ */ D({
1312
1374
  __name: "ProgressBar",
1313
1375
  props: {
1314
1376
  value: {},
@@ -1323,7 +1385,7 @@ const Ma = ["role"], Ia = {
1323
1385
  }, a = v(
1324
1386
  () => n.value === null ? null : Math.max(0, Math.min(100, n.value))
1325
1387
  );
1326
- return (l, o) => (r(), i("div", {
1388
+ return (l, o) => (i(), r("div", {
1327
1389
  role: "progressbar",
1328
1390
  "aria-label": e.label,
1329
1391
  "aria-valuenow": a.value ?? void 0,
@@ -1331,46 +1393,46 @@ const Ma = ["role"], Ia = {
1331
1393
  "aria-valuemax": "100",
1332
1394
  class: "h-2 w-full overflow-hidden rounded-corner bg-ui-surface/70"
1333
1395
  }, [
1334
- a.value !== null ? (r(), i("div", {
1396
+ a.value !== null ? (i(), r("div", {
1335
1397
  key: 0,
1336
- class: h(["h-full rounded-corner transition-[width] duration-300 ease-out", t[e.tone]]),
1337
- style: se({ width: `${a.value}%` })
1338
- }, null, 6)) : (r(), i("div", Ga))
1339
- ], 8, Wa));
1398
+ class: y(["h-full rounded-corner transition-[width] duration-300 ease-out", t[e.tone]]),
1399
+ style: fe({ width: `${a.value}%` })
1400
+ }, null, 6)) : (i(), r("div", fn))
1401
+ ], 8, dn));
1340
1402
  }
1341
- }), Ya = /[/\-_.]/;
1342
- function we(e, n) {
1403
+ }), bn = /[/\-_.]/;
1404
+ function Le(e, n) {
1343
1405
  if (!n) return 100;
1344
1406
  const t = n.toLowerCase();
1345
- return t === e ? 0 : t.startsWith(e) ? 10 : t.split(Ya).some((a) => a.startsWith(e)) ? 30 : t.includes(e) ? 40 : 100;
1407
+ return t === e ? 0 : t.startsWith(e) ? 10 : t.split(bn).some((a) => a.startsWith(e)) ? 30 : t.includes(e) ? 40 : 100;
1346
1408
  }
1347
- function Xa(e, n) {
1409
+ function vn(e, n) {
1348
1410
  const t = n.trim().toLowerCase();
1349
1411
  if (!t) return e;
1350
1412
  const a = [];
1351
1413
  for (let l = 0; l < e.length; l++) {
1352
- const o = e[l], s = we(t, o.valor), u = we(t, o.etiqueta), m = u === 10 ? 20 : u, d = we(t, o.detalle) === 100 ? 100 : 40, L = Math.min(s, m, d);
1353
- L !== 100 && a.push({ opcion: o, rango: L, orden: l });
1414
+ const o = e[l], s = Le(t, o.valor), u = Le(t, o.etiqueta), m = u === 10 ? 20 : u, d = Le(t, o.detalle) === 100 ? 100 : 40, E = Math.min(s, m, d);
1415
+ E !== 100 && a.push({ opcion: o, rango: E, orden: l });
1354
1416
  }
1355
1417
  return a.sort((l, o) => l.rango - o.rango || l.orden - o.orden), a.map((l) => l.opcion);
1356
1418
  }
1357
- let je = 0;
1358
- function Ja() {
1359
- return je += 1, `vsk-lista-${je}`;
1419
+ let Ue = 0;
1420
+ function pn() {
1421
+ return Ue += 1, `vsk-lista-${Ue}`;
1360
1422
  }
1361
- const Za = ["disabled", "aria-label", "aria-expanded"], _a = { class: "min-w-0 flex-1 truncate" }, en = {
1423
+ const yn = ["disabled", "aria-label", "aria-expanded"], gn = { class: "min-w-0 flex-1 truncate" }, hn = {
1362
1424
  key: 0,
1363
1425
  class: "ml-2 text-tx-muted text-xs"
1364
- }, tn = { class: "border-ui-border border-b p-2" }, an = ["id"], nn = {
1426
+ }, xn = { class: "border-ui-border border-b p-2" }, wn = ["id"], kn = {
1365
1427
  key: 0,
1366
1428
  class: "p-3 text-center text-tx-muted text-xs"
1367
- }, ln = ["id", "data-indice", "aria-selected"], on = { class: "min-w-0 flex-1 truncate" }, rn = {
1429
+ }, $n = ["id", "data-indice", "aria-selected"], Cn = { class: "min-w-0 flex-1 truncate" }, zn = {
1368
1430
  key: 0,
1369
1431
  class: "shrink-0 text-tx-muted text-xs"
1370
- }, sn = {
1432
+ }, En = {
1371
1433
  key: 1,
1372
1434
  class: "px-2 py-1 text-tx-muted text-xs"
1373
- }, un = /* @__PURE__ */ E({
1435
+ }, Ln = /* @__PURE__ */ D({
1374
1436
  __name: "SearchSelect",
1375
1437
  props: {
1376
1438
  modelValue: {},
@@ -1385,69 +1447,69 @@ const Za = ["disabled", "aria-label", "aria-expanded"], _a = { class: "min-w-0 f
1385
1447
  },
1386
1448
  emits: ["update:modelValue"],
1387
1449
  setup(e, { emit: n }) {
1388
- const t = e, a = n, l = w(""), o = w(!1), s = w(0), u = w(null), m = w(null), f = w(null), d = Ja(), L = v(
1389
- () => t.options.find((B) => B.valor === t.modelValue) ?? null
1390
- ), D = v(() => Xa(t.options, l.value)), A = v(() => D.value.slice(0, t.limit)), y = v(() => Math.max(0, D.value.length - t.limit)), $ = v(
1450
+ const t = e, a = n, l = w(""), o = w(!1), s = w(0), u = w(null), m = w(null), f = w(null), d = pn(), E = v(
1451
+ () => t.options.find((T) => T.valor === t.modelValue) ?? null
1452
+ ), L = v(() => vn(t.options, l.value)), A = v(() => L.value.slice(0, t.limit)), g = v(() => Math.max(0, L.value.length - t.limit)), $ = v(
1391
1453
  () => A.value.length > 0 ? `${d}-${s.value}` : void 0
1392
1454
  );
1393
- function j(B) {
1394
- a("update:modelValue", B), g();
1455
+ function j(T) {
1456
+ a("update:modelValue", T), h();
1395
1457
  }
1396
1458
  async function C() {
1397
1459
  o.value = !0;
1398
- const B = A.value.findIndex((z) => z.valor === t.modelValue);
1399
- s.value = B >= 0 ? B : 0, await Y(), f.value?.enfocar(), U();
1460
+ const T = A.value.findIndex((z) => z.valor === t.modelValue);
1461
+ s.value = T >= 0 ? T : 0, await J(), f.value?.enfocar(), K();
1400
1462
  }
1401
- function g(B = !0) {
1402
- o.value && (o.value = !1, l.value = "", B && Y(() => m.value?.focus()));
1463
+ function h(T = !0) {
1464
+ o.value && (o.value = !1, l.value = "", T && J(() => m.value?.focus()));
1403
1465
  }
1404
- function c(B) {
1466
+ function c(T) {
1405
1467
  const z = A.value.length;
1406
- z !== 0 && (s.value = (s.value + B + z) % z, U());
1468
+ z !== 0 && (s.value = (s.value + T + z) % z, K());
1407
1469
  }
1408
- function b(B) {
1409
- s.value = B, U();
1470
+ function b(T) {
1471
+ s.value = T, K();
1410
1472
  }
1411
- function p(B) {
1412
- const z = B.target?.closest?.("[data-indice]");
1473
+ function p(T) {
1474
+ const z = T.target?.closest?.("[data-indice]");
1413
1475
  if (!z) return null;
1414
1476
  const I = Number(z.getAttribute("data-indice"));
1415
1477
  return Number.isInteger(I) ? I : null;
1416
1478
  }
1417
- function P(B) {
1418
- const z = p(B), I = z === null ? void 0 : A.value[z];
1479
+ function P(T) {
1480
+ const z = p(T), I = z === null ? void 0 : A.value[z];
1419
1481
  I && j(I.valor);
1420
1482
  }
1421
- function _(B) {
1422
- const z = p(B);
1483
+ function le(T) {
1484
+ const z = p(T);
1423
1485
  z !== null && (s.value = z);
1424
1486
  }
1425
- function U() {
1426
- Y(() => {
1487
+ function K() {
1488
+ J(() => {
1427
1489
  u.value?.querySelector(`[data-indice="${s.value}"]`)?.scrollIntoView({ block: "nearest" });
1428
1490
  });
1429
1491
  }
1430
- function ee() {
1431
- const B = A.value[s.value];
1432
- B && j(B.valor);
1492
+ function oe() {
1493
+ const T = A.value[s.value];
1494
+ T && j(T.valor);
1433
1495
  }
1434
- W(
1496
+ Q(
1435
1497
  () => t.disabled,
1436
- (B) => {
1437
- B && g(!1);
1498
+ (T) => {
1499
+ T && h(!1);
1438
1500
  }
1439
- ), W(l, () => {
1440
- s.value = 0, U();
1501
+ ), Q(l, () => {
1502
+ s.value = 0, K();
1441
1503
  });
1442
- function G(B) {
1443
- const z = B.relatedTarget;
1444
- z && B.currentTarget.contains(z) || g(!1);
1504
+ function Y(T) {
1505
+ const z = T.relatedTarget;
1506
+ z && T.currentTarget.contains(z) || h(!1);
1445
1507
  }
1446
- return (B, z) => (r(), i("div", {
1508
+ return (T, z) => (i(), r("div", {
1447
1509
  class: "relative",
1448
- onFocusout: G
1510
+ onFocusout: Y
1449
1511
  }, [
1450
- T("button", {
1512
+ B("button", {
1451
1513
  ref_key: "boton",
1452
1514
  ref: m,
1453
1515
  type: "button",
@@ -1456,79 +1518,79 @@ const Za = ["disabled", "aria-label", "aria-expanded"], _a = { class: "min-w-0 f
1456
1518
  "aria-label": e.label || void 0,
1457
1519
  "aria-expanded": o.value,
1458
1520
  "aria-haspopup": "listbox",
1459
- onClick: z[0] || (z[0] = (I) => o.value ? g() : C()),
1521
+ onClick: z[0] || (z[0] = (I) => o.value ? h() : C()),
1460
1522
  onKeydown: [
1461
- z[1] || (z[1] = F(M((I) => o.value ? c(1) : C(), ["prevent"]), ["down"])),
1462
- z[2] || (z[2] = F(M((I) => o.value ? c(-1) : C(), ["prevent"]), ["up"]))
1523
+ z[1] || (z[1] = R(V((I) => o.value ? c(1) : C(), ["prevent"]), ["down"])),
1524
+ z[2] || (z[2] = R(V((I) => o.value ? c(-1) : C(), ["prevent"]), ["up"]))
1463
1525
  ]
1464
1526
  }, [
1465
- T("span", _a, [
1466
- Le(V(L.value?.etiqueta ?? e.placeholder) + " ", 1),
1467
- L.value?.detalle ? (r(), i("span", en, V(L.value.detalle), 1)) : x("", !0)
1527
+ B("span", gn, [
1528
+ Me(M(E.value?.etiqueta ?? e.placeholder) + " ", 1),
1529
+ E.value?.detalle ? (i(), r("span", hn, M(E.value.detalle), 1)) : x("", !0)
1468
1530
  ]),
1469
- O(H, {
1531
+ O(N, {
1470
1532
  name: "go-down",
1471
1533
  type: "symbol",
1472
1534
  size: 12,
1473
1535
  class: "shrink-0 opacity-60"
1474
1536
  })
1475
- ], 40, Za),
1476
- o.value ? (r(), i("div", {
1537
+ ], 40, yn),
1538
+ o.value ? (i(), r("div", {
1477
1539
  key: 0,
1478
- class: h(["absolute z-20 w-full min-w-64 rounded-corner border border-ui-border-strong bg-ui-bg shadow-lg", e.up ? "bottom-full mb-1" : "mt-1"]),
1540
+ class: y(["absolute z-20 w-full min-w-64 rounded-corner border border-ui-border-strong bg-ui-bg shadow-lg", e.up ? "bottom-full mb-1" : "mt-1"]),
1479
1541
  onKeydown: [
1480
- z[4] || (z[4] = F(M((I) => g(), ["prevent"]), ["escape"])),
1481
- z[5] || (z[5] = F(M((I) => c(1), ["prevent"]), ["down"])),
1482
- z[6] || (z[6] = F(M((I) => c(-1), ["prevent"]), ["up"])),
1483
- z[7] || (z[7] = F(M((I) => b(0), ["prevent"]), ["home"])),
1484
- z[8] || (z[8] = F(M((I) => b(A.value.length - 1), ["prevent"]), ["end"])),
1485
- z[9] || (z[9] = F(M((I) => ee(), ["prevent"]), ["enter"])),
1486
- z[10] || (z[10] = F((I) => g(!1), ["tab"]))
1542
+ z[4] || (z[4] = R(V((I) => h(), ["prevent"]), ["escape"])),
1543
+ z[5] || (z[5] = R(V((I) => c(1), ["prevent"]), ["down"])),
1544
+ z[6] || (z[6] = R(V((I) => c(-1), ["prevent"]), ["up"])),
1545
+ z[7] || (z[7] = R(V((I) => b(0), ["prevent"]), ["home"])),
1546
+ z[8] || (z[8] = R(V((I) => b(A.value.length - 1), ["prevent"]), ["end"])),
1547
+ z[9] || (z[9] = R(V((I) => oe(), ["prevent"]), ["enter"])),
1548
+ z[10] || (z[10] = R((I) => h(!1), ["tab"]))
1487
1549
  ],
1488
1550
  onClick: P,
1489
- onMousemove: _
1551
+ onMousemove: le
1490
1552
  }, [
1491
- T("div", tn, [
1492
- O(Te, {
1553
+ B("div", xn, [
1554
+ O(Oe, {
1493
1555
  ref_key: "campo",
1494
1556
  ref: f,
1495
1557
  modelValue: l.value,
1496
1558
  "onUpdate:modelValue": z[3] || (z[3] = (I) => l.value = I),
1497
1559
  label: e.label,
1498
1560
  placeholder: e.searchPlaceholder,
1499
- "listbox-id": R(d),
1561
+ "listbox-id": F(d),
1500
1562
  "active-option-id": $.value,
1501
1563
  expanded: o.value
1502
1564
  }, null, 8, ["modelValue", "label", "placeholder", "listbox-id", "active-option-id", "expanded"])
1503
1565
  ]),
1504
- T("ul", {
1505
- id: R(d),
1566
+ B("ul", {
1567
+ id: F(d),
1506
1568
  ref_key: "lista",
1507
1569
  ref: u,
1508
1570
  role: "listbox",
1509
1571
  class: "max-h-56 overflow-y-auto p-1"
1510
1572
  }, [
1511
- A.value.length === 0 ? (r(), i("li", nn, V(e.emptyText), 1)) : x("", !0),
1512
- (r(!0), i(Z, null, le(A.value, (I, ie) => (r(), i("li", {
1513
- id: `${R(d)}-${ie}`,
1573
+ A.value.length === 0 ? (i(), r("li", kn, M(e.emptyText), 1)) : x("", !0),
1574
+ (i(!0), r(te, null, ue(A.value, (I, de) => (i(), r("li", {
1575
+ id: `${F(d)}-${de}`,
1514
1576
  key: I.valor,
1515
- "data-indice": ie,
1577
+ "data-indice": de,
1516
1578
  role: "option",
1517
1579
  "aria-selected": I.valor === e.modelValue,
1518
- class: h(["flex cursor-pointer items-baseline gap-2 rounded-corner px-2 py-1 text-sm", [
1519
- ie === s.value ? "bg-ui-surface" : "",
1580
+ class: y(["flex cursor-pointer items-baseline gap-2 rounded-corner px-2 py-1 text-sm", [
1581
+ de === s.value ? "bg-ui-surface" : "",
1520
1582
  I.valor === e.modelValue ? "font-medium text-primary" : "text-tx-main"
1521
1583
  ]])
1522
1584
  }, [
1523
- T("span", on, V(I.etiqueta), 1),
1524
- I.detalle ? (r(), i("span", rn, V(I.detalle), 1)) : x("", !0)
1525
- ], 10, ln))), 128)),
1526
- y.value > 0 ? (r(), i("li", sn, "+" + V(y.value), 1)) : x("", !0)
1527
- ], 8, an)
1585
+ B("span", Cn, M(I.etiqueta), 1),
1586
+ I.detalle ? (i(), r("span", zn, M(I.detalle), 1)) : x("", !0)
1587
+ ], 10, $n))), 128)),
1588
+ g.value > 0 ? (i(), r("li", En, "+" + M(g.value), 1)) : x("", !0)
1589
+ ], 8, wn)
1528
1590
  ], 34)) : x("", !0)
1529
1591
  ], 32));
1530
1592
  }
1531
- }), cn = { class: "text-base font-semibold m-0 text-primary dark:text-primary-dark" }, dn = /* @__PURE__ */ E({
1593
+ }), Dn = { class: "text-base font-semibold m-0 text-primary dark:text-primary-dark" }, Tn = /* @__PURE__ */ D({
1532
1594
  __name: "ConfigSection",
1533
1595
  props: {
1534
1596
  title: {},
@@ -1536,29 +1598,31 @@ const Za = ["disabled", "aria-label", "aria-expanded"], _a = { class: "min-w-0 f
1536
1598
  customClass: { default: () => ({}) }
1537
1599
  },
1538
1600
  setup(e) {
1539
- return (n, t) => (r(), i("div", {
1540
- class: h(["flex flex-col gap-4 p-4 background rounded-corner", e.customClass])
1601
+ return (n, t) => (i(), r("div", {
1602
+ class: y(["flex flex-col gap-4 p-4 background rounded-corner", e.customClass])
1541
1603
  }, [
1542
- T("h3", cn, V(e.icon ? `${e.icon} ${e.title}` : e.title), 1),
1604
+ B("h3", Dn, M(e.icon ? `${e.icon} ${e.title}` : e.title), 1),
1543
1605
  S(n.$slots, "default", {}, void 0, !0)
1544
1606
  ], 2));
1545
1607
  }
1546
- }), fn = /* @__PURE__ */ ge(dn, [["__scopeId", "data-v-45bd4eab"]]), mn = { class: "flex items-center gap-3 flex-1 min-w-0" }, bn = ["src", "alt"], vn = { class: "min-w-0" }, pn = { class: "font-semibold truncate" }, yn = {
1608
+ }), An = /* @__PURE__ */ $e(Tn, [["__scopeId", "data-v-45bd4eab"]]), Bn = { class: "flex items-center gap-3 flex-1 min-w-0" }, Sn = ["src", "alt"], Mn = { class: "min-w-0" }, Vn = { class: "font-semibold truncate" }, In = {
1547
1609
  key: 0,
1548
1610
  class: "text-xs text-gray-400 truncate"
1549
- }, gn = {
1611
+ }, On = {
1550
1612
  key: 1,
1551
1613
  class: "text-xs text-gray-400 truncate"
1552
- }, hn = {
1614
+ }, jn = {
1553
1615
  key: 2,
1554
1616
  class: "text-xs text-gray-400 flex gap-2 mt-1"
1555
- }, xn = {
1617
+ }, Pn = {
1556
1618
  key: 1,
1557
1619
  class: "w-2 h-2 rounded-full bg-green-500"
1558
- }, wn = /* @__PURE__ */ E({
1620
+ }, Rn = /* @__PURE__ */ D({
1559
1621
  __name: "DeviceCard",
1560
1622
  props: {
1561
- icon: {},
1623
+ name: { default: "" },
1624
+ type: { default: "icon" },
1625
+ icon: { default: "" },
1562
1626
  title: {},
1563
1627
  subtitle: { default: "" },
1564
1628
  metadata: { default: "" },
@@ -1572,41 +1636,52 @@ const Za = ["disabled", "aria-label", "aria-expanded"], _a = { class: "min-w-0 f
1572
1636
  },
1573
1637
  emits: ["action", "click"],
1574
1638
  setup(e, { emit: n }) {
1575
- const t = n, a = () => {
1576
- t("action");
1577
- }, l = () => {
1578
- t("click");
1639
+ const t = e, a = n, l = () => {
1640
+ a("action");
1641
+ }, o = () => {
1642
+ a("click");
1579
1643
  };
1580
- return (o, s) => (r(), i("div", {
1581
- class: h(["flex items-center justify-between background rounded-vsk px-6 py-3 mb-4", [{ "border-l-4 border-green-500": e.isConnected }, e.customClass]]),
1582
- onClick: l
1644
+ return W(() => {
1645
+ t.icon && !t.name && console.warn(
1646
+ "[DeviceCard] «icon» está obsoleto y se va en la próxima mayor: recibe una ruta ya resuelta. Usá «name» con el nombre del icono del tema, y «type» si hace falta el símbolo."
1647
+ );
1648
+ }), (s, u) => (i(), r("div", {
1649
+ class: y(["flex items-center justify-between background rounded-vsk px-6 py-3 mb-4", [{ "border-l-4 border-green-500": e.isConnected }, e.customClass]]),
1650
+ onClick: o
1583
1651
  }, [
1584
- T("div", mn, [
1585
- T("img", {
1652
+ B("div", Bn, [
1653
+ e.name ? (i(), U(N, {
1654
+ key: 0,
1655
+ name: e.name,
1656
+ type: e.type,
1657
+ size: 28,
1658
+ alt: e.title
1659
+ }, null, 8, ["name", "type", "alt"])) : (i(), r("img", {
1660
+ key: 1,
1586
1661
  src: e.icon,
1587
1662
  alt: e.title,
1588
1663
  class: "h-7 w-7 shrink-0"
1589
- }, null, 8, bn),
1590
- T("div", vn, [
1591
- T("div", pn, V(e.title), 1),
1592
- e.subtitle ? (r(), i("div", yn, V(e.subtitle), 1)) : x("", !0),
1593
- e.metadata ? (r(), i("div", gn, V(e.metadata), 1)) : x("", !0),
1594
- e.extraInfo && e.extraInfo.length > 0 ? (r(), i("div", hn, [
1595
- (r(!0), i(Z, null, le(e.extraInfo, (u, m) => (r(), i("span", { key: m }, V(u), 1))), 128))
1664
+ }, null, 8, Sn)),
1665
+ B("div", Mn, [
1666
+ B("div", Vn, M(e.title), 1),
1667
+ e.subtitle ? (i(), r("div", In, M(e.subtitle), 1)) : x("", !0),
1668
+ e.metadata ? (i(), r("div", On, M(e.metadata), 1)) : x("", !0),
1669
+ e.extraInfo && e.extraInfo.length > 0 ? (i(), r("div", jn, [
1670
+ (i(!0), r(te, null, ue(e.extraInfo, (m, f) => (i(), r("span", { key: f }, M(m), 1))), 128))
1596
1671
  ])) : x("", !0)
1597
1672
  ])
1598
1673
  ]),
1599
- e.showActionButton ? (r(), i("button", {
1674
+ e.showActionButton ? (i(), r("button", {
1600
1675
  key: 0,
1601
1676
  class: "bg-vsk-primary rounded-vsk px-4 py-2 text-sm font-semibold cursor-pointer hover:opacity-70",
1602
- onClick: M(a, ["stop"])
1603
- }, V(e.actionLabel), 1)) : x("", !0),
1604
- e.showStatusIndicator && e.isConnected ? (r(), i("div", xn)) : x("", !0)
1677
+ onClick: V(l, ["stop"])
1678
+ }, M(e.actionLabel), 1)) : x("", !0),
1679
+ e.showStatusIndicator && e.isConnected ? (i(), r("div", Pn)) : x("", !0)
1605
1680
  ], 2));
1606
1681
  }
1607
- }), _e = /* @__PURE__ */ Symbol("diálogo de vasak");
1608
- function et() {
1609
- const e = pe(_e, null);
1682
+ }), rt = /* @__PURE__ */ Symbol("diálogo de vasak");
1683
+ function st() {
1684
+ const e = we(rt, null);
1610
1685
  if (e) return e;
1611
1686
  const n = w(!1);
1612
1687
  return {
@@ -1619,11 +1694,11 @@ function et() {
1619
1694
  }
1620
1695
  };
1621
1696
  }
1622
- let Pe = 0;
1623
- function kn() {
1624
- return Pe += 1, `vsk-dialogo-titulo-${Pe}`;
1697
+ let Ke = 0;
1698
+ function Fn() {
1699
+ return Ke += 1, `vsk-dialogo-titulo-${Ke}`;
1625
1700
  }
1626
- const $n = /* @__PURE__ */ E({
1701
+ const Nn = /* @__PURE__ */ D({
1627
1702
  __name: "Dialog",
1628
1703
  props: {
1629
1704
  open: { type: Boolean, default: !1 }
@@ -1631,7 +1706,7 @@ const $n = /* @__PURE__ */ E({
1631
1706
  emits: ["update:open"],
1632
1707
  setup(e, { emit: n }) {
1633
1708
  const t = e, a = n, l = w(null);
1634
- return fe(_e, {
1709
+ return ye(rt, {
1635
1710
  abierto: v(() => t.open),
1636
1711
  cerrar: () => a("update:open", !1),
1637
1712
  idDelTitulo: l,
@@ -1640,10 +1715,10 @@ const $n = /* @__PURE__ */ E({
1640
1715
  }
1641
1716
  }), (o, s) => S(o.$slots, "default");
1642
1717
  }
1643
- }), Cn = {
1718
+ }), qn = {
1644
1719
  key: 0,
1645
1720
  class: "absolute inset-0 rounded-corner-window bg-ui-border-dark/40"
1646
- }, zn = ["aria-labelledby", "aria-label"], Ln = "relative z-10 w-full rounded-corner border border-ui-border bg-ui-bg/80 p-6 text-tx-main shadow-lg", Dn = /* @__PURE__ */ E({
1721
+ }, Hn = ["aria-labelledby", "aria-label"], Un = "relative z-10 w-full rounded-corner border border-ui-border bg-ui-bg/80 p-6 text-tx-main shadow-lg", Kn = /* @__PURE__ */ D({
1647
1722
  inheritAttrs: !1,
1648
1723
  __name: "DialogContent",
1649
1724
  props: {
@@ -1651,46 +1726,46 @@ const $n = /* @__PURE__ */ E({
1651
1726
  ariaLabel: {}
1652
1727
  },
1653
1728
  setup(e) {
1654
- const n = e, t = Ce(), a = v(() => t.class ?? ""), l = v(() => {
1655
- const { class: C, ...g } = t;
1656
- return g;
1657
- }), o = v(() => n.size === "full" ? "relative z-10 h-full w-full overflow-hidden rounded-corner-window text-tx-main" : `${Ln} ${n.size === "lg" ? "max-w-2xl" : "max-w-lg"}`), s = et(), u = v(() => s.abierto.value), m = w(null), f = w(null);
1729
+ const n = e, t = Be(), a = v(() => t.class ?? ""), l = v(() => {
1730
+ const { class: C, ...h } = t;
1731
+ return h;
1732
+ }), o = v(() => n.size === "full" ? "relative z-10 h-full w-full overflow-hidden rounded-corner-window text-tx-main" : `${Un} ${n.size === "lg" ? "max-w-2xl" : "max-w-lg"}`), s = st(), u = v(() => s.abierto.value), m = w(null), f = w(null);
1658
1733
  let d = null;
1659
- function L() {
1734
+ function E() {
1660
1735
  return f.value ? [...f.value.querySelectorAll('a[href], button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])')] : [];
1661
1736
  }
1662
- function D(C) {
1737
+ function L(C) {
1663
1738
  if (C.key === "Escape") {
1664
1739
  s.cerrar();
1665
1740
  return;
1666
1741
  }
1667
1742
  if (C.key !== "Tab") return;
1668
- const g = L();
1669
- if (g.length === 0) {
1743
+ const h = E();
1744
+ if (h.length === 0) {
1670
1745
  C.preventDefault(), f.value?.focus();
1671
1746
  return;
1672
1747
  }
1673
- const c = g[0], b = g[g.length - 1], p = document.activeElement;
1748
+ const c = h[0], b = h[h.length - 1], p = document.activeElement;
1674
1749
  C.shiftKey && (p === c || p === f.value) ? (C.preventDefault(), b.focus()) : !C.shiftKey && p === b && (C.preventDefault(), c.focus());
1675
1750
  }
1676
1751
  function A(C) {
1677
1752
  C.target === C.currentTarget && s.cerrar();
1678
1753
  }
1679
- function y(C) {
1680
- m.value?.contains(C.target) || D(C);
1754
+ function g(C) {
1755
+ m.value?.contains(C.target) || L(C);
1681
1756
  }
1682
1757
  function $() {
1683
- document.removeEventListener("keydown", y);
1758
+ document.removeEventListener("keydown", g);
1684
1759
  }
1685
1760
  function j() {
1686
1761
  const C = d;
1687
1762
  d = null, C?.isConnected && C.focus();
1688
1763
  }
1689
- return W(
1764
+ return Q(
1690
1765
  u,
1691
1766
  async (C) => {
1692
1767
  if (C) {
1693
- d = document.activeElement, document.addEventListener("keydown", y), await Y(), f.value?.focus();
1768
+ d = document.activeElement, document.addEventListener("keydown", g), await J(), f.value?.focus();
1694
1769
  return;
1695
1770
  }
1696
1771
  $(), j();
@@ -1699,79 +1774,79 @@ const $n = /* @__PURE__ */ E({
1699
1774
  // abierto —una vista que arranca preguntando algo—. Sin esto, ése no recibe
1700
1775
  // el foco y ni Escape ni el Tab hacen nada: el `aria-modal` queda en promesa.
1701
1776
  { immediate: !0 }
1702
- ), ce(() => {
1777
+ ), ve(() => {
1703
1778
  $(), j();
1704
- }), (C, g) => (r(), Q(me, { to: "body" }, [
1705
- O(ye, {
1779
+ }), (C, h) => (i(), U(ge, { to: "body" }, [
1780
+ O(ke, {
1706
1781
  "enter-active-class": "transition-opacity duration-200 ease-out",
1707
1782
  "leave-active-class": "transition-opacity duration-150 ease-in",
1708
1783
  "enter-from-class": "opacity-0",
1709
1784
  "leave-to-class": "opacity-0"
1710
1785
  }, {
1711
- default: K(() => [
1712
- u.value ? (r(), i("div", {
1786
+ default: G(() => [
1787
+ u.value ? (i(), r("div", {
1713
1788
  key: 0,
1714
1789
  ref_key: "velo",
1715
1790
  ref: m,
1716
1791
  class: "fixed inset-0 z-50 flex items-center justify-center",
1717
1792
  onClick: A,
1718
- onKeydown: D
1793
+ onKeydown: L
1719
1794
  }, [
1720
- n.size === "md" ? (r(), i("div", Cn)) : x("", !0),
1721
- T("div", re({
1795
+ n.size === "md" ? (i(), r("div", qn)) : x("", !0),
1796
+ B("div", ce({
1722
1797
  ref_key: "panel",
1723
1798
  ref: f,
1724
1799
  tabindex: "-1",
1725
1800
  role: "dialog",
1726
1801
  "aria-modal": "true",
1727
- "aria-labelledby": R(s).idDelTitulo.value ?? void 0,
1728
- "aria-label": R(s).idDelTitulo.value ? void 0 : e.ariaLabel
1802
+ "aria-labelledby": F(s).idDelTitulo.value ?? void 0,
1803
+ "aria-label": F(s).idDelTitulo.value ? void 0 : e.ariaLabel
1729
1804
  }, l.value, {
1730
1805
  class: [a.value, o.value]
1731
1806
  }), [
1732
1807
  S(C.$slots, "default")
1733
- ], 16, zn)
1808
+ ], 16, Hn)
1734
1809
  ], 544)) : x("", !0)
1735
1810
  ]),
1736
1811
  _: 3
1737
1812
  })
1738
1813
  ]));
1739
1814
  }
1740
- }), En = { class: "text-sm text-tx-muted" }, Tn = /* @__PURE__ */ E({
1815
+ }), Wn = { class: "text-sm text-tx-muted" }, Gn = /* @__PURE__ */ D({
1741
1816
  __name: "DialogDescription",
1742
1817
  setup(e) {
1743
- return (n, t) => (r(), i("p", En, [
1818
+ return (n, t) => (i(), r("p", Wn, [
1744
1819
  S(n.$slots, "default")
1745
1820
  ]));
1746
1821
  }
1747
- }), Bn = { class: "flex flex-col-reverse gap-2 sm:flex-row sm:justify-end" }, An = /* @__PURE__ */ E({
1822
+ }), Qn = { class: "flex flex-col-reverse gap-2 sm:flex-row sm:justify-end" }, Yn = /* @__PURE__ */ D({
1748
1823
  __name: "DialogFooter",
1749
1824
  setup(e) {
1750
- return (n, t) => (r(), i("div", Bn, [
1825
+ return (n, t) => (i(), r("div", Qn, [
1751
1826
  S(n.$slots, "default")
1752
1827
  ]));
1753
1828
  }
1754
- }), Sn = { class: "flex flex-col gap-1.5 text-center sm:text-left" }, Vn = /* @__PURE__ */ E({
1829
+ }), Xn = { class: "flex flex-col gap-1.5 text-center sm:text-left" }, Jn = /* @__PURE__ */ D({
1755
1830
  __name: "DialogHeader",
1756
1831
  setup(e) {
1757
- return (n, t) => (r(), i("div", Sn, [
1832
+ return (n, t) => (i(), r("div", Xn, [
1758
1833
  S(n.$slots, "default")
1759
1834
  ]));
1760
1835
  }
1761
- }), Mn = ["id"], In = /* @__PURE__ */ E({
1836
+ }), Zn = ["id"], _n = /* @__PURE__ */ D({
1762
1837
  __name: "DialogTitle",
1763
1838
  setup(e) {
1764
- const n = et(), t = kn();
1765
- return X(() => n.ponerElTitulo(t)), ce(() => n.ponerElTitulo(null)), (a, l) => (r(), i("h2", {
1766
- id: R(t),
1839
+ const n = st(), t = Fn();
1840
+ return W(() => n.ponerElTitulo(t)), ve(() => n.ponerElTitulo(null)), (a, l) => (i(), r("h2", {
1841
+ id: F(t),
1767
1842
  class: "font-semibold text-lg leading-none tracking-tight"
1768
1843
  }, [
1769
1844
  S(a.$slots, "default")
1770
- ], 8, Mn));
1845
+ ], 8, Zn));
1771
1846
  }
1772
- }), tt = /* @__PURE__ */ Symbol("menú de vasak");
1773
- function he() {
1774
- const e = pe(tt, null);
1847
+ }), ut = /* @__PURE__ */ Symbol("menú de vasak");
1848
+ function Ce() {
1849
+ const e = we(ut, null);
1775
1850
  if (e) return e;
1776
1851
  const n = w(!1);
1777
1852
  return {
@@ -1795,70 +1870,70 @@ function he() {
1795
1870
  }
1796
1871
  };
1797
1872
  }
1798
- let Fe = 0;
1799
- function at() {
1800
- return Fe += 1, `vsk-menu-${Fe}`;
1873
+ let We = 0;
1874
+ function ct() {
1875
+ return We += 1, `vsk-menu-${We}`;
1801
1876
  }
1802
- const On = { class: "relative inline-block" }, jn = /* @__PURE__ */ E({
1877
+ const el = { class: "relative inline-block" }, tl = /* @__PURE__ */ D({
1803
1878
  __name: "DropdownMenu",
1804
1879
  props: {
1805
1880
  open: { type: Boolean, default: void 0 }
1806
1881
  },
1807
1882
  emits: ["update:open"],
1808
1883
  setup(e, { emit: n }) {
1809
- const t = e, a = n, l = w(!1), o = w(null), s = w(null), u = w("ninguno"), m = at();
1884
+ const t = e, a = n, l = w(!1), o = w(null), s = w(null), u = w("ninguno"), m = ct();
1810
1885
  let f = null;
1811
1886
  const d = v({
1812
1887
  get: () => t.open ?? l.value,
1813
- set: (y) => {
1814
- t.open === void 0 && (l.value = y), a("update:open", y);
1888
+ set: (g) => {
1889
+ t.open === void 0 && (l.value = g), a("update:open", g);
1815
1890
  }
1816
1891
  });
1817
- W(d, (y) => {
1818
- if (y) {
1892
+ Q(d, (g) => {
1893
+ if (g) {
1819
1894
  const $ = document.activeElement;
1820
1895
  f = $ instanceof HTMLElement ? $ : null;
1821
1896
  } else
1822
1897
  u.value = "ninguno";
1823
1898
  });
1824
- function L(y = "ninguno") {
1825
- u.value = y, d.value = !0;
1899
+ function E(g = "ninguno") {
1900
+ u.value = g, d.value = !0;
1826
1901
  }
1827
- function D(y = {}) {
1828
- if (d.value = !1, !y.devolverElFoco) return;
1902
+ function L(g = {}) {
1903
+ if (d.value = !1, !g.devolverElFoco) return;
1829
1904
  const $ = f ?? o.value;
1830
1905
  $?.isConnected && $.focus();
1831
1906
  }
1832
- function A(y = "ninguno") {
1907
+ function A(g = "ninguno") {
1833
1908
  if (d.value) {
1834
- D({ devolverElFoco: !0 });
1909
+ L({ devolverElFoco: !0 });
1835
1910
  return;
1836
1911
  }
1837
- L(y);
1912
+ E(g);
1838
1913
  }
1839
- return fe(tt, {
1914
+ return ye(ut, {
1840
1915
  abierto: d,
1841
1916
  idDelMenu: m,
1842
1917
  idDeLaEtiqueta: s,
1843
- ponerLaEtiqueta: (y) => {
1844
- s.value = y;
1918
+ ponerLaEtiqueta: (g) => {
1919
+ s.value = g;
1845
1920
  },
1846
1921
  disparador: o,
1847
- ponerElDisparador: (y) => {
1848
- o.value = y;
1922
+ ponerElDisparador: (g) => {
1923
+ o.value = g;
1849
1924
  },
1850
1925
  focoAlAbrir: u,
1851
- abrir: L,
1852
- cerrar: D,
1926
+ abrir: E,
1927
+ cerrar: L,
1853
1928
  alternar: A
1854
- }), (y, $) => (r(), i("div", On, [
1855
- S(y.$slots, "default")
1929
+ }), (g, $) => (i(), r("div", el, [
1930
+ S(g.$slots, "default")
1856
1931
  ]));
1857
1932
  }
1858
- }), Pn = ["id", "aria-labelledby", "inert"], Fn = {
1933
+ }), al = ["id", "aria-labelledby", "inert"], nl = {
1859
1934
  role: "none",
1860
1935
  class: "py-1"
1861
- }, J = 8, Rn = /* @__PURE__ */ E({
1936
+ }, Z = 8, ll = /* @__PURE__ */ D({
1862
1937
  inheritAttrs: !1,
1863
1938
  __name: "DropdownMenuContent",
1864
1939
  props: {
@@ -1867,7 +1942,7 @@ const On = { class: "relative inline-block" }, jn = /* @__PURE__ */ E({
1867
1942
  sideOffset: { default: 4 }
1868
1943
  },
1869
1944
  setup(e) {
1870
- const n = e, t = he(), { idDelMenu: a, idDeLaEtiqueta: l } = t, o = v(() => t.disparador.value), s = v(() => t.abierto.value), u = w(null), m = w({
1945
+ const n = e, t = Ce(), { idDelMenu: a, idDeLaEtiqueta: l } = t, o = v(() => t.disparador.value), s = v(() => t.abierto.value), u = w(null), m = w({
1871
1946
  top: 0,
1872
1947
  left: 0,
1873
1948
  techo: null
@@ -1878,7 +1953,7 @@ const On = { class: "relative inline-block" }, jn = /* @__PURE__ */ E({
1878
1953
  right: "left"
1879
1954
  };
1880
1955
  function d(c, b) {
1881
- const p = n.sideOffset + J;
1956
+ const p = n.sideOffset + Z;
1882
1957
  switch (c) {
1883
1958
  case "bottom":
1884
1959
  return window.innerHeight - b.bottom - p;
@@ -1890,51 +1965,51 @@ const On = { class: "relative inline-block" }, jn = /* @__PURE__ */ E({
1890
1965
  return b.left - p;
1891
1966
  }
1892
1967
  }
1893
- function L(c, b, p) {
1968
+ function E(c, b, p) {
1894
1969
  return p < b ? b : Math.min(Math.max(c, b), p);
1895
1970
  }
1896
- function D() {
1971
+ function L() {
1897
1972
  if (!o.value || !u.value) return;
1898
- const c = o.value.getBoundingClientRect(), b = u.value.scrollHeight, p = u.value.offsetWidth, P = n.side === "top" || n.side === "bottom", _ = P ? b : p;
1899
- let U = n.side;
1900
- const ee = d(U, c);
1901
- ee < _ && d(f[U], c) > ee && (U = f[U]);
1902
- let G = 0, B = 0, z = null;
1903
- switch (U) {
1973
+ const c = o.value.getBoundingClientRect(), b = u.value.scrollHeight, p = u.value.offsetWidth, P = n.side === "top" || n.side === "bottom", le = P ? b : p;
1974
+ let K = n.side;
1975
+ const oe = d(K, c);
1976
+ oe < le && d(f[K], c) > oe && (K = f[K]);
1977
+ let Y = 0, T = 0, z = null;
1978
+ switch (K) {
1904
1979
  case "bottom": {
1905
- G = c.bottom + n.sideOffset, z = Math.max(window.innerHeight - G - J, 0);
1980
+ Y = c.bottom + n.sideOffset, z = Math.max(window.innerHeight - Y - Z, 0);
1906
1981
  break;
1907
1982
  }
1908
1983
  case "top": {
1909
- z = Math.max(d("top", c), 0), G = c.top - n.sideOffset - Math.min(b, z);
1984
+ z = Math.max(d("top", c), 0), Y = c.top - n.sideOffset - Math.min(b, z);
1910
1985
  break;
1911
1986
  }
1912
1987
  case "left":
1913
1988
  case "right": {
1914
- B = U === "right" ? c.right + n.sideOffset : c.left - p - n.sideOffset;
1915
- const I = window.innerHeight - 2 * J;
1916
- G = L(c.top, J, window.innerHeight - Math.min(b, I) - J), z = Math.max(window.innerHeight - G - J, 0);
1989
+ T = K === "right" ? c.right + n.sideOffset : c.left - p - n.sideOffset;
1990
+ const I = window.innerHeight - 2 * Z;
1991
+ Y = E(c.top, Z, window.innerHeight - Math.min(b, I) - Z), z = Math.max(window.innerHeight - Y - Z, 0);
1917
1992
  break;
1918
1993
  }
1919
1994
  }
1920
1995
  if (P)
1921
1996
  switch (n.align) {
1922
1997
  case "start":
1923
- B = c.left;
1998
+ T = c.left;
1924
1999
  break;
1925
2000
  case "center":
1926
- B = c.left + c.width / 2 - p / 2;
2001
+ T = c.left + c.width / 2 - p / 2;
1927
2002
  break;
1928
2003
  case "end":
1929
- B = c.right - p;
2004
+ T = c.right - p;
1930
2005
  break;
1931
2006
  }
1932
- B = L(B, J, window.innerWidth - p - J), m.value = { top: G, left: B, techo: z };
2007
+ T = E(T, Z, window.innerWidth - p - Z), m.value = { top: Y, left: T, techo: z };
1933
2008
  }
1934
2009
  function A() {
1935
2010
  return u.value ? Array.from(u.value.querySelectorAll('[role="menuitem"]')) : [];
1936
2011
  }
1937
- function y(c) {
2012
+ function g(c) {
1938
2013
  const b = A();
1939
2014
  if (!b.length) return;
1940
2015
  const p = b.length;
@@ -1948,16 +2023,16 @@ const On = { class: "relative inline-block" }, jn = /* @__PURE__ */ E({
1948
2023
  const b = $();
1949
2024
  switch (c.key) {
1950
2025
  case "ArrowDown":
1951
- c.preventDefault(), y(b + 1);
2026
+ c.preventDefault(), g(b + 1);
1952
2027
  break;
1953
2028
  case "ArrowUp":
1954
- c.preventDefault(), y(b <= 0 ? -1 : b - 1);
2029
+ c.preventDefault(), g(b <= 0 ? -1 : b - 1);
1955
2030
  break;
1956
2031
  case "Home":
1957
- c.preventDefault(), y(0);
2032
+ c.preventDefault(), g(0);
1958
2033
  break;
1959
2034
  case "End":
1960
- c.preventDefault(), y(-1);
2035
+ c.preventDefault(), g(-1);
1961
2036
  break;
1962
2037
  case "Escape":
1963
2038
  c.preventDefault(), c.stopPropagation(), t.cerrar({ devolverElFoco: !0 });
@@ -1967,16 +2042,16 @@ const On = { class: "relative inline-block" }, jn = /* @__PURE__ */ E({
1967
2042
  break;
1968
2043
  }
1969
2044
  }
1970
- W(s, async (c) => {
2045
+ Q(s, async (c) => {
1971
2046
  if (c)
1972
- switch (await Y(), requestAnimationFrame(() => {
1973
- D();
2047
+ switch (await J(), requestAnimationFrame(() => {
2048
+ L();
1974
2049
  }), t.focoAlAbrir.value) {
1975
2050
  case "primero":
1976
- y(0);
2051
+ g(0);
1977
2052
  break;
1978
2053
  case "ultimo":
1979
- y(-1);
2054
+ g(-1);
1980
2055
  break;
1981
2056
  // Abierto con el ratón: el foco va al menú y no a un ítem —no hay
1982
2057
  // ninguno elegido todavía—, que es lo que deja andar las flechas y el
@@ -1986,18 +2061,18 @@ const On = { class: "relative inline-block" }, jn = /* @__PURE__ */ E({
1986
2061
  }
1987
2062
  });
1988
2063
  function C(c) {
1989
- s.value && (c && u.value?.contains(c.target) || D());
2064
+ s.value && (c && u.value?.contains(c.target) || L());
1990
2065
  }
1991
- function g(c) {
2066
+ function h(c) {
1992
2067
  const b = c.target, p = !!b.closest("[data-dropdown-content]"), P = !!o.value?.contains(b);
1993
2068
  !p && !P && t.cerrar();
1994
2069
  }
1995
- return X(() => {
1996
- document.addEventListener("click", g), window.addEventListener("resize", C), window.addEventListener("scroll", C, !0);
1997
- }), de(() => {
1998
- document.removeEventListener("click", g), window.removeEventListener("resize", C), window.removeEventListener("scroll", C, !0);
1999
- }), (c, b) => (r(), Q(me, { to: "body" }, [
2000
- O(ye, {
2070
+ return W(() => {
2071
+ document.addEventListener("click", h), window.addEventListener("resize", C), window.addEventListener("scroll", C, !0);
2072
+ }), pe(() => {
2073
+ document.removeEventListener("click", h), window.removeEventListener("resize", C), window.removeEventListener("scroll", C, !0);
2074
+ }), (c, b) => (i(), U(ge, { to: "body" }, [
2075
+ O(ke, {
2001
2076
  "enter-active-class": "transition-all duration-150 ease-in-out",
2002
2077
  "leave-active-class": "transition-all duration-150 ease-in-out",
2003
2078
  "enter-from-class": "opacity-0 scale-95",
@@ -2005,16 +2080,16 @@ const On = { class: "relative inline-block" }, jn = /* @__PURE__ */ E({
2005
2080
  onEnter: b[1] || (b[1] = (p) => p.offsetHeight),
2006
2081
  onLeave: b[2] || (b[2] = (p) => p.offsetHeight)
2007
2082
  }, {
2008
- default: K(() => [
2009
- ze(T("div", re({
2083
+ default: G(() => [
2084
+ Se(B("div", ce({
2010
2085
  ref_key: "contenido",
2011
2086
  ref: u
2012
2087
  }, c.$attrs, {
2013
- id: R(a),
2088
+ id: F(a),
2014
2089
  role: "menu",
2015
2090
  tabindex: "-1",
2016
2091
  "aria-orientation": "vertical",
2017
- "aria-labelledby": R(l) ?? void 0,
2092
+ "aria-labelledby": F(l) ?? void 0,
2018
2093
  inert: !s.value,
2019
2094
  style: {
2020
2095
  position: "fixed",
@@ -2030,33 +2105,33 @@ const On = { class: "relative inline-block" }, jn = /* @__PURE__ */ E({
2030
2105
  onClick: b[0] || (b[0] = (p) => p.stopPropagation()),
2031
2106
  onKeydown: j
2032
2107
  }), [
2033
- T("div", Fn, [
2108
+ B("div", nl, [
2034
2109
  S(c.$slots, "default")
2035
2110
  ])
2036
- ], 16, Pn), [
2037
- [Ne, s.value]
2111
+ ], 16, al), [
2112
+ [Ye, s.value]
2038
2113
  ])
2039
2114
  ]),
2040
2115
  _: 3
2041
2116
  })
2042
2117
  ]));
2043
2118
  }
2044
- }), qn = ["aria-disabled", "onKeydown"], Nn = /* @__PURE__ */ E({
2119
+ }), ol = ["aria-disabled", "onKeydown"], il = /* @__PURE__ */ D({
2045
2120
  __name: "DropdownMenuItem",
2046
2121
  props: {
2047
2122
  disabled: { type: Boolean, default: !1 }
2048
2123
  },
2049
2124
  emits: ["select", "click"],
2050
2125
  setup(e, { emit: n }) {
2051
- const t = e, a = n, l = he();
2126
+ const t = e, a = n, l = Ce();
2052
2127
  function o(s) {
2053
2128
  t.disabled || (a("select"), a("click", s), l.cerrar({ devolverElFoco: !0 }));
2054
2129
  }
2055
- return (s, u) => (r(), i("div", {
2130
+ return (s, u) => (i(), r("div", {
2056
2131
  role: "menuitem",
2057
2132
  tabindex: "0",
2058
2133
  "aria-disabled": e.disabled || void 0,
2059
- class: h([
2134
+ class: y([
2060
2135
  "px-3 py-2 text-sm transition-colors outline-none",
2061
2136
  {
2062
2137
  "opacity-50 cursor-not-allowed": e.disabled,
@@ -2065,22 +2140,22 @@ const On = { class: "relative inline-block" }, jn = /* @__PURE__ */ E({
2065
2140
  ]),
2066
2141
  onClick: o,
2067
2142
  onKeydown: [
2068
- F(M(o, ["prevent"]), ["enter"]),
2069
- F(M(o, ["prevent"]), ["space"])
2143
+ R(V(o, ["prevent"]), ["enter"]),
2144
+ R(V(o, ["prevent"]), ["space"])
2070
2145
  ]
2071
2146
  }, [
2072
2147
  S(s.$slots, "default")
2073
- ], 42, qn));
2148
+ ], 42, ol));
2074
2149
  }
2075
- }), Hn = /* @__PURE__ */ E({
2150
+ }), rl = /* @__PURE__ */ D({
2076
2151
  __name: "DropdownMenuLabel",
2077
2152
  setup(e) {
2078
- const n = he(), t = `${at()}-titulo`;
2079
- return X(() => {
2153
+ const n = Ce(), t = `${ct()}-titulo`;
2154
+ return W(() => {
2080
2155
  n.ponerLaEtiqueta(t);
2081
- }), de(() => {
2156
+ }), pe(() => {
2082
2157
  n.ponerLaEtiqueta(null);
2083
- }), (a, l) => (r(), i("div", {
2158
+ }), (a, l) => (i(), r("div", {
2084
2159
  id: t,
2085
2160
  role: "presentation",
2086
2161
  class: "px-3 py-2 text-sm font-semibold text-tx-main"
@@ -2088,30 +2163,30 @@ const On = { class: "relative inline-block" }, jn = /* @__PURE__ */ E({
2088
2163
  S(a.$slots, "default")
2089
2164
  ]));
2090
2165
  }
2091
- }), Un = {
2166
+ }), sl = {
2092
2167
  role: "separator",
2093
2168
  "aria-orientation": "horizontal",
2094
2169
  class: "bg-ui-bg/80 my-4 h-0.5"
2095
- }, Kn = /* @__PURE__ */ E({
2170
+ }, ul = /* @__PURE__ */ D({
2096
2171
  __name: "DropdownMenuSeparator",
2097
2172
  setup(e) {
2098
- return (n, t) => (r(), i("div", Un));
2173
+ return (n, t) => (i(), r("div", sl));
2099
2174
  }
2100
2175
  });
2101
- function nt(e) {
2176
+ function dt(e) {
2102
2177
  const n = e.filter(
2103
- (a) => a.type !== pt && !(a.type === yt && typeof a.children == "string" && !a.children.trim())
2178
+ (a) => a.type !== zt && !(a.type === Et && typeof a.children == "string" && !a.children.trim())
2104
2179
  );
2105
2180
  if (n.length !== 1) return null;
2106
2181
  const t = n[0];
2107
- return t.type === Z && Array.isArray(t.children) ? nt(t.children) : t;
2182
+ return t.type === te && Array.isArray(t.children) ? dt(t.children) : t;
2108
2183
  }
2109
- function Wn(e) {
2184
+ function cl(e) {
2110
2185
  if (e instanceof HTMLElement) return e;
2111
2186
  const n = e?.$el;
2112
2187
  return n instanceof HTMLElement ? n : null;
2113
2188
  }
2114
- const Gn = E({
2189
+ const dl = D({
2115
2190
  name: "DropdownMenuTrigger",
2116
2191
  inheritAttrs: !1,
2117
2192
  props: {
@@ -2121,9 +2196,9 @@ const Gn = E({
2121
2196
  disabled: { type: Boolean, default: !1 }
2122
2197
  },
2123
2198
  setup(e, { slots: n, attrs: t }) {
2124
- const a = he(), l = w(null);
2199
+ const a = Ce(), l = w(null);
2125
2200
  function o() {
2126
- a.ponerElDisparador(Wn(l.value));
2201
+ a.ponerElDisparador(cl(l.value));
2127
2202
  }
2128
2203
  function s() {
2129
2204
  e.disabled || (o(), a.alternar());
@@ -2161,17 +2236,17 @@ const Gn = E({
2161
2236
  onKeydown: u
2162
2237
  }, f = n.default?.() ?? [];
2163
2238
  if (e.asChild) {
2164
- const d = nt(f);
2165
- if (d) return bt(d, { ...t, ...m });
2239
+ const d = dt(f);
2240
+ if (d) return $t(d, { ...t, ...m });
2166
2241
  }
2167
- return vt(
2242
+ return Ct(
2168
2243
  "div",
2169
2244
  { ...t, class: ["dropdown-menu-trigger inline-block", t.class], ...m },
2170
2245
  f
2171
2246
  );
2172
2247
  };
2173
2248
  }
2174
- }), Qn = ["for"], Yn = /* @__PURE__ */ E({
2249
+ }), fl = ["for"], ml = /* @__PURE__ */ D({
2175
2250
  __name: "FormGroup",
2176
2251
  props: {
2177
2252
  label: {},
@@ -2180,18 +2255,18 @@ const Gn = E({
2180
2255
  labelClass: { default: () => ({}) }
2181
2256
  },
2182
2257
  setup(e) {
2183
- return (n, t) => (r(), i("div", {
2184
- class: h(["flex flex-col gap-2", e.customClass])
2258
+ return (n, t) => (i(), r("div", {
2259
+ class: y(["flex flex-col gap-2", e.customClass])
2185
2260
  }, [
2186
- e.label ? (r(), i("label", {
2261
+ e.label ? (i(), r("label", {
2187
2262
  key: 0,
2188
2263
  for: e.htmlFor,
2189
- class: h(["text-sm font-medium text-primary dark:text-primary-dark", e.labelClass])
2190
- }, V(e.label), 11, Qn)) : x("", !0),
2264
+ class: y(["text-sm font-medium text-primary dark:text-primary-dark", e.labelClass])
2265
+ }, M(e.label), 11, fl)) : x("", !0),
2191
2266
  S(n.$slots, "default", {}, void 0, !0)
2192
2267
  ], 2));
2193
2268
  }
2194
- }), Xn = /* @__PURE__ */ ge(Yn, [["__scopeId", "data-v-c0d9d9cb"]]), Jn = /* @__PURE__ */ E({
2269
+ }), bl = /* @__PURE__ */ $e(ml, [["__scopeId", "data-v-c0d9d9cb"]]), vl = /* @__PURE__ */ D({
2195
2270
  __name: "ListCard",
2196
2271
  props: {
2197
2272
  clickable: { type: Boolean, default: !1 },
@@ -2202,8 +2277,8 @@ const Gn = E({
2202
2277
  const t = e, a = n, l = () => {
2203
2278
  t.clickable && a("click");
2204
2279
  };
2205
- return (o, s) => (r(), i("div", {
2206
- class: h([
2280
+ return (o, s) => (i(), r("div", {
2281
+ class: y([
2207
2282
  "flex items-center justify-between background p-3 rounded-vsk border border-vsk-primary/70 transition-colors duration-200",
2208
2283
  {
2209
2284
  "hover:bg-vsk-primary/5 cursor-pointer": t.clickable
@@ -2215,13 +2290,15 @@ const Gn = E({
2215
2290
  S(o.$slots, "default", {}, void 0, !0)
2216
2291
  ], 2));
2217
2292
  }
2218
- }), Zn = /* @__PURE__ */ ge(Jn, [["__scopeId", "data-v-f86d47da"]]), _n = { class: "background rounded-corner flex flex-row items-center gap-2 justify-between w-full h-auto p-4 transition-[background-color] duration-200 hover:bg-ui-surface/80 dark:hover:bg-ui-surface-dark/80" }, el = ["title", "aria-label"], tl = ["src"], al = {
2293
+ }), pl = /* @__PURE__ */ $e(vl, [["__scopeId", "data-v-f86d47da"]]), yl = { class: "background rounded-corner flex flex-row items-center gap-2 justify-between w-full h-auto p-4 transition-[background-color] duration-200 hover:bg-ui-surface/80 dark:hover:bg-ui-surface-dark/80" }, gl = ["title", "aria-label"], hl = ["src"], xl = {
2219
2294
  key: 1,
2220
2295
  class: "w-8 h-8 flex items-center justify-center"
2221
- }, nl = ["src"], ll = ["min", "max", "value", "aria-label", "aria-valuetext"], ol = /* @__PURE__ */ E({
2296
+ }, wl = ["src"], kl = ["min", "max", "value", "aria-label", "aria-valuetext"], $l = /* @__PURE__ */ D({
2222
2297
  __name: "SliderControl",
2223
2298
  props: {
2224
- icon: {},
2299
+ name: { default: "" },
2300
+ type: { default: "icon" },
2301
+ icon: { default: "" },
2225
2302
  label: {},
2226
2303
  buttonLabel: {},
2227
2304
  modelValue: {},
@@ -2233,7 +2310,13 @@ const Gn = E({
2233
2310
  },
2234
2311
  emits: ["update:modelValue", "buttonClick"],
2235
2312
  setup(e, { emit: n }) {
2236
- const t = e, a = n, l = v(() => {
2313
+ const t = e;
2314
+ W(() => {
2315
+ t.icon && !t.name && console.warn(
2316
+ "[SliderControl] «icon» está obsoleto y se va en la próxima mayor: recibe una ruta ya resuelta. Usá «name» con el nombre del icono del tema, y «type» si hace falta el símbolo."
2317
+ );
2318
+ });
2319
+ const a = n, l = v(() => {
2237
2320
  if (t.max <= t.min) return 0;
2238
2321
  const m = t.max - t.min, f = t.modelValue - t.min;
2239
2322
  return Math.round(f / m * 100);
@@ -2243,8 +2326,8 @@ const Gn = E({
2243
2326
  }, u = () => {
2244
2327
  a("buttonClick");
2245
2328
  };
2246
- return (m, f) => (r(), i("div", _n, [
2247
- e.showButton ? (r(), i("button", {
2329
+ return (m, f) => (i(), r("div", yl, [
2330
+ e.showButton ? (i(), r("button", {
2248
2331
  key: 0,
2249
2332
  onClick: u,
2250
2333
  type: "button",
@@ -2252,19 +2335,32 @@ const Gn = E({
2252
2335
  "aria-label": e.buttonLabel ?? e.label,
2253
2336
  class: "w-8 h-8 flex items-center justify-center rounded-corner transition-[background-color,scale] duration-200 hover:bg-ui-surface/80 dark:hover:bg-ui-surface-dark/80 hover:scale-110 active:scale-95"
2254
2337
  }, [
2255
- T("img", {
2338
+ e.name ? (i(), U(N, {
2339
+ key: 0,
2340
+ name: e.name,
2341
+ type: e.type,
2342
+ size: 24,
2343
+ class: y(e.iconClass)
2344
+ }, null, 8, ["name", "type", "class"])) : (i(), r("img", {
2345
+ key: 1,
2256
2346
  src: e.icon,
2257
2347
  alt: "",
2258
- class: h(["w-6 h-6", e.iconClass])
2259
- }, null, 10, tl)
2260
- ], 8, el)) : (r(), i("div", al, [
2261
- T("img", {
2348
+ class: y(["w-6 h-6", e.iconClass])
2349
+ }, null, 10, hl))
2350
+ ], 8, gl)) : (i(), r("div", xl, [
2351
+ e.name ? (i(), U(N, {
2352
+ key: 0,
2353
+ name: e.name,
2354
+ type: e.type,
2355
+ size: 24
2356
+ }, null, 8, ["name", "type"])) : (i(), r("img", {
2357
+ key: 1,
2262
2358
  src: e.icon,
2263
2359
  alt: "",
2264
2360
  class: "w-6 h-6"
2265
- }, null, 8, nl)
2361
+ }, null, 8, wl))
2266
2362
  ])),
2267
- T("input", {
2363
+ B("input", {
2268
2364
  type: "range",
2269
2365
  min: e.min,
2270
2366
  max: e.max,
@@ -2273,13 +2369,13 @@ const Gn = E({
2273
2369
  "aria-label": e.label,
2274
2370
  "aria-valuetext": `${l.value}%`,
2275
2371
  class: "flex-1 transition-[scale] duration-200 hover:scale-105"
2276
- }, null, 40, ll),
2277
- T("span", {
2278
- class: h(["w-12 text-right transition-[color] duration-200 font-medium", o.value])
2279
- }, V(l.value) + "% ", 3)
2372
+ }, null, 40, kl),
2373
+ B("span", {
2374
+ class: y(["w-12 text-right transition-[color] duration-200 font-medium", o.value])
2375
+ }, M(l.value) + "% ", 3)
2280
2376
  ]));
2281
2377
  }
2282
- }), Be = /* @__PURE__ */ E({
2378
+ }), je = /* @__PURE__ */ D({
2283
2379
  __name: "SwitchTrack",
2284
2380
  props: {
2285
2381
  on: { type: Boolean },
@@ -2287,15 +2383,15 @@ const Gn = E({
2287
2383
  },
2288
2384
  setup(e) {
2289
2385
  const n = e, t = v(() => n.size === "small");
2290
- return (a, l) => (r(), i("span", {
2386
+ return (a, l) => (i(), r("span", {
2291
2387
  "aria-hidden": "true",
2292
- class: h(["inline-flex shrink-0 items-center rounded-full border transition-colors", [
2388
+ class: y(["inline-flex shrink-0 items-center rounded-full border transition-colors", [
2293
2389
  t.value ? "h-6 w-11" : "h-7 w-12",
2294
2390
  e.on ? "border-transparent bg-primary" : "border-ui-border-strong bg-ui-surface"
2295
2391
  ]])
2296
2392
  }, [
2297
- T("span", {
2298
- class: h(["inline-block transform rounded-full shadow transition-transform", [
2393
+ B("span", {
2394
+ class: y(["inline-block transform rounded-full shadow transition-transform", [
2299
2395
  t.value ? "h-4 w-4" : "h-5 w-5",
2300
2396
  e.on ? "bg-tx-on-primary" : "bg-tx-main",
2301
2397
  e.on ? "translate-x-6" : "translate-x-1"
@@ -2303,10 +2399,10 @@ const Gn = E({
2303
2399
  }, null, 2)
2304
2400
  ], 2));
2305
2401
  }
2306
- }), rl = ["aria-checked", "disabled"], il = { class: "min-w-0 flex-1" }, sl = { class: "block font-medium text-sm text-tx-main" }, ul = {
2402
+ }), Cl = ["aria-checked", "disabled"], zl = { class: "min-w-0 flex-1" }, El = { class: "block font-medium text-sm text-tx-main" }, Ll = {
2307
2403
  key: 0,
2308
2404
  class: "mt-0.5 block text-tx-muted text-xs"
2309
- }, cl = /* @__PURE__ */ E({
2405
+ }, Dl = /* @__PURE__ */ D({
2310
2406
  __name: "SwitchRow",
2311
2407
  props: {
2312
2408
  modelValue: { type: Boolean },
@@ -2319,7 +2415,7 @@ const Gn = E({
2319
2415
  emits: ["update:modelValue"],
2320
2416
  setup(e, { emit: n }) {
2321
2417
  const t = e, a = n;
2322
- return (l, o) => (r(), i("button", {
2418
+ return (l, o) => (i(), r("button", {
2323
2419
  type: "button",
2324
2420
  role: "switch",
2325
2421
  "aria-checked": e.modelValue,
@@ -2327,30 +2423,30 @@ const Gn = E({
2327
2423
  class: "flex w-full items-start gap-3 rounded-corner p-2 text-left transition-colors hover:bg-ui-surface/60 disabled:cursor-not-allowed disabled:opacity-60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2",
2328
2424
  onClick: o[0] || (o[0] = (s) => a("update:modelValue", !t.modelValue))
2329
2425
  }, [
2330
- O(Be, {
2426
+ O(je, {
2331
2427
  on: e.modelValue,
2332
2428
  class: "mt-0.5"
2333
2429
  }, null, 8, ["on"]),
2334
- e.icon ? (r(), i("span", {
2430
+ e.icon ? (i(), r("span", {
2335
2431
  key: 0,
2336
- class: h(["flex size-10 shrink-0 items-center justify-center rounded-corner border", e.modelValue ? "border-secondary bg-primary/20" : "border-ui-border bg-ui-surface/40"]),
2432
+ class: y(["flex size-10 shrink-0 items-center justify-center rounded-corner border", e.modelValue ? "border-secondary bg-primary/20" : "border-ui-border bg-ui-surface/40"]),
2337
2433
  "aria-hidden": "true"
2338
2434
  }, [
2339
- O(H, {
2435
+ O(N, {
2340
2436
  name: e.icon,
2341
2437
  type: e.iconType,
2342
2438
  size: 24,
2343
2439
  alt: ""
2344
2440
  }, null, 8, ["name", "type"])
2345
2441
  ], 2)) : x("", !0),
2346
- T("span", il, [
2347
- T("span", sl, V(e.label), 1),
2348
- e.description ? (r(), i("span", ul, V(e.description), 1)) : x("", !0),
2442
+ B("span", zl, [
2443
+ B("span", El, M(e.label), 1),
2444
+ e.description ? (i(), r("span", Ll, M(e.description), 1)) : x("", !0),
2349
2445
  S(l.$slots, "pie")
2350
2446
  ])
2351
- ], 8, rl));
2447
+ ], 8, Cl));
2352
2448
  }
2353
- }), dl = ["aria-checked", "aria-label", "disabled"], fl = /* @__PURE__ */ E({
2449
+ }), Tl = ["aria-checked", "aria-label", "disabled"], Al = /* @__PURE__ */ D({
2354
2450
  __name: "SwitchToggle",
2355
2451
  props: {
2356
2452
  modelValue: { type: Boolean },
@@ -2364,7 +2460,7 @@ const Gn = E({
2364
2460
  function l() {
2365
2461
  a("update:modelValue", !t.modelValue);
2366
2462
  }
2367
- return (o, s) => (r(), i("button", {
2463
+ return (o, s) => (i(), r("button", {
2368
2464
  type: "button",
2369
2465
  role: "switch",
2370
2466
  "aria-checked": e.modelValue,
@@ -2373,16 +2469,18 @@ const Gn = E({
2373
2469
  class: "rounded-full transition-opacity disabled:cursor-not-allowed disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2",
2374
2470
  onClick: l
2375
2471
  }, [
2376
- O(Be, {
2472
+ O(je, {
2377
2473
  on: e.modelValue,
2378
2474
  size: e.size
2379
2475
  }, null, 8, ["on", "size"])
2380
- ], 8, dl));
2476
+ ], 8, Tl));
2381
2477
  }
2382
- }), ml = ["disabled", "title", "aria-label", "aria-pressed", "aria-busy"], bl = ["src"], vl = /* @__PURE__ */ E({
2478
+ }), Bl = ["disabled", "title", "aria-label", "aria-pressed", "aria-busy"], Sl = ["src"], Ml = /* @__PURE__ */ D({
2383
2479
  __name: "ToggleControl",
2384
2480
  props: {
2385
- icon: {},
2481
+ name: { default: "" },
2482
+ type: { default: "icon" },
2483
+ icon: { default: "" },
2386
2484
  label: {},
2387
2485
  pressed: { type: [Boolean, null], default: null },
2388
2486
  isActive: { type: Boolean, default: !1 },
@@ -2392,13 +2490,19 @@ const Gn = E({
2392
2490
  },
2393
2491
  emits: ["click"],
2394
2492
  setup(e, { emit: n }) {
2395
- const t = n;
2396
- function a() {
2397
- t("click");
2493
+ const t = e;
2494
+ W(() => {
2495
+ t.icon && !t.name && console.warn(
2496
+ "[ToggleControl] «icon» está obsoleto y se va en la próxima mayor: recibe una ruta ya resuelta. Usá «name» con el nombre del icono del tema, y «type» si hace falta el símbolo."
2497
+ );
2498
+ });
2499
+ const a = n;
2500
+ function l() {
2501
+ a("click");
2398
2502
  }
2399
- return (l, o) => (r(), i("button", {
2503
+ return (o, s) => (i(), r("button", {
2400
2504
  type: "button",
2401
- class: h(["p-2 rounded-corner bg-ui-bg/80 hover:opacity-50 transition-[opacity,scale,box-shadow] duration-300 h-17.5 w-17.5 group relative overflow-hidden hover:scale-105 hover:shadow-lg active:scale-95 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2", {
2505
+ class: y(["p-2 rounded-corner bg-ui-bg/80 hover:opacity-50 transition-[opacity,scale,box-shadow] duration-300 h-17.5 w-17.5 group relative overflow-hidden hover:scale-105 hover:shadow-lg active:scale-95 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2", {
2402
2506
  "animate-pulse": e.isLoading,
2403
2507
  "ring-2 ring-primary": e.isActive,
2404
2508
  "opacity-60": !e.isActive,
@@ -2409,23 +2513,35 @@ const Gn = E({
2409
2513
  "aria-label": e.label,
2410
2514
  "aria-pressed": e.pressed ?? void 0,
2411
2515
  "aria-busy": e.isLoading || void 0,
2412
- onClick: a
2516
+ onClick: l
2413
2517
  }, [
2414
- T("img", {
2518
+ e.name ? (i(), U(N, {
2519
+ key: 0,
2520
+ name: e.name,
2521
+ type: e.type,
2522
+ size: 50,
2523
+ class: y(["m-auto transition-[scale,filter] duration-300 group-hover:scale-110 relative z-10", {
2524
+ "animate-spin": e.isLoading,
2525
+ "filter brightness-75": !e.isActive,
2526
+ "drop-shadow-lg": e.isActive,
2527
+ ...e.iconClass
2528
+ }])
2529
+ }, null, 8, ["name", "type", "class"])) : (i(), r("img", {
2530
+ key: 1,
2415
2531
  src: e.icon,
2416
2532
  alt: "",
2417
- class: h(["m-auto w-12.5 h-12.5 transition-[scale,filter] duration-300 group-hover:scale-110 relative z-10", {
2533
+ class: y(["m-auto w-12.5 h-12.5 transition-[scale,filter] duration-300 group-hover:scale-110 relative z-10", {
2418
2534
  "animate-spin": e.isLoading,
2419
2535
  "filter brightness-75": !e.isActive,
2420
2536
  "drop-shadow-lg": e.isActive,
2421
2537
  ...e.iconClass
2422
2538
  }])
2423
- }, null, 10, bl)
2424
- ], 10, ml));
2539
+ }, null, 10, Sl))
2540
+ ], 10, Bl));
2425
2541
  }
2426
- }), lt = /* @__PURE__ */ Symbol("tooltip de vasak");
2427
- function ot() {
2428
- const e = pe(lt, null);
2542
+ }), ft = /* @__PURE__ */ Symbol("tooltip de vasak");
2543
+ function mt() {
2544
+ const e = we(ft, null);
2429
2545
  if (e) return e;
2430
2546
  const n = w(!1);
2431
2547
  return {
@@ -2441,7 +2557,7 @@ function ot() {
2441
2557
  }
2442
2558
  };
2443
2559
  }
2444
- const pl = { class: "inline-block" }, yl = /* @__PURE__ */ E({
2560
+ const Vl = { class: "inline-block" }, Il = /* @__PURE__ */ D({
2445
2561
  __name: "Tooltip",
2446
2562
  props: {
2447
2563
  disabled: { type: Boolean, default: !1 },
@@ -2458,7 +2574,7 @@ const pl = { class: "inline-block" }, yl = /* @__PURE__ */ E({
2458
2574
  function s() {
2459
2575
  l && clearTimeout(l), t.value = !1;
2460
2576
  }
2461
- return fe(lt, {
2577
+ return ye(ft, {
2462
2578
  abierto: v(() => t.value && !n.disabled),
2463
2579
  disparador: a,
2464
2580
  ponerElDisparador: (u) => {
@@ -2466,11 +2582,11 @@ const pl = { class: "inline-block" }, yl = /* @__PURE__ */ E({
2466
2582
  },
2467
2583
  abrir: o,
2468
2584
  cerrar: s
2469
- }), (u, m) => (r(), i("div", pl, [
2585
+ }), (u, m) => (i(), r("div", Vl, [
2470
2586
  S(u.$slots, "default")
2471
2587
  ]));
2472
2588
  }
2473
- }), gl = /* @__PURE__ */ E({
2589
+ }), Ol = /* @__PURE__ */ D({
2474
2590
  inheritAttrs: !1,
2475
2591
  __name: "TooltipContent",
2476
2592
  props: {
@@ -2479,87 +2595,89 @@ const pl = { class: "inline-block" }, yl = /* @__PURE__ */ E({
2479
2595
  sideOffset: { default: 4 }
2480
2596
  },
2481
2597
  setup(e) {
2482
- const n = Ce(), t = v(() => n.class ?? ""), a = e, l = ot(), o = v(() => l.abierto.value), s = w(null), u = w({ top: 0, left: 0 });
2598
+ const n = Be(), t = v(() => n.class ?? ""), a = e, l = mt(), o = v(() => l.abierto.value), s = w(null), u = w({ top: 0, left: 0 });
2483
2599
  function m() {
2484
2600
  const f = l.disparador.value;
2485
2601
  if (!f || !s.value) return;
2486
- const d = f.getBoundingClientRect(), L = s.value.getBoundingClientRect();
2487
- let D = 0, A = 0;
2602
+ const d = f.getBoundingClientRect(), E = s.value.getBoundingClientRect();
2603
+ let L = 0, A = 0;
2488
2604
  switch (a.side) {
2489
2605
  case "bottom":
2490
- D = d.bottom + a.sideOffset, A = d.left + d.width / 2 - L.width / 2;
2606
+ L = d.bottom + a.sideOffset, A = d.left + d.width / 2 - E.width / 2;
2491
2607
  break;
2492
2608
  case "top":
2493
- D = d.top - L.height - a.sideOffset, A = d.left + d.width / 2 - L.width / 2;
2609
+ L = d.top - E.height - a.sideOffset, A = d.left + d.width / 2 - E.width / 2;
2494
2610
  break;
2495
2611
  case "left":
2496
- A = d.left - L.width - a.sideOffset, D = d.top + d.height / 2 - L.height / 2;
2612
+ A = d.left - E.width - a.sideOffset, L = d.top + d.height / 2 - E.height / 2;
2497
2613
  break;
2498
2614
  case "right":
2499
- A = d.right + a.sideOffset, D = d.top + d.height / 2 - L.height / 2;
2615
+ A = d.right + a.sideOffset, L = d.top + d.height / 2 - E.height / 2;
2500
2616
  break;
2501
2617
  }
2502
- u.value = { top: D, left: A };
2618
+ u.value = { top: L, left: A };
2503
2619
  }
2504
- return W(o, async (f) => {
2505
- f && (await Y(), requestAnimationFrame(m));
2506
- }), (f, d) => (r(), Q(me, { to: "body" }, [
2507
- O(ye, {
2620
+ return Q(o, async (f) => {
2621
+ f && (await J(), requestAnimationFrame(m));
2622
+ }), (f, d) => (i(), U(ge, { to: "body" }, [
2623
+ O(ke, {
2508
2624
  "enter-active-class": "transition-all duration-200 ease-in-out",
2509
2625
  "leave-active-class": "transition-all duration-200 ease-in-out",
2510
2626
  "enter-from-class": "opacity-0 scale-95",
2511
2627
  "leave-to-class": "opacity-0 scale-95"
2512
2628
  }, {
2513
- default: K(() => [
2514
- ze(T("div", {
2629
+ default: G(() => [
2630
+ Se(B("div", {
2515
2631
  ref_key: "globo",
2516
2632
  ref: s,
2517
- style: se({ position: "fixed", top: `${u.value.top}px`, left: `${u.value.left}px`, zIndex: 50 }),
2518
- class: h([
2633
+ style: fe({ position: "fixed", top: `${u.value.top}px`, left: `${u.value.left}px`, zIndex: 50 }),
2634
+ class: y([
2519
2635
  t.value,
2520
2636
  "pointer-events-none rounded-corner border border-secondary bg-ui-bg/80 px-2 py-1 text-sm shadow-md"
2521
2637
  ])
2522
2638
  }, [
2523
2639
  S(f.$slots, "default")
2524
2640
  ], 6), [
2525
- [Ne, o.value]
2641
+ [Ye, o.value]
2526
2642
  ])
2527
2643
  ]),
2528
2644
  _: 3
2529
2645
  })
2530
2646
  ]));
2531
2647
  }
2532
- }), hl = /* @__PURE__ */ E({
2648
+ }), jl = /* @__PURE__ */ D({
2533
2649
  __name: "TooltipTrigger",
2534
2650
  setup(e) {
2535
- const n = ot(), t = w(null);
2651
+ const n = mt(), t = w(null);
2536
2652
  function a() {
2537
2653
  return t.value ? t.value.firstElementChild ?? t.value : null;
2538
2654
  }
2539
2655
  function l() {
2540
2656
  n.ponerElDisparador(a()), n.abrir();
2541
2657
  }
2542
- return X(() => {
2658
+ return W(() => {
2543
2659
  n.ponerElDisparador(a());
2544
- }), (o, s) => (r(), i("div", {
2660
+ }), (o, s) => (i(), r("div", {
2545
2661
  ref_key: "envoltorio",
2546
2662
  ref: t,
2547
2663
  class: "inline-block",
2548
2664
  onMouseenter: l,
2549
- onMouseleave: s[0] || (s[0] = (u) => R(n).cerrar()),
2665
+ onMouseleave: s[0] || (s[0] = (u) => F(n).cerrar()),
2550
2666
  onFocus: l,
2551
- onBlur: s[1] || (s[1] = (u) => R(n).cerrar())
2667
+ onBlur: s[1] || (s[1] = (u) => F(n).cerrar())
2552
2668
  }, [
2553
2669
  S(o.$slots, "default")
2554
2670
  ], 544));
2555
2671
  }
2556
- }), xl = ["title"], wl = ["src", "alt"], kl = {
2557
- key: 0,
2672
+ }), Pl = ["title"], Rl = ["src", "alt"], Fl = {
2673
+ key: 2,
2558
2674
  class: "absolute bottom-1 right-1 bg-primary dark:bg-primary-dark text-white text-xs rounded-full w-4 h-4 flex items-center justify-center font-bold animate-bounce"
2559
- }, $l = /* @__PURE__ */ E({
2675
+ }, Nl = /* @__PURE__ */ D({
2560
2676
  __name: "TrayIconButton",
2561
2677
  props: {
2562
- icon: {},
2678
+ name: { default: "" },
2679
+ type: { default: "icon" },
2680
+ icon: { default: "" },
2563
2681
  alt: { default: "" },
2564
2682
  tooltip: { default: "" },
2565
2683
  badge: { default: null },
@@ -2571,152 +2689,166 @@ const pl = { class: "inline-block" }, yl = /* @__PURE__ */ E({
2571
2689
  },
2572
2690
  emits: ["click"],
2573
2691
  setup(e, { emit: n }) {
2574
- const t = n, a = w(!1), l = () => {
2575
- t("click");
2692
+ const t = e, a = n, l = w(!1);
2693
+ W(() => {
2694
+ t.icon && !t.name && console.warn(
2695
+ "[TrayIconButton] «icon» está obsoleto y se va en la próxima mayor: recibe una ruta ya resuelta. Usá «name» con el nombre del icono del tema, y «type» si hace falta el símbolo."
2696
+ );
2697
+ });
2698
+ const o = () => {
2699
+ a("click");
2576
2700
  };
2577
- return (o, s) => (r(), i("div", {
2578
- class: h(["p-1 rounded-corner relative hover:bg-primary dark:hover:bg-primary-dark group transition-[background-color] duration-300", e.customClass]),
2701
+ return (s, u) => (i(), r("div", {
2702
+ class: y(["p-1 rounded-corner relative hover:bg-primary dark:hover:bg-primary-dark group transition-[background-color] duration-300", e.customClass]),
2579
2703
  title: e.tooltip,
2580
- onClick: l,
2581
- onMouseenter: s[0] || (s[0] = (u) => a.value = !0),
2582
- onMouseleave: s[1] || (s[1] = (u) => a.value = !1)
2704
+ onClick: o,
2705
+ onMouseenter: u[0] || (u[0] = (m) => l.value = !0),
2706
+ onMouseleave: u[1] || (u[1] = (m) => l.value = !1)
2583
2707
  }, [
2584
- T("img", {
2585
- src: e.icon,
2708
+ e.name ? (i(), U(N, {
2709
+ key: 0,
2710
+ name: e.name,
2711
+ type: e.type,
2712
+ size: 22,
2586
2713
  alt: e.alt,
2587
- class: h(["m-auto h-5.5 w-auto", e.iconClass])
2588
- }, null, 10, wl),
2589
- e.badge !== null && e.badge > 0 ? (r(), i("div", kl, V(e.badge), 1)) : x("", !0),
2590
- e.showCustomTooltip && e.customTooltipText ? (r(), i("div", {
2714
+ class: y(["m-auto", e.iconClass])
2715
+ }, null, 8, ["name", "type", "alt", "class"])) : (i(), r("img", {
2591
2716
  key: 1,
2592
- class: h(["absolute top-1 left-1/2 transform -translate-x-1/2 text-xs font-semibold p-1 rounded-corner transition-[opacity,translate] duration-300 pointer-events-none background", [
2717
+ src: e.icon,
2718
+ alt: e.alt,
2719
+ class: y(["m-auto h-5.5 w-auto", e.iconClass])
2720
+ }, null, 10, Rl)),
2721
+ e.badge !== null && e.badge > 0 ? (i(), r("div", Fl, M(e.badge), 1)) : x("", !0),
2722
+ e.showCustomTooltip && e.customTooltipText ? (i(), r("div", {
2723
+ key: 3,
2724
+ class: y(["absolute top-1 left-1/2 transform -translate-x-1/2 text-xs font-semibold p-1 rounded-corner transition-[opacity,translate] duration-300 pointer-events-none background", [
2593
2725
  e.tooltipClass,
2594
2726
  {
2595
- "opacity-0 -translate-y-2": !a.value,
2596
- "opacity-100 translate-y-0": a.value
2727
+ "opacity-0 -translate-y-2": !l.value,
2728
+ "opacity-100 translate-y-0": l.value
2597
2729
  }
2598
2730
  ]])
2599
- }, V(e.customTooltipText), 3)) : x("", !0),
2600
- S(o.$slots, "default")
2601
- ], 42, xl));
2731
+ }, M(e.customTooltipText), 3)) : x("", !0),
2732
+ S(s.$slots, "default")
2733
+ ], 42, Pl));
2602
2734
  }
2603
- }), Cl = [
2604
- Kt,
2605
- Ke,
2606
- Ue,
2607
- Xt,
2608
- H,
2735
+ }), ql = [
2609
2736
  ua,
2610
- Qe,
2611
- Ge,
2612
- wa,
2613
- Ye,
2737
+ _e,
2738
+ Ze,
2739
+ ba,
2740
+ N,
2614
2741
  La,
2615
- Va,
2616
- Pa,
2617
- qa,
2618
- Ha,
2619
- Qa,
2620
- Te,
2621
- un,
2622
- Xe,
2623
- Ka,
2624
- fn,
2625
- wn,
2626
- $n,
2627
- Dn,
2628
- Tn,
2742
+ at,
2743
+ tt,
2744
+ Ra,
2745
+ nt,
2746
+ Ua,
2747
+ Ja,
2748
+ an,
2749
+ on,
2750
+ sn,
2751
+ mn,
2752
+ Oe,
2753
+ Ln,
2754
+ lt,
2755
+ cn,
2629
2756
  An,
2630
- Vn,
2631
- In,
2632
- jn,
2633
2757
  Rn,
2634
2758
  Nn,
2635
- Hn,
2636
2759
  Kn,
2637
2760
  Gn,
2638
- Xn,
2639
- Zn,
2640
- ol,
2641
- cl,
2642
- fl,
2643
- Be,
2644
- vl,
2645
- yl,
2646
- gl,
2647
- hl,
2648
- $l
2649
- ], Sl = {
2761
+ Yn,
2762
+ Jn,
2763
+ _n,
2764
+ tl,
2765
+ ll,
2766
+ il,
2767
+ rl,
2768
+ ul,
2769
+ dl,
2770
+ bl,
2771
+ pl,
2772
+ $l,
2773
+ Dl,
2774
+ Al,
2775
+ je,
2776
+ Ml,
2777
+ Il,
2778
+ Ol,
2779
+ jl,
2780
+ Nl
2781
+ ], Xl = {
2650
2782
  install(e) {
2651
- Cl.forEach((n) => {
2783
+ ql.forEach((n) => {
2652
2784
  e.component(n.name, n);
2653
2785
  });
2654
2786
  }
2655
2787
  };
2656
2788
  export {
2657
- Va as ActionButton,
2658
- Pa as AlertMessage,
2659
- Qe as AppBar,
2660
- La as BarSearch,
2661
- Je as CLASES_POR_TONO,
2662
- _e as CLAVE_DEL_DIALOGO,
2663
- tt as CLAVE_DEL_MENU,
2664
- lt as CLAVE_DEL_TOOLTIP,
2665
- De as CLAVE_DE_LA_BARRA,
2666
- fn as ConfigSection,
2667
- wn as DeviceCard,
2668
- $n as Dialog,
2669
- Dn as DialogContent,
2670
- Tn as DialogDescription,
2671
- An as DialogFooter,
2672
- Vn as DialogHeader,
2673
- In as DialogTitle,
2674
- jn as DropdownMenu,
2675
- Rn as DropdownMenuContent,
2676
- Nn as DropdownMenuItem,
2677
- Hn as DropdownMenuLabel,
2678
- Kn as DropdownMenuSeparator,
2679
- Gn as DropdownMenuTrigger,
2680
- qa as EmptyState,
2681
- Xn as FormGroup,
2682
- Ee as LOS_TRES_CONTROLES,
2683
- Zn as ListCard,
2684
- Ha as LoadingState,
2685
- Jt as POSICIONES,
2686
- Qa as ProgressBar,
2687
- Te as SearchField,
2688
- un as SearchSelect,
2689
- Xt as SelectField,
2690
- Kt as SideBar,
2691
- Ke as SideButton,
2692
- Ue as SideGroup,
2693
- ol as SliderControl,
2694
- cl as SwitchRow,
2695
- fl as SwitchToggle,
2696
- Be as SwitchTrack,
2697
- wa as TabBar,
2698
- Ye as TabItem,
2699
- Xe as TextInput,
2700
- H as ThemeIcon,
2701
- Ka as ToastArea,
2702
- vl as ToggleControl,
2703
- yl as Tooltip,
2704
- gl as TooltipContent,
2705
- hl as TooltipTrigger,
2706
- $l as TrayIconButton,
2707
- Ge as WindowControls,
2708
- ua as WindowFrame,
2709
- Xa as buscarOpciones,
2710
- Sl as default,
2711
- Zt as esPosicion,
2712
- Bl as olvidarLosIconosDelTema,
2713
- $e as orientacionDe,
2714
- ta as posicionDe,
2715
- Ze as rolDelTono,
2716
- et as usarElDialogo,
2717
- he as usarElMenu,
2718
- ot as usarElTooltip,
2719
- be as usarLaBarra,
2720
- aa as usarLaPosicionDeLaBarra,
2721
- Al as usarLaVersionDelTema
2789
+ Ja as ActionButton,
2790
+ an as AlertMessage,
2791
+ at as AppBar,
2792
+ Ua as BarSearch,
2793
+ ot as CLASES_POR_TONO,
2794
+ rt as CLAVE_DEL_DIALOGO,
2795
+ ut as CLAVE_DEL_MENU,
2796
+ ft as CLAVE_DEL_TOOLTIP,
2797
+ Ve as CLAVE_DE_LA_BARRA,
2798
+ An as ConfigSection,
2799
+ Rn as DeviceCard,
2800
+ Nn as Dialog,
2801
+ Kn as DialogContent,
2802
+ Gn as DialogDescription,
2803
+ Yn as DialogFooter,
2804
+ Jn as DialogHeader,
2805
+ _n as DialogTitle,
2806
+ tl as DropdownMenu,
2807
+ ll as DropdownMenuContent,
2808
+ il as DropdownMenuItem,
2809
+ rl as DropdownMenuLabel,
2810
+ ul as DropdownMenuSeparator,
2811
+ dl as DropdownMenuTrigger,
2812
+ on as EmptyState,
2813
+ bl as FormGroup,
2814
+ Ie as LOS_TRES_CONTROLES,
2815
+ pl as ListCard,
2816
+ sn as LoadingState,
2817
+ va as POSICIONES,
2818
+ mn as ProgressBar,
2819
+ Oe as SearchField,
2820
+ Ln as SearchSelect,
2821
+ ba as SelectField,
2822
+ ua as SideBar,
2823
+ _e as SideButton,
2824
+ Ze as SideGroup,
2825
+ $l as SliderControl,
2826
+ Dl as SwitchRow,
2827
+ Al as SwitchToggle,
2828
+ je as SwitchTrack,
2829
+ Ra as TabBar,
2830
+ nt as TabItem,
2831
+ lt as TextInput,
2832
+ N as ThemeIcon,
2833
+ cn as ToastArea,
2834
+ Ml as ToggleControl,
2835
+ Il as Tooltip,
2836
+ Ol as TooltipContent,
2837
+ jl as TooltipTrigger,
2838
+ Nl as TrayIconButton,
2839
+ tt as WindowControls,
2840
+ La as WindowFrame,
2841
+ vn as buscarOpciones,
2842
+ Xl as default,
2843
+ pa as esPosicion,
2844
+ Ql as olvidarLosIconosDelTema,
2845
+ Ae as orientacionDe,
2846
+ ha as posicionDe,
2847
+ it as rolDelTono,
2848
+ st as usarElDialogo,
2849
+ Ce as usarElMenu,
2850
+ mt as usarElTooltip,
2851
+ he as usarLaBarra,
2852
+ xa as usarLaPosicionDeLaBarra,
2853
+ Yl as usarLaVersionDelTema
2722
2854
  };