@vasakgroup/vue-libvasak 0.4.1 → 0.6.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,31 +1,31 @@
1
- import { ref as S, onMounted as Q, onUnmounted as ke, watch as Z, defineComponent as L, toRef as ae, computed as y, createElementBlock as n, unref as O, openBlock as l, normalizeStyle as H, createCommentVNode as f, createElementVNode as h, createVNode as V, toDisplayString as w, normalizeClass as d, renderSlot as T, createBlock as F, onBeforeUnmount as _, Fragment as X, renderList as Y, withCtx as W, mergeModels as $e, useAttrs as we, useId as Ce, useModel as ze, withDirectives as Le, mergeProps as Be, isRef as Se, vModelSelect as Ae, inject as Te, provide as ie, createTextVNode as De, createSlots as Ee, withModifiers as z, withKeys as D, Teleport as Me, Transition as Ie, nextTick as re } from "vue";
2
- import { listen as Ve } from "@tauri-apps/api/event";
3
- import { getSymbolSource as je, getIconSource as Oe } from "@vasakgroup/plugin-vicons";
4
- import { getCurrentWindow as Pe } from "@tauri-apps/api/window";
5
- function Ne(e, s) {
6
- const t = S("");
7
- let a = null, o = !1, i = 0;
8
- async function c() {
9
- const u = ++i, m = e.value;
10
- if (!m) {
1
+ import { ref as w, onMounted as W, onUnmounted as Oe, watch as K, defineComponent as z, toRef as se, computed as x, createElementBlock as i, unref as P, openBlock as l, normalizeStyle as ee, createCommentVNode as g, createElementVNode as C, createVNode as F, toDisplayString as I, normalizeClass as p, renderSlot as A, createBlock as q, onBeforeUnmount as G, Fragment as U, renderList as Y, withCtx as R, mergeModels as je, useAttrs as Ve, useId as Pe, useModel as Fe, withDirectives as me, mergeProps as J, isRef as Ne, vModelSelect as Re, inject as be, getCurrentInstance as ve, provide as ae, createTextVNode as qe, toHandlers as pe, createSlots as He, withModifiers as T, withKeys as V, Teleport as ge, Transition as ye, nextTick as ne, vShow as Ue, cloneVNode as We, h as Ke, Comment as Ge, Text as Xe } from "vue";
2
+ import { listen as Ye } from "@tauri-apps/api/event";
3
+ import { getSymbolSource as Je, getIconSource as Qe } from "@vasakgroup/plugin-vicons";
4
+ import { getCurrentWindow as Ze } from "@tauri-apps/api/window";
5
+ function _e(e, n) {
6
+ const t = w("");
7
+ let a = null, o = !1, s = 0;
8
+ async function u() {
9
+ const r = ++s, c = e.value;
10
+ if (!c) {
11
11
  t.value = "";
12
12
  return;
13
13
  }
14
- const v = s.value === "symbol" ? await je(m) : await Oe(m);
15
- u === i && (t.value = v);
14
+ const b = n.value === "symbol" ? await Je(c) : await Qe(c);
15
+ r === s && (t.value = b);
16
16
  }
17
- return Q(async () => {
18
- const u = await Ve("vicons:theme-changed", c);
17
+ return W(async () => {
18
+ const r = await Ye("vicons:theme-changed", u);
19
19
  if (o) {
20
- u();
20
+ r();
21
21
  return;
22
22
  }
23
- a = u, await c();
24
- }), ke(() => {
23
+ a = r, await u();
24
+ }), Oe(() => {
25
25
  o = !0, a?.();
26
- }), Z(e, c), t;
26
+ }), K(e, u), t;
27
27
  }
28
- const Re = ["src", "alt"], M = /* @__PURE__ */ L({
28
+ const et = ["src", "alt"], N = /* @__PURE__ */ z({
29
29
  __name: "ThemeIcon",
30
30
  props: {
31
31
  name: {},
@@ -34,23 +34,23 @@ const Re = ["src", "alt"], M = /* @__PURE__ */ L({
34
34
  alt: { default: "" }
35
35
  },
36
36
  setup(e) {
37
- const s = e, t = Ne(ae(s, "name"), ae(s, "type")), a = y(() => `${s.size}px`);
38
- return (o, i) => O(t) ? (l(), n("img", {
37
+ const n = e, t = _e(se(n, "name"), se(n, "type")), a = x(() => `${n.size}px`);
38
+ return (o, s) => P(t) ? (l(), i("img", {
39
39
  key: 0,
40
- src: O(t),
40
+ src: P(t),
41
41
  alt: e.alt,
42
- style: H({ width: a.value, height: a.value }),
42
+ style: ee({ width: a.value, height: a.value }),
43
43
  class: "shrink-0 object-contain"
44
- }, null, 12, Re)) : (l(), n("span", {
44
+ }, null, 12, et)) : (l(), i("span", {
45
45
  key: 1,
46
- style: H({ width: a.value, height: a.value }),
46
+ style: ee({ width: a.value, height: a.value }),
47
47
  class: "shrink-0"
48
48
  }, null, 4));
49
49
  }
50
- }), Fe = { class: "flex flex-col gap-2" }, We = ["aria-expanded"], Ue = {
50
+ }), tt = { class: "flex flex-col gap-2" }, at = ["aria-expanded"], nt = {
51
51
  key: 1,
52
52
  class: "flex flex-col gap-1"
53
- }, ue = /* @__PURE__ */ L({
53
+ }, he = /* @__PURE__ */ z({
54
54
  __name: "SideGroup",
55
55
  props: {
56
56
  title: {},
@@ -58,40 +58,40 @@ const Re = ["src", "alt"], M = /* @__PURE__ */ L({
58
58
  defaultOpen: { type: Boolean, default: !0 }
59
59
  },
60
60
  setup(e) {
61
- const s = e, t = S(s.defaultOpen);
62
- return Z(
63
- () => s.collapsed,
61
+ const n = e, t = w(n.defaultOpen);
62
+ return K(
63
+ () => n.collapsed,
64
64
  (a) => {
65
65
  a && (t.value = !0);
66
66
  }
67
- ), (a, o) => (l(), n("section", Fe, [
68
- e.collapsed ? f("", !0) : (l(), n("button", {
67
+ ), (a, o) => (l(), i("section", tt, [
68
+ e.collapsed ? g("", !0) : (l(), i("button", {
69
69
  key: 0,
70
70
  type: "button",
71
71
  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",
72
72
  "aria-expanded": t.value,
73
- onClick: o[0] || (o[0] = (i) => t.value = !t.value)
73
+ onClick: o[0] || (o[0] = (s) => t.value = !t.value)
74
74
  }, [
75
- h("span", null, w(e.title), 1),
76
- V(M, {
75
+ C("span", null, I(e.title), 1),
76
+ F(N, {
77
77
  name: "pan-down-symbolic",
78
78
  type: "symbol",
79
79
  size: 12,
80
- class: d(["transition-transform duration-200", t.value ? "" : "-rotate-90"])
80
+ class: p(["transition-transform duration-200", t.value ? "" : "-rotate-90"])
81
81
  }, null, 8, ["class"])
82
- ], 8, We)),
83
- t.value || e.collapsed ? (l(), n("div", Ue, [
84
- T(a.$slots, "default")
85
- ])) : f("", !0)
82
+ ], 8, at)),
83
+ t.value || e.collapsed ? (l(), i("div", nt, [
84
+ A(a.$slots, "default")
85
+ ])) : g("", !0)
86
86
  ]));
87
87
  }
88
- }), Ge = ["title", "aria-label", "disabled", "aria-current"], Xe = { key: 1 }, Ye = {
88
+ }), lt = ["title", "aria-label", "disabled", "aria-current"], ot = { key: 1 }, it = {
89
89
  key: 0,
90
90
  class: "min-w-0 flex-1 truncate font-medium"
91
- }, Ke = {
91
+ }, st = {
92
92
  key: 1,
93
93
  class: "rounded-corner bg-ui-surface px-2 py-0.5 font-semibold text-tx-muted text-xs"
94
- }, ce = /* @__PURE__ */ L({
94
+ }, xe = /* @__PURE__ */ z({
95
95
  __name: "SideButton",
96
96
  props: {
97
97
  label: {},
@@ -103,49 +103,49 @@ const Re = ["src", "alt"], M = /* @__PURE__ */ L({
103
103
  },
104
104
  emits: ["click"],
105
105
  setup(e) {
106
- return (s, t) => (l(), n("button", {
106
+ return (n, t) => (l(), i("button", {
107
107
  type: "button",
108
108
  title: e.collapsed ? e.label : void 0,
109
109
  "aria-label": e.collapsed ? e.label : void 0,
110
110
  disabled: e.disabled,
111
111
  "aria-current": e.active ? "page" : void 0,
112
- class: d(["group relative flex w-full items-center gap-3 rounded-corner border px-3 py-2 text-left text-sm transition-all duration-200", [
112
+ class: p(["group relative flex w-full items-center gap-3 rounded-corner border px-3 py-2 text-left text-sm transition-all duration-200", [
113
113
  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",
114
114
  e.disabled ? "cursor-not-allowed opacity-60" : "cursor-pointer",
115
115
  e.collapsed ? "justify-center px-2" : ""
116
116
  ]]),
117
- onClick: t[0] || (t[0] = (a) => s.$emit("click"))
117
+ onClick: t[0] || (t[0] = (a) => n.$emit("click"))
118
118
  }, [
119
- h("span", {
120
- class: d(["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" : ""]),
119
+ C("span", {
120
+ class: p(["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" : ""]),
121
121
  "aria-hidden": "true"
122
122
  }, [
123
- e.icon ? (l(), F(M, {
123
+ e.icon ? (l(), q(N, {
124
124
  key: 0,
125
125
  name: e.icon,
126
126
  size: 20
127
- }, null, 8, ["name"])) : (l(), n("span", Xe, w(e.label.charAt(0).toUpperCase()), 1))
127
+ }, null, 8, ["name"])) : (l(), i("span", ot, I(e.label.charAt(0).toUpperCase()), 1))
128
128
  ], 2),
129
- e.collapsed ? f("", !0) : (l(), n("span", Ye, w(e.label), 1)),
130
- !e.collapsed && e.badge !== "" ? (l(), n("span", Ke, w(e.badge), 1)) : f("", !0)
131
- ], 10, Ge));
129
+ e.collapsed ? g("", !0) : (l(), i("span", it, I(e.label), 1)),
130
+ !e.collapsed && e.badge !== "" ? (l(), i("span", st, I(e.badge), 1)) : g("", !0)
131
+ ], 10, lt));
132
132
  }
133
- }), qe = {
133
+ }), rt = {
134
134
  key: 0,
135
135
  class: "flex flex-col gap-2 border-ui-border border-b p-2"
136
- }, He = { class: "flex items-center gap-2" }, Je = ["aria-label", "aria-expanded"], Qe = {
136
+ }, ut = { class: "flex items-center gap-2" }, ct = ["aria-label", "aria-expanded"], dt = {
137
137
  key: 0,
138
138
  class: "min-w-0 flex-1"
139
- }, Ze = {
139
+ }, ft = {
140
140
  key: 0,
141
141
  class: "truncate font-semibold text-sm"
142
- }, _e = {
142
+ }, mt = {
143
143
  key: 1,
144
144
  class: "truncate text-tx-muted text-xs"
145
- }, et = { key: 0 }, tt = {
145
+ }, bt = { key: 0 }, vt = {
146
146
  key: 1,
147
147
  class: "flex border-ui-border border-b p-2"
148
- }, at = ["aria-label", "aria-expanded"], lt = { class: "flex min-h-0 flex-1 flex-col gap-3 overflow-y-auto p-2" }, le = "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, nt = /* @__PURE__ */ L({
148
+ }, pt = ["aria-label", "aria-expanded"], gt = { class: "flex min-h-0 flex-1 flex-col gap-3 overflow-y-auto p-2" }, re = "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", ue = 767, yt = /* @__PURE__ */ z({
149
149
  __name: "SideBar",
150
150
  props: {
151
151
  title: { default: "" },
@@ -157,101 +157,101 @@ const Re = ["src", "alt"], M = /* @__PURE__ */ L({
157
157
  expandLabel: { default: "Expand" }
158
158
  },
159
159
  emits: ["update:modelValue", "update:collapsed", "change"],
160
- setup(e, { expose: s, emit: t }) {
161
- const a = e, o = t, i = S(a.collapsed ?? !1), c = S(!1);
162
- let u = null, m = null;
163
- const v = y(() => c.value || i.value), I = y(() => !!(a.title || a.subtitle));
164
- y(() => a.categories.length > 0);
165
- function N() {
160
+ setup(e, { expose: n, emit: t }) {
161
+ const a = e, o = t, s = w(a.collapsed ?? !1), u = w(!1);
162
+ let r = null, c = null;
163
+ const b = x(() => u.value || s.value), $ = x(() => !!(a.title || a.subtitle));
164
+ x(() => a.categories.length > 0);
165
+ function M() {
166
166
  return document.documentElement?.clientWidth || window.innerWidth;
167
167
  }
168
- function A() {
169
- c.value = N() <= ne;
168
+ function L() {
169
+ u.value = M() <= ue;
170
170
  }
171
171
  function E() {
172
- i.value = !i.value, o("update:collapsed", i.value);
172
+ s.value = !s.value, o("update:collapsed", s.value);
173
173
  }
174
- function P(k) {
175
- o("update:modelValue", k), o("change", k);
174
+ function y(h) {
175
+ o("update:modelValue", h), o("change", h);
176
176
  }
177
- return Z(
177
+ return K(
178
178
  () => a.collapsed,
179
- (k) => {
180
- k !== void 0 && (i.value = k);
179
+ (h) => {
180
+ h !== void 0 && (s.value = h);
181
181
  }
182
- ), Q(() => {
183
- u = window.matchMedia(`(max-width: ${ne}px)`), A(), u.addEventListener("change", A), window.addEventListener("resize", A), typeof ResizeObserver < "u" && document.documentElement && (m = new ResizeObserver(A), m.observe(document.documentElement));
184
- }), _(() => {
185
- u?.removeEventListener("change", A), window.removeEventListener("resize", A), m?.disconnect(), m = null;
186
- }), s({ collapsed: v }), (k, j) => (l(), n("aside", {
187
- class: d(["relative z-30 flex h-full shrink-0 flex-col rounded-corner border border-ui-border bg-ui-surface/70 transition-all duration-300", ["w-[84px]", v.value ? "md:w-[84px]" : "md:w-72"]])
182
+ ), W(() => {
183
+ r = window.matchMedia(`(max-width: ${ue}px)`), L(), r.addEventListener("change", L), window.addEventListener("resize", L), typeof ResizeObserver < "u" && document.documentElement && (c = new ResizeObserver(L), c.observe(document.documentElement));
184
+ }), G(() => {
185
+ r?.removeEventListener("change", L), window.removeEventListener("resize", L), c?.disconnect(), c = null;
186
+ }), n({ collapsed: b }), (h, m) => (l(), i("aside", {
187
+ class: p(["relative z-30 flex h-full shrink-0 flex-col rounded-corner border border-ui-border bg-ui-surface/70 transition-all duration-300", ["w-[84px]", b.value ? "md:w-[84px]" : "md:w-72"]])
188
188
  }, [
189
- I.value || k.$slots.header ? (l(), n("header", qe, [
190
- h("div", He, [
191
- h("button", {
189
+ $.value || h.$slots.header ? (l(), i("header", rt, [
190
+ C("div", ut, [
191
+ C("button", {
192
192
  type: "button",
193
- class: d(le),
194
- "aria-label": v.value ? e.expandLabel : e.collapseLabel,
195
- "aria-expanded": !v.value,
193
+ class: p(re),
194
+ "aria-label": b.value ? e.expandLabel : e.collapseLabel,
195
+ "aria-expanded": !b.value,
196
196
  onClick: E
197
197
  }, [
198
- V(M, {
199
- name: v.value ? "pan-end-symbolic" : "pan-start-symbolic",
198
+ F(N, {
199
+ name: b.value ? "pan-end-symbolic" : "pan-start-symbolic",
200
200
  type: "symbol",
201
201
  size: 16
202
202
  }, null, 8, ["name"])
203
- ], 8, Je),
204
- I.value && !v.value ? (l(), n("div", Qe, [
205
- e.title ? (l(), n("p", Ze, w(e.title), 1)) : f("", !0),
206
- e.subtitle ? (l(), n("p", _e, w(e.subtitle), 1)) : f("", !0)
207
- ])) : f("", !0)
203
+ ], 8, ct),
204
+ $.value && !b.value ? (l(), i("div", dt, [
205
+ e.title ? (l(), i("p", ft, I(e.title), 1)) : g("", !0),
206
+ e.subtitle ? (l(), i("p", mt, I(e.subtitle), 1)) : g("", !0)
207
+ ])) : g("", !0)
208
208
  ]),
209
- k.$slots.header && !v.value ? (l(), n("div", et, [
210
- T(k.$slots, "header", { collapsed: v.value })
211
- ])) : f("", !0)
212
- ])) : (l(), n("div", tt, [
213
- h("button", {
209
+ h.$slots.header && !b.value ? (l(), i("div", bt, [
210
+ A(h.$slots, "header", { collapsed: b.value })
211
+ ])) : g("", !0)
212
+ ])) : (l(), i("div", vt, [
213
+ C("button", {
214
214
  type: "button",
215
- class: d(le),
216
- "aria-label": v.value ? e.expandLabel : e.collapseLabel,
217
- "aria-expanded": !v.value,
215
+ class: p(re),
216
+ "aria-label": b.value ? e.expandLabel : e.collapseLabel,
217
+ "aria-expanded": !b.value,
218
218
  onClick: E
219
219
  }, [
220
- V(M, {
221
- name: v.value ? "pan-end-symbolic" : "pan-start-symbolic",
220
+ F(N, {
221
+ name: b.value ? "pan-end-symbolic" : "pan-start-symbolic",
222
222
  type: "symbol",
223
223
  size: 16
224
224
  }, null, 8, ["name"])
225
- ], 8, at)
225
+ ], 8, pt)
226
226
  ])),
227
- h("div", lt, [
228
- (l(!0), n(X, null, Y(e.categories, (R) => (l(), F(ue, {
229
- key: R.id,
230
- title: R.title,
231
- collapsed: v.value
227
+ C("div", gt, [
228
+ (l(!0), i(U, null, Y(e.categories, (k) => (l(), q(he, {
229
+ key: k.id,
230
+ title: k.title,
231
+ collapsed: b.value
232
232
  }, {
233
- default: W(() => [
234
- (l(!0), n(X, null, Y(R.items, (b) => (l(), F(ce, {
235
- key: b.id,
236
- label: b.label,
237
- icon: b.icon,
238
- badge: b.badge,
239
- disabled: b.disabled,
240
- collapsed: v.value,
241
- active: e.modelValue === b.id,
242
- onClick: (g) => P(b.id)
233
+ default: R(() => [
234
+ (l(!0), i(U, null, Y(k.items, (d) => (l(), q(xe, {
235
+ key: d.id,
236
+ label: d.label,
237
+ icon: d.icon,
238
+ badge: d.badge,
239
+ disabled: d.disabled,
240
+ collapsed: b.value,
241
+ active: e.modelValue === d.id,
242
+ onClick: (v) => y(d.id)
243
243
  }, null, 8, ["label", "icon", "badge", "disabled", "collapsed", "active", "onClick"]))), 128))
244
244
  ]),
245
245
  _: 2
246
246
  }, 1032, ["title", "collapsed"]))), 128)),
247
- T(k.$slots, "default", { collapsed: v.value })
247
+ A(h.$slots, "default", { collapsed: b.value })
248
248
  ])
249
249
  ], 2));
250
250
  }
251
- }), ot = { class: "flex min-w-0 flex-col gap-1" }, st = ["for"], it = { class: "relative flex min-w-0 items-center" }, rt = ["id"], ut = /* @__PURE__ */ L({
251
+ }), ht = { class: "flex min-w-0 flex-col gap-1" }, xt = ["for"], kt = { class: "relative flex min-w-0 items-center" }, wt = ["id"], $t = /* @__PURE__ */ z({
252
252
  inheritAttrs: !1,
253
253
  __name: "SelectField",
254
- props: /* @__PURE__ */ $e({
254
+ props: /* @__PURE__ */ je({
255
255
  label: {}
256
256
  }, {
257
257
  modelValue: {
@@ -261,28 +261,28 @@ const Re = ["src", "alt"], M = /* @__PURE__ */ L({
261
261
  }),
262
262
  emits: ["update:modelValue"],
263
263
  setup(e) {
264
- const s = e, t = we(), a = Ce(), o = y(() => t.id ?? a), [i, c] = ze(e, "modelValue", {
265
- set(u) {
266
- return c.number ? Number(u) : u;
264
+ const n = e, t = Ve(), a = Pe(), o = x(() => t.id ?? a), [s, u] = Fe(e, "modelValue", {
265
+ set(r) {
266
+ return u.number ? Number(r) : r;
267
267
  }
268
268
  });
269
- return (u, m) => (l(), n("div", ot, [
270
- s.label ? (l(), n("label", {
269
+ return (r, c) => (l(), i("div", ht, [
270
+ n.label ? (l(), i("label", {
271
271
  key: 0,
272
272
  for: o.value,
273
273
  class: "text-tx-muted text-xs"
274
- }, w(s.label), 9, st)) : f("", !0),
275
- h("div", it, [
276
- Le(h("select", Be({
274
+ }, I(n.label), 9, xt)) : g("", !0),
275
+ C("div", kt, [
276
+ me(C("select", J({
277
277
  id: o.value,
278
- "onUpdate:modelValue": m[0] || (m[0] = (v) => Se(i) ? i.value = v : null),
278
+ "onUpdate:modelValue": c[0] || (c[0] = (b) => Ne(s) ? s.value = b : null),
279
279
  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"
280
- }, O(t)), [
281
- T(u.$slots, "default")
282
- ], 16, rt), [
283
- [Ae, O(i)]
280
+ }, P(t)), [
281
+ A(r.$slots, "default")
282
+ ], 16, wt), [
283
+ [Re, P(s)]
284
284
  ]),
285
- V(M, {
285
+ F(N, {
286
286
  name: "pan-down-symbolic",
287
287
  type: "symbol",
288
288
  size: 14,
@@ -291,119 +291,153 @@ const Re = ["src", "alt"], M = /* @__PURE__ */ L({
291
291
  ])
292
292
  ]));
293
293
  }
294
- }), ee = /* @__PURE__ */ Symbol("barra de vasak");
295
- function J(e) {
294
+ }), le = /* @__PURE__ */ Symbol("barra de vasak");
295
+ function te(e) {
296
296
  return e === "left" || e === "right" ? "vertical" : "horizontal";
297
297
  }
298
- const ct = ["top", "bottom", "left", "right"];
299
- function dt(e) {
300
- return typeof e == "string" && ct.includes(e);
298
+ const Ct = ["top", "bottom", "left", "right"];
299
+ function zt(e) {
300
+ return typeof e == "string" && Ct.includes(e);
301
301
  }
302
- function G() {
303
- const e = Te(ee, null);
302
+ function X() {
303
+ const e = be(le, null);
304
304
  if (e) return e;
305
- const s = S("top");
305
+ const n = w("top");
306
306
  return {
307
- posicion: s,
308
- orientacion: y(() => J(s.value)),
309
- vertical: y(() => J(s.value) === "vertical")
307
+ posicion: n,
308
+ orientacion: x(() => te(n.value)),
309
+ vertical: x(() => te(n.value) === "vertical")
310
310
  };
311
311
  }
312
- const ft = "window", mt = "barPosition";
313
- function bt(e) {
314
- const t = e?.[ft]?.[mt];
315
- return dt(t) ? t : null;
312
+ const oe = ["minimize", "maximize", "close"], Lt = "window", Et = "barPosition";
313
+ function Dt(e) {
314
+ const t = e?.[Lt]?.[Et];
315
+ return zt(t) ? t : null;
316
316
  }
317
- function vt(e = "top") {
318
- const s = S(e);
317
+ function Bt(e = "top") {
318
+ const n = w(e);
319
319
  let t = null, a = !1;
320
320
  async function o() {
321
321
  try {
322
- const { readConfig: i } = await import("@vasakgroup/plugin-config-manager"), c = await i();
323
- s.value = bt(c) ?? e;
322
+ const { readConfig: s } = await import("@vasakgroup/plugin-config-manager"), u = await s();
323
+ n.value = Dt(u) ?? e;
324
324
  } catch {
325
325
  }
326
326
  }
327
- return Q(async () => {
327
+ return W(async () => {
328
328
  await o();
329
329
  try {
330
- const { listen: i } = await import("@tauri-apps/api/event"), c = await i("config-changed", () => {
330
+ const { listen: s } = await import("@tauri-apps/api/event"), u = await s("config-changed", () => {
331
331
  o();
332
332
  });
333
333
  if (a) {
334
- c();
334
+ u();
335
335
  return;
336
336
  }
337
- t = c;
337
+ t = u;
338
338
  } catch {
339
339
  }
340
- }), _(() => {
340
+ }), G(() => {
341
341
  a = !0, t?.(), t = null;
342
- }), s;
342
+ }), n;
343
343
  }
344
- const gt = ["title", "aria-label"], yt = ["title", "aria-label"], ht = ["title", "aria-label"], q = "flex items-center justify-center rounded-corner border border-ui-border bg-ui-bg/80 p-1 transition-colors", de = /* @__PURE__ */ L({
344
+ function ke(e) {
345
+ const n = ve(), t = {};
346
+ for (const a of e) {
347
+ const o = `on${a[0].toUpperCase()}${a.slice(1)}`;
348
+ n?.vnode.props?.[o] && (t[a] = () => n.emit(a));
349
+ }
350
+ return t;
351
+ }
352
+ const At = ["title", "aria-label"], Mt = ["title", "aria-label"], St = ["title", "aria-label"], _ = "flex items-center justify-center rounded-corner border border-ui-border bg-ui-bg/80 p-1 transition-colors", we = /* @__PURE__ */ z({
345
353
  __name: "WindowControls",
346
354
  props: {
355
+ controls: { default: () => oe },
347
356
  minimizeLabel: { default: "Minimize" },
348
357
  maximizeLabel: { default: "Maximize" },
349
358
  closeLabel: { default: "Close" }
350
359
  },
351
- setup(e) {
352
- const { vertical: s } = G();
353
- function t() {
354
- return Pe();
360
+ emits: ["minimize", "maximize", "close"],
361
+ setup(e, { emit: n }) {
362
+ const t = e, a = n, { vertical: o } = X(), s = x(() => ({
363
+ minimize: t.controls.includes("minimize"),
364
+ maximize: t.controls.includes("maximize"),
365
+ close: t.controls.includes("close")
366
+ }));
367
+ function u() {
368
+ return Ze();
369
+ }
370
+ const r = ve();
371
+ function c(L) {
372
+ return !!r?.vnode.props?.[`on${L}`];
373
+ }
374
+ function b() {
375
+ if (c("Minimize")) return a("minimize");
376
+ u().minimize();
355
377
  }
356
- return (a, o) => (l(), n("div", {
357
- class: d(["flex shrink-0 gap-1", O(s) ? "flex-col" : ""]),
378
+ function $() {
379
+ if (c("Maximize")) return a("maximize");
380
+ u().toggleMaximize();
381
+ }
382
+ function M() {
383
+ if (c("Close")) return a("close");
384
+ u().close();
385
+ }
386
+ return (L, E) => e.controls.length ? (l(), i("div", {
387
+ key: 0,
388
+ class: p(["flex shrink-0 gap-1", P(o) ? "flex-col" : ""]),
358
389
  "data-tauri-drag-region": ""
359
390
  }, [
360
- h("button", {
391
+ s.value.minimize ? (l(), i("button", {
392
+ key: 0,
361
393
  type: "button",
362
- class: d([q, "hover:bg-status-success"]),
394
+ class: p([_, "hover:bg-status-success"]),
363
395
  title: e.minimizeLabel,
364
396
  "aria-label": e.minimizeLabel,
365
- onClick: o[0] || (o[0] = (i) => t().minimize())
397
+ onClick: E[0] || (E[0] = (y) => b())
366
398
  }, [
367
- V(M, {
399
+ F(N, {
368
400
  name: "window-minimize",
369
401
  size: 24
370
402
  })
371
- ], 10, gt),
372
- h("button", {
403
+ ], 10, At)) : g("", !0),
404
+ s.value.maximize ? (l(), i("button", {
405
+ key: 1,
373
406
  type: "button",
374
- class: d([q, "hover:bg-status-warning"]),
407
+ class: p([_, "hover:bg-status-warning"]),
375
408
  title: e.maximizeLabel,
376
409
  "aria-label": e.maximizeLabel,
377
- onClick: o[1] || (o[1] = (i) => t().toggleMaximize())
410
+ onClick: E[1] || (E[1] = (y) => $())
378
411
  }, [
379
- V(M, {
412
+ F(N, {
380
413
  name: "window-maximize",
381
414
  size: 24
382
415
  })
383
- ], 10, yt),
384
- h("button", {
416
+ ], 10, Mt)) : g("", !0),
417
+ s.value.close ? (l(), i("button", {
418
+ key: 2,
385
419
  type: "button",
386
- class: d([q, "hover:bg-status-error"]),
420
+ class: p([_, "hover:bg-status-error"]),
387
421
  title: e.closeLabel,
388
422
  "aria-label": e.closeLabel,
389
- onClick: o[2] || (o[2] = (i) => t().close())
423
+ onClick: E[2] || (E[2] = (y) => M())
390
424
  }, [
391
- V(M, {
425
+ F(N, {
392
426
  name: "window-close",
393
427
  size: 24
394
428
  })
395
- ], 10, ht)
396
- ], 2));
429
+ ], 10, St)) : g("", !0)
430
+ ], 2)) : g("", !0);
397
431
  }
398
- }), pt = {
432
+ }), Tt = {
399
433
  key: 0,
400
434
  class: "flex shrink-0 items-center",
401
435
  "data-tauri-drag-region": ""
402
- }, xt = {
436
+ }, It = {
403
437
  key: 1,
404
438
  class: "min-w-0 shrink truncate text-sm",
405
439
  "data-tauri-drag-region": ""
406
- }, fe = /* @__PURE__ */ L({
440
+ }, $e = /* @__PURE__ */ z({
407
441
  __name: "AppBar",
408
442
  props: {
409
443
  position: { default: null },
@@ -411,47 +445,58 @@ const gt = ["title", "aria-label"], yt = ["title", "aria-label"], ht = ["title",
411
445
  minimizeLabel: { default: "Minimize" },
412
446
  maximizeLabel: { default: "Maximize" },
413
447
  closeLabel: { default: "Close" },
414
- hideControls: { type: Boolean, default: !1 }
448
+ controls: { default: () => oe }
415
449
  },
450
+ emits: ["minimize", "maximize", "close"],
416
451
  setup(e) {
417
- const s = e, t = G(), a = y(() => s.position ?? t.posicion.value), o = y(() => a.value === "left" || a.value === "right");
418
- return ie(ee, {
452
+ const n = e, t = X(), a = x(() => n.position ?? t.posicion.value), o = x(() => a.value === "left" || a.value === "right");
453
+ return ae(le, {
419
454
  posicion: a,
420
- orientacion: y(() => o.value ? "vertical" : "horizontal"),
455
+ orientacion: x(() => o.value ? "vertical" : "horizontal"),
421
456
  vertical: o
422
- }), (i, c) => (l(), n("div", {
423
- class: d(["flex shrink-0 items-center gap-2 p-1 font-title", o.value ? "h-full flex-col" : "w-full"]),
457
+ }), (s, u) => (l(), i("div", {
458
+ class: p(["relative flex shrink-0 items-center gap-2 p-1 font-title", o.value ? "h-full flex-col" : "w-full"]),
424
459
  "data-tauri-drag-region": ""
425
460
  }, [
426
- i.$slots.identidad ? (l(), n("div", pt, [
427
- T(i.$slots, "identidad")
428
- ])) : f("", !0),
429
- (i.$slots.titulo || e.title) && !o.value ? (l(), n("p", xt, [
430
- T(i.$slots, "titulo", {}, () => [
431
- De(w(e.title), 1)
461
+ s.$slots.identidad ? (l(), i("div", Tt, [
462
+ A(s.$slots, "identidad")
463
+ ])) : g("", !0),
464
+ (s.$slots.titulo || e.title) && !o.value ? (l(), i("p", It, [
465
+ A(s.$slots, "titulo", {}, () => [
466
+ qe(I(e.title), 1)
432
467
  ])
433
- ])) : f("", !0),
434
- h("div", {
435
- class: d(["flex min-h-0 min-w-0 flex-1 items-center gap-2 overflow-auto", o.value ? "flex-col" : ""]),
468
+ ])) : g("", !0),
469
+ C("div", {
470
+ class: p(["flex min-h-0 min-w-0 flex-1 items-center gap-2 overflow-auto", o.value ? "flex-col" : ""]),
436
471
  "data-tauri-drag-region": ""
437
472
  }, [
438
- T(i.$slots, "default")
473
+ A(s.$slots, "default")
439
474
  ], 2),
440
- i.$slots.acciones ? (l(), n("div", {
475
+ s.$slots.acciones ? (l(), i("div", {
441
476
  key: 2,
442
- class: d(["flex shrink-0 items-center gap-1", o.value ? "flex-col" : ""])
477
+ class: p(["flex shrink-0 items-center gap-1", o.value ? "flex-col" : ""])
443
478
  }, [
444
- T(i.$slots, "acciones")
445
- ], 2)) : f("", !0),
446
- e.hideControls ? f("", !0) : (l(), F(de, {
447
- key: 3,
479
+ A(s.$slots, "acciones")
480
+ ], 2)) : g("", !0),
481
+ F(we, J({
482
+ controls: e.controls,
448
483
  "minimize-label": e.minimizeLabel,
449
484
  "maximize-label": e.maximizeLabel,
450
485
  "close-label": e.closeLabel
451
- }, null, 8, ["minimize-label", "maximize-label", "close-label"]))
486
+ }, pe(P(ke)(["minimize", "maximize", "close"]))), null, 16, ["controls", "minimize-label", "maximize-label", "close-label"]),
487
+ s.$slots.centro ? (l(), i("div", {
488
+ key: 3,
489
+ class: p(["pointer-events-none absolute flex items-center justify-center", o.value ? "inset-x-0 top-1/2 -translate-y-1/2 flex-col" : "inset-y-0 left-1/2 -translate-x-1/2"])
490
+ }, [
491
+ C("div", {
492
+ class: p(["pointer-events-auto flex items-center gap-2", o.value ? "flex-col" : ""])
493
+ }, [
494
+ A(s.$slots, "centro")
495
+ ], 2)
496
+ ], 2)) : g("", !0)
452
497
  ], 2));
453
498
  }
454
- }), kt = { class: "flex min-h-0 min-w-0 flex-1" }, $t = /* @__PURE__ */ L({
499
+ }), Ot = { class: "flex min-h-0 min-w-0 flex-1" }, jt = /* @__PURE__ */ z({
455
500
  __name: "WindowFrame",
456
501
  props: {
457
502
  position: { default: null },
@@ -459,73 +504,81 @@ const gt = ["title", "aria-label"], yt = ["title", "aria-label"], ht = ["title",
459
504
  minimizeLabel: { default: "Minimize" },
460
505
  maximizeLabel: { default: "Maximize" },
461
506
  closeLabel: { default: "Close" },
462
- hideControls: { type: Boolean, default: !1 },
507
+ controls: { default: () => oe },
463
508
  hideBar: { type: Boolean, default: !1 }
464
509
  },
510
+ emits: ["minimize", "maximize", "close"],
465
511
  setup(e) {
466
- const s = e, t = vt(), a = y(() => s.position ?? t.value), o = y(() => J(a.value)), i = y(() => o.value === "vertical");
467
- ie(ee, { posicion: a, orientacion: o, vertical: i });
468
- const c = {
512
+ const n = e, t = Bt(), a = x(() => n.position ?? t.value), o = x(() => te(a.value)), s = x(() => o.value === "vertical");
513
+ ae(le, { posicion: a, orientacion: o, vertical: s });
514
+ const u = {
469
515
  top: "flex-col",
470
516
  bottom: "flex-col-reverse",
471
517
  left: "flex-row",
472
518
  right: "flex-row-reverse"
473
519
  };
474
- return (u, m) => (l(), n("div", {
475
- class: d(["flex h-screen w-screen overflow-hidden rounded-corner-window border border-ui-border bg-ui-bg/80", c[a.value]])
520
+ return (r, c) => (l(), i("div", {
521
+ class: p(["flex h-screen w-screen overflow-hidden rounded-corner-window border border-ui-border bg-ui-bg/80", u[a.value]])
476
522
  }, [
477
- e.hideBar ? f("", !0) : (l(), F(fe, {
523
+ e.hideBar ? g("", !0) : (l(), q($e, J({
478
524
  key: 0,
479
525
  position: a.value,
480
526
  title: e.title,
481
527
  "minimize-label": e.minimizeLabel,
482
528
  "maximize-label": e.maximizeLabel,
483
529
  "close-label": e.closeLabel,
484
- "hide-controls": e.hideControls
485
- }, Ee({
486
- default: W(() => [
487
- T(u.$slots, "barra")
530
+ controls: e.controls
531
+ }, pe(P(ke)(["minimize", "maximize", "close"]))), He({
532
+ default: R(() => [
533
+ A(r.$slots, "barra")
488
534
  ]),
489
535
  _: 2
490
536
  }, [
491
- u.$slots.identidad ? {
537
+ r.$slots.identidad ? {
492
538
  name: "identidad",
493
- fn: W(() => [
494
- T(u.$slots, "identidad")
539
+ fn: R(() => [
540
+ A(r.$slots, "identidad")
495
541
  ]),
496
542
  key: "0"
497
543
  } : void 0,
498
- u.$slots.titulo ? {
544
+ r.$slots.titulo ? {
499
545
  name: "titulo",
500
- fn: W(() => [
501
- T(u.$slots, "titulo")
546
+ fn: R(() => [
547
+ A(r.$slots, "titulo")
502
548
  ]),
503
549
  key: "1"
504
550
  } : void 0,
505
- u.$slots.acciones ? {
506
- name: "acciones",
507
- fn: W(() => [
508
- T(u.$slots, "acciones")
551
+ r.$slots.centro ? {
552
+ name: "centro",
553
+ fn: R(() => [
554
+ A(r.$slots, "centro")
509
555
  ]),
510
556
  key: "2"
557
+ } : void 0,
558
+ r.$slots.acciones ? {
559
+ name: "acciones",
560
+ fn: R(() => [
561
+ A(r.$slots, "acciones")
562
+ ]),
563
+ key: "3"
511
564
  } : void 0
512
- ]), 1032, ["position", "title", "minimize-label", "maximize-label", "close-label", "hide-controls"])),
513
- h("div", kt, [
514
- T(u.$slots, "default")
565
+ ]), 1040, ["position", "title", "minimize-label", "maximize-label", "close-label", "controls"])),
566
+ C("div", Ot, [
567
+ A(r.$slots, "default")
515
568
  ])
516
569
  ], 2));
517
570
  }
518
- }), wt = ["aria-selected", "title", "aria-label", "tabindex"], Ct = {
571
+ }), Vt = ["aria-selected", "title", "aria-label", "tabindex"], Pt = {
519
572
  key: 1,
520
573
  "aria-hidden": "true"
521
- }, zt = {
574
+ }, Ft = {
522
575
  key: 2,
523
576
  class: "min-w-0 flex-1 truncate"
524
- }, Lt = ["title", "aria-label"], Bt = { class: "whitespace-nowrap" }, St = {
577
+ }, Nt = ["title", "aria-label"], Rt = { class: "whitespace-nowrap" }, qt = {
525
578
  key: 0,
526
579
  class: "size-2 shrink-0 rounded-full bg-current",
527
580
  "aria-hidden": "true"
528
- }, At = ["title", "aria-label"], Tt = 500, oe = 8, se = 6, me = /* @__PURE__ */ L({
581
+ }, Ht = ["title", "aria-label"], Ut = 500, ce = 8, de = 6, Ce = /* @__PURE__ */ z({
529
582
  __name: "TabItem",
530
583
  props: {
531
584
  tab: {},
@@ -535,166 +588,166 @@ const gt = ["title", "aria-label"], yt = ["title", "aria-label"], ht = ["title",
535
588
  tabindex: { default: 0 }
536
589
  },
537
590
  emits: ["select", "close", "menu", "mover", "navegar"],
538
- setup(e, { emit: s }) {
539
- const t = e, a = s, { vertical: o, posicion: i } = G(), c = S(null), u = S(null), m = S(!1), v = S(!1), I = S(!1), N = S({ top: 0, left: 0, right: 0 });
540
- let A = null, E = null;
541
- const P = y(() => t.tab.closable !== !1), k = y(() => t.tab.tooltip ?? t.tab.label), j = y(
591
+ setup(e, { emit: n }) {
592
+ const t = e, a = n, { vertical: o, posicion: s } = X(), u = w(null), r = w(null), c = w(!1), b = w(!1), $ = w(!1), M = w({ top: 0, left: 0, right: 0 });
593
+ let L = null, E = null;
594
+ const y = x(() => t.tab.closable !== !1), h = x(() => t.tab.tooltip ?? t.tab.label), m = x(
542
595
  () => t.tab.dirty ? `${t.tab.label} · ${t.dirtyLabel}` : t.tab.label
543
- ), R = y(() => t.tab.label.trim().charAt(0).toUpperCase()), b = y(() => m.value || I.value), g = y(
544
- () => !!t.tab.dirty && !(b.value && P.value)
545
- ), p = y(
546
- () => P.value && (b.value || t.active || !t.tab.dirty)
547
- ), x = y(
548
- () => o.value && (m.value || v.value || I.value)
549
- ), B = y(() => {
550
- const $ = { position: "fixed", top: `${N.value.top}px`, zIndex: 50 };
551
- return i.value === "right" ? { ...$, right: `${N.value.right + se}px` } : { ...$, left: `${N.value.left + se}px` };
596
+ ), k = x(() => t.tab.label.trim().charAt(0).toUpperCase()), d = x(() => c.value || $.value), v = x(
597
+ () => !!t.tab.dirty && !(d.value && y.value)
598
+ ), D = x(
599
+ () => y.value && (d.value || t.active || !t.tab.dirty)
600
+ ), B = x(
601
+ () => o.value && (c.value || b.value || $.value)
602
+ ), j = x(() => {
603
+ const S = { position: "fixed", top: `${M.value.top}px`, zIndex: 50 };
604
+ return s.value === "right" ? { ...S, right: `${M.value.right + de}px` } : { ...S, left: `${M.value.left + de}px` };
552
605
  });
553
- function te() {
554
- const $ = c.value;
555
- if (!$) return;
556
- const r = $.getBoundingClientRect();
557
- N.value = {
558
- top: r.top,
559
- left: r.right,
560
- right: window.innerWidth - r.left
606
+ function ie() {
607
+ const S = u.value;
608
+ if (!S) return;
609
+ const f = S.getBoundingClientRect();
610
+ M.value = {
611
+ top: f.top,
612
+ left: f.right,
613
+ right: window.innerWidth - f.left
561
614
  };
562
615
  }
563
- function be($) {
564
- const r = $.relatedTarget;
565
- r && u.value?.contains(r) || (I.value = !1);
616
+ function De(S) {
617
+ const f = S.relatedTarget;
618
+ f && r.value?.contains(f) || ($.value = !1);
566
619
  }
567
- function ve() {
568
- m.value = !0, te();
620
+ function Be() {
621
+ c.value = !0, ie();
569
622
  }
570
- function ge() {
571
- v.value = !0, te();
623
+ function Ae() {
624
+ b.value = !0, ie();
572
625
  }
573
- function U() {
574
- A !== null && clearTimeout(A), A = null, E = null;
626
+ function H() {
627
+ L !== null && clearTimeout(L), L = null, E = null;
575
628
  }
576
- function ye($) {
577
- $.button === 0 && (E = { x: $.clientX, y: $.clientY }, A = setTimeout(() => {
578
- E && a("menu", E), U();
579
- }, Tt));
629
+ function Me(S) {
630
+ S.button === 0 && (E = { x: S.clientX, y: S.clientY }, L = setTimeout(() => {
631
+ E && a("menu", E), H();
632
+ }, Ut));
580
633
  }
581
- function he($) {
634
+ function Se(S) {
582
635
  if (!E) return;
583
- (Math.abs($.clientX - E.x) > oe || Math.abs($.clientY - E.y) > oe) && U();
636
+ (Math.abs(S.clientX - E.x) > ce || Math.abs(S.clientY - E.y) > ce) && H();
584
637
  }
585
- function pe($) {
586
- $.button === 1 && P.value && ($.preventDefault(), a("close"));
638
+ function Te(S) {
639
+ S.button === 1 && y.value && (S.preventDefault(), a("close"));
587
640
  }
588
- function xe($) {
589
- $.preventDefault(), a("menu", { x: $.clientX, y: $.clientY });
641
+ function Ie(S) {
642
+ S.preventDefault(), a("menu", { x: S.clientX, y: S.clientY });
590
643
  }
591
- return _(U), ($, r) => (l(), n("div", {
644
+ return G(H), (S, f) => (l(), i("div", {
592
645
  ref_key: "raiz",
593
- ref: c,
594
- class: d(["group relative flex shrink-0 cursor-pointer items-center gap-2 rounded-corner border border-ui-border transition-colors", [
646
+ ref: u,
647
+ class: p(["group relative flex shrink-0 cursor-pointer items-center gap-2 rounded-corner border border-ui-border transition-colors", [
595
648
  e.active ? "bg-primary font-bold text-tx-on-primary" : "bg-ui-bg/80 hover:bg-ui-surface/70",
596
- O(o) ? "size-8 justify-center p-0 text-sm" : "w-34 max-w-34 px-3 py-1 text-sm"
649
+ P(o) ? "size-8 justify-center p-0 text-sm" : "w-34 max-w-34 px-3 py-1 text-sm"
597
650
  ]]),
598
651
  role: "tab",
599
652
  "aria-selected": e.active,
600
- title: k.value,
601
- "aria-label": j.value,
653
+ title: h.value,
654
+ "aria-label": m.value,
602
655
  tabindex: e.tabindex,
603
- onClick: r[5] || (r[5] = z((C) => a("select"), ["stop"])),
656
+ onClick: f[5] || (f[5] = T((O) => a("select"), ["stop"])),
604
657
  onKeydown: [
605
- r[6] || (r[6] = D(z((C) => a("select"), ["stop"]), ["enter"])),
606
- r[7] || (r[7] = D(z((C) => a("select"), ["prevent", "stop"]), ["space"])),
607
- r[8] || (r[8] = D(z((C) => a("navegar", "anterior"), ["prevent", "stop"]), ["left"])),
608
- r[9] || (r[9] = D(z((C) => a("navegar", "anterior"), ["prevent", "stop"]), ["up"])),
609
- r[10] || (r[10] = D(z((C) => a("navegar", "siguiente"), ["prevent", "stop"]), ["right"])),
610
- r[11] || (r[11] = D(z((C) => a("navegar", "siguiente"), ["prevent", "stop"]), ["down"])),
611
- r[12] || (r[12] = D(z((C) => a("navegar", "primera"), ["prevent", "stop"]), ["home"])),
612
- r[13] || (r[13] = D(z((C) => a("navegar", "ultima"), ["prevent", "stop"]), ["end"])),
613
- r[14] || (r[14] = D(z((C) => a("mover", -1), ["alt", "prevent", "stop"]), ["left"])),
614
- r[15] || (r[15] = D(z((C) => a("mover", -1), ["alt", "prevent", "stop"]), ["up"])),
615
- r[16] || (r[16] = D(z((C) => a("mover", 1), ["alt", "prevent", "stop"]), ["right"])),
616
- r[17] || (r[17] = D(z((C) => a("mover", 1), ["alt", "prevent", "stop"]), ["down"])),
617
- r[18] || (r[18] = D(z((C) => P.value && a("close"), ["prevent", "stop"]), ["delete"]))
658
+ f[6] || (f[6] = V(T((O) => a("select"), ["stop"]), ["enter"])),
659
+ f[7] || (f[7] = V(T((O) => a("select"), ["prevent", "stop"]), ["space"])),
660
+ f[8] || (f[8] = V(T((O) => a("navegar", "anterior"), ["prevent", "stop"]), ["left"])),
661
+ f[9] || (f[9] = V(T((O) => a("navegar", "anterior"), ["prevent", "stop"]), ["up"])),
662
+ f[10] || (f[10] = V(T((O) => a("navegar", "siguiente"), ["prevent", "stop"]), ["right"])),
663
+ f[11] || (f[11] = V(T((O) => a("navegar", "siguiente"), ["prevent", "stop"]), ["down"])),
664
+ f[12] || (f[12] = V(T((O) => a("navegar", "primera"), ["prevent", "stop"]), ["home"])),
665
+ f[13] || (f[13] = V(T((O) => a("navegar", "ultima"), ["prevent", "stop"]), ["end"])),
666
+ f[14] || (f[14] = V(T((O) => a("mover", -1), ["alt", "prevent", "stop"]), ["left"])),
667
+ f[15] || (f[15] = V(T((O) => a("mover", -1), ["alt", "prevent", "stop"]), ["up"])),
668
+ f[16] || (f[16] = V(T((O) => a("mover", 1), ["alt", "prevent", "stop"]), ["right"])),
669
+ f[17] || (f[17] = V(T((O) => a("mover", 1), ["alt", "prevent", "stop"]), ["down"])),
670
+ f[18] || (f[18] = V(T((O) => y.value && a("close"), ["prevent", "stop"]), ["delete"]))
618
671
  ],
619
- onAuxclick: z(pe, ["stop"]),
620
- onContextmenu: xe,
621
- onPointerdown: ye,
622
- onPointermove: he,
623
- onPointerup: U,
624
- onPointerleave: U,
625
- onMouseenter: ve,
626
- onMouseleave: r[19] || (r[19] = (C) => m.value = !1),
627
- onFocus: ge,
628
- onBlur: r[20] || (r[20] = (C) => v.value = !1)
672
+ onAuxclick: T(Te, ["stop"]),
673
+ onContextmenu: Ie,
674
+ onPointerdown: Me,
675
+ onPointermove: Se,
676
+ onPointerup: H,
677
+ onPointerleave: H,
678
+ onMouseenter: Be,
679
+ onMouseleave: f[19] || (f[19] = (O) => c.value = !1),
680
+ onFocus: Ae,
681
+ onBlur: f[20] || (f[20] = (O) => b.value = !1)
629
682
  }, [
630
- e.tab.icon ? (l(), F(M, {
683
+ e.tab.icon ? (l(), q(N, {
631
684
  key: 0,
632
685
  name: e.tab.icon,
633
686
  size: 16,
634
687
  class: "shrink-0"
635
- }, null, 8, ["name"])) : O(o) ? (l(), n("span", Ct, w(R.value), 1)) : f("", !0),
636
- O(o) ? f("", !0) : (l(), n("span", zt, w(e.tab.label), 1)),
637
- g.value ? (l(), n("span", {
688
+ }, null, 8, ["name"])) : P(o) ? (l(), i("span", Pt, I(k.value), 1)) : g("", !0),
689
+ P(o) ? g("", !0) : (l(), i("span", Ft, I(e.tab.label), 1)),
690
+ v.value ? (l(), i("span", {
638
691
  key: 3,
639
- class: d(["size-2 shrink-0 rounded-full bg-current", O(o) ? "absolute right-0.5 top-0.5" : ""]),
692
+ class: p(["size-2 shrink-0 rounded-full bg-current", P(o) ? "absolute right-0.5 top-0.5" : ""]),
640
693
  "aria-hidden": "true"
641
- }, null, 2)) : p.value && !O(o) ? (l(), n("button", {
694
+ }, null, 2)) : D.value && !P(o) ? (l(), i("button", {
642
695
  key: 4,
643
696
  type: "button",
644
697
  class: "flex size-4 shrink-0 items-center justify-center rounded-corner-sm hover:bg-ui-surface",
645
698
  title: e.closeLabel,
646
- "aria-label": `${e.closeLabel}: ${j.value}`,
647
- onClick: r[0] || (r[0] = z((C) => a("close"), ["stop"]))
699
+ "aria-label": `${e.closeLabel}: ${m.value}`,
700
+ onClick: f[0] || (f[0] = T((O) => a("close"), ["stop"]))
648
701
  }, [
649
- V(M, {
702
+ F(N, {
650
703
  name: "gtk-close",
651
704
  type: "symbol",
652
705
  size: 12
653
706
  })
654
- ], 8, Lt)) : f("", !0),
655
- (l(), F(Me, { to: "body" }, [
656
- V(Ie, {
707
+ ], 8, Nt)) : g("", !0),
708
+ (l(), q(ge, { to: "body" }, [
709
+ F(ye, {
657
710
  "enter-active-class": "transition duration-150 ease-out",
658
711
  "enter-from-class": "opacity-0 scale-95",
659
712
  "leave-active-class": "transition duration-100 ease-in",
660
713
  "leave-to-class": "opacity-0 scale-95"
661
714
  }, {
662
- default: W(() => [
663
- x.value ? (l(), n("div", {
715
+ default: R(() => [
716
+ B.value ? (l(), i("div", {
664
717
  key: 0,
665
- class: d(["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" : ""]),
718
+ class: p(["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" : ""]),
666
719
  ref_key: "desplegadoRef",
667
- ref: u,
668
- style: H(B.value),
669
- onMouseenter: r[2] || (r[2] = (C) => I.value = !0),
670
- onMouseleave: r[3] || (r[3] = (C) => I.value = !1),
671
- onFocusin: r[4] || (r[4] = (C) => I.value = !0),
672
- onFocusout: be
720
+ ref: r,
721
+ style: ee(j.value),
722
+ onMouseenter: f[2] || (f[2] = (O) => $.value = !0),
723
+ onMouseleave: f[3] || (f[3] = (O) => $.value = !1),
724
+ onFocusin: f[4] || (f[4] = (O) => $.value = !0),
725
+ onFocusout: De
673
726
  }, [
674
- h("span", Bt, w(e.tab.label), 1),
675
- e.tab.dirty ? (l(), n("span", St)) : f("", !0),
676
- P.value ? (l(), n("button", {
727
+ C("span", Rt, I(e.tab.label), 1),
728
+ e.tab.dirty ? (l(), i("span", qt)) : g("", !0),
729
+ y.value ? (l(), i("button", {
677
730
  key: 1,
678
731
  type: "button",
679
732
  class: "flex size-4 shrink-0 items-center justify-center rounded-corner-sm hover:bg-ui-surface",
680
733
  title: e.closeLabel,
681
- "aria-label": `${e.closeLabel}: ${j.value}`,
682
- onClick: r[1] || (r[1] = z((C) => a("close"), ["stop"]))
734
+ "aria-label": `${e.closeLabel}: ${m.value}`,
735
+ onClick: f[1] || (f[1] = T((O) => a("close"), ["stop"]))
683
736
  }, [
684
- V(M, {
737
+ F(N, {
685
738
  name: "gtk-close",
686
739
  type: "symbol",
687
740
  size: 12
688
741
  })
689
- ], 8, At)) : f("", !0)
690
- ], 38)) : f("", !0)
742
+ ], 8, Ht)) : g("", !0)
743
+ ], 38)) : g("", !0)
691
744
  ]),
692
745
  _: 1
693
746
  })
694
747
  ]))
695
- ], 42, wt));
748
+ ], 42, Vt));
696
749
  }
697
- }), Dt = ["aria-orientation"], Et = ["draggable", "onDragstart", "onDragover", "onDrop"], Mt = ["title", "aria-label"], It = /* @__PURE__ */ L({
750
+ }), Wt = ["aria-orientation"], Kt = ["draggable", "onDragstart", "onDragover", "onDrop"], Gt = ["title", "aria-label"], Xt = /* @__PURE__ */ z({
698
751
  __name: "TabBar",
699
752
  props: {
700
753
  tabs: {},
@@ -705,102 +758,102 @@ const gt = ["title", "aria-label"], yt = ["title", "aria-label"], ht = ["title",
705
758
  fixedOrder: { type: Boolean, default: !1 }
706
759
  },
707
760
  emits: ["update:modelValue", "select", "close", "new", "reorder", "menu"],
708
- setup(e, { emit: s }) {
709
- const t = e, a = s, { vertical: o } = G(), i = S(null), c = S(0), u = S(null), m = S(null);
710
- function v(b) {
711
- a("update:modelValue", b), a("select", b);
761
+ setup(e, { emit: n }) {
762
+ const t = e, a = n, { vertical: o } = X(), s = w(null), u = w(0), r = w(null), c = w(null);
763
+ function b(d) {
764
+ a("update:modelValue", d), a("select", d);
712
765
  }
713
- async function I(b, g) {
714
- const p = t.tabs.length - 1;
715
- if (p < 0) return;
716
- const x = g === "primera" ? 0 : g === "ultima" ? p : g === "anterior" ? (b - 1 + t.tabs.length) % t.tabs.length : (b + 1) % t.tabs.length;
717
- c.value = x, await re(), i.value?.querySelectorAll('[role="tab"]')?.[x]?.focus();
766
+ async function $(d, v) {
767
+ const D = t.tabs.length - 1;
768
+ if (D < 0) return;
769
+ const B = v === "primera" ? 0 : v === "ultima" ? D : v === "anterior" ? (d - 1 + t.tabs.length) % t.tabs.length : (d + 1) % t.tabs.length;
770
+ u.value = B, await ne(), s.value?.querySelectorAll('[role="tab"]')?.[B]?.focus();
718
771
  }
719
- function N(b, g) {
772
+ function M(d, v) {
720
773
  if (t.fixedOrder) return;
721
- const p = b + g;
722
- if (p < 0 || p >= t.tabs.length) return;
723
- const x = [...t.tabs], [B] = x.splice(b, 1);
724
- B && (x.splice(p, 0, B), c.value = p, a("reorder", x));
774
+ const D = d + v;
775
+ if (D < 0 || D >= t.tabs.length) return;
776
+ const B = [...t.tabs], [j] = B.splice(d, 1);
777
+ j && (B.splice(D, 0, j), u.value = D, a("reorder", B));
725
778
  }
726
- function A(b) {
727
- const g = i.value;
728
- if (!g) return;
729
- const p = b.deltaY || b.deltaX || 0, x = o.value ? g.scrollTop : g.scrollLeft;
730
- o.value ? g.scrollTop += p : g.scrollLeft += p, (o.value ? g.scrollTop : g.scrollLeft) !== x && b.preventDefault();
779
+ function L(d) {
780
+ const v = s.value;
781
+ if (!v) return;
782
+ const D = d.deltaY || d.deltaX || 0, B = o.value ? v.scrollTop : v.scrollLeft;
783
+ o.value ? v.scrollTop += D : v.scrollLeft += D, (o.value ? v.scrollTop : v.scrollLeft) !== B && d.preventDefault();
731
784
  }
732
- function E(b, g) {
733
- t.fixedOrder || (u.value = b, g.dataTransfer?.setData("text/plain", String(b)), g.dataTransfer && (g.dataTransfer.effectAllowed = "move"));
785
+ function E(d, v) {
786
+ t.fixedOrder || (r.value = d, v.dataTransfer?.setData("text/plain", String(d)), v.dataTransfer && (v.dataTransfer.effectAllowed = "move"));
734
787
  }
735
- function P(b, g) {
736
- t.fixedOrder || u.value === null || (g.preventDefault(), m.value = b, g.dataTransfer && (g.dataTransfer.dropEffect = "move"));
788
+ function y(d, v) {
789
+ t.fixedOrder || r.value === null || (v.preventDefault(), c.value = d, v.dataTransfer && (v.dataTransfer.dropEffect = "move"));
737
790
  }
738
- function k(b) {
739
- const g = u.value;
740
- if (j(), t.fixedOrder || g === null || g === b) return;
741
- const p = [...t.tabs], [x] = p.splice(g, 1);
742
- x && (p.splice(b, 0, x), a("reorder", p));
791
+ function h(d) {
792
+ const v = r.value;
793
+ if (m(), t.fixedOrder || v === null || v === d) return;
794
+ const D = [...t.tabs], [B] = D.splice(v, 1);
795
+ B && (D.splice(d, 0, B), a("reorder", D));
743
796
  }
744
- function j() {
745
- u.value = null, m.value = null;
797
+ function m() {
798
+ r.value = null, c.value = null;
746
799
  }
747
- const R = y(
800
+ const k = x(
748
801
  () => o.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"
749
802
  );
750
- return (b, g) => (l(), n("div", {
751
- class: d(["flex min-h-0 min-w-0 items-center gap-1", O(o) ? "w-full flex-col" : "h-full"]),
803
+ return (d, v) => (l(), i("div", {
804
+ class: p(["flex min-h-0 min-w-0 items-center gap-1", P(o) ? "w-full flex-col" : "h-full"]),
752
805
  role: "tablist",
753
- "aria-orientation": O(o) ? "vertical" : "horizontal"
806
+ "aria-orientation": P(o) ? "vertical" : "horizontal"
754
807
  }, [
755
- h("div", {
808
+ C("div", {
756
809
  ref_key: "carril",
757
- ref: i,
758
- class: d(R.value),
759
- onWheel: A
810
+ ref: s,
811
+ class: p(k.value),
812
+ onWheel: L
760
813
  }, [
761
- (l(!0), n(X, null, Y(e.tabs, (p, x) => (l(), n("div", {
762
- key: p.id,
763
- class: d(["transition-opacity", [
764
- u.value === x ? "opacity-40" : "",
765
- m.value === x && u.value !== x ? "ring-2 ring-secondary rounded-corner" : ""
814
+ (l(!0), i(U, null, Y(e.tabs, (D, B) => (l(), i("div", {
815
+ key: D.id,
816
+ class: p(["transition-opacity", [
817
+ r.value === B ? "opacity-40" : "",
818
+ c.value === B && r.value !== B ? "ring-2 ring-secondary rounded-corner" : ""
766
819
  ]]),
767
820
  draggable: !e.fixedOrder,
768
- onDragstart: (B) => E(x, B),
769
- onDragover: (B) => P(x, B),
770
- onDrop: z((B) => k(x), ["prevent"]),
771
- onDragend: j
821
+ onDragstart: (j) => E(B, j),
822
+ onDragover: (j) => y(B, j),
823
+ onDrop: T((j) => h(B), ["prevent"]),
824
+ onDragend: m
772
825
  }, [
773
- V(me, {
774
- tab: p,
775
- active: p.id === e.modelValue,
826
+ F(Ce, {
827
+ tab: D,
828
+ active: D.id === e.modelValue,
776
829
  "close-label": e.closeLabel,
777
830
  "dirty-label": e.dirtyLabel,
778
- tabindex: x === c.value ? 0 : -1,
779
- onSelect: (B) => v(p.id),
780
- onClose: (B) => a("close", p.id),
781
- onMenu: (B) => a("menu", { id: p.id, ...B }),
782
- onNavegar: (B) => I(x, B),
783
- onMover: (B) => N(x, B)
831
+ tabindex: B === u.value ? 0 : -1,
832
+ onSelect: (j) => b(D.id),
833
+ onClose: (j) => a("close", D.id),
834
+ onMenu: (j) => a("menu", { id: D.id, ...j }),
835
+ onNavegar: (j) => $(B, j),
836
+ onMover: (j) => M(B, j)
784
837
  }, null, 8, ["tab", "active", "close-label", "dirty-label", "tabindex", "onSelect", "onClose", "onMenu", "onNavegar", "onMover"])
785
- ], 42, Et))), 128))
838
+ ], 42, Kt))), 128))
786
839
  ], 34),
787
- e.newLabel ? (l(), n("button", {
840
+ e.newLabel ? (l(), i("button", {
788
841
  key: 0,
789
842
  type: "button",
790
843
  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",
791
844
  title: e.newLabel,
792
845
  "aria-label": e.newLabel,
793
- onClick: g[0] || (g[0] = (p) => a("new"))
846
+ onClick: v[0] || (v[0] = (D) => a("new"))
794
847
  }, [
795
- V(M, {
848
+ F(N, {
796
849
  name: "gtk-add",
797
850
  type: "symbol",
798
851
  size: 14
799
852
  })
800
- ], 8, Mt)) : f("", !0)
801
- ], 10, Dt));
853
+ ], 8, Gt)) : g("", !0)
854
+ ], 10, Wt));
802
855
  }
803
- }), Vt = { class: "relative flex shrink-0 items-center" }, jt = ["title", "aria-label", "aria-expanded"], Ot = ["value", "placeholder", "aria-label"], Pt = /* @__PURE__ */ L({
856
+ }), Yt = { class: "relative flex shrink-0 items-center" }, Jt = ["title", "aria-label", "aria-expanded"], Qt = ["value", "placeholder", "aria-label"], Zt = /* @__PURE__ */ z({
804
857
  __name: "BarSearch",
805
858
  props: {
806
859
  modelValue: { default: "" },
@@ -809,68 +862,68 @@ const gt = ["title", "aria-label"], yt = ["title", "aria-label"], ht = ["title",
809
862
  collapsed: { type: Boolean, default: !1 }
810
863
  },
811
864
  emits: ["update:modelValue", "search", "open", "close"],
812
- setup(e, { emit: s }) {
813
- const t = e, a = s, { vertical: o, posicion: i } = G(), c = S(!1), u = S(null), m = y(() => o.value || t.collapsed), v = y(() => !m.value || c.value), I = y(() => {
814
- if (!m.value) return "";
815
- const k = "absolute z-40 w-64 rounded-corner border border-ui-border bg-ui-surface/95 p-1 shadow-lg";
816
- return i.value === "left" ? `${k} left-full top-0 ml-1` : i.value === "right" ? `${k} right-full top-0 mr-1` : i.value === "bottom" ? `${k} bottom-full right-0 mb-1` : `${k} top-full right-0 mt-1`;
865
+ setup(e, { emit: n }) {
866
+ const t = e, a = n, { vertical: o, posicion: s } = X(), u = w(!1), r = w(null), c = x(() => o.value || t.collapsed), b = x(() => !c.value || u.value), $ = x(() => {
867
+ if (!c.value) return "";
868
+ const h = "absolute z-40 w-64 rounded-corner border border-ui-border bg-ui-surface/95 p-1 shadow-lg";
869
+ return s.value === "left" ? `${h} left-full top-0 ml-1` : s.value === "right" ? `${h} right-full top-0 mr-1` : s.value === "bottom" ? `${h} bottom-full right-0 mb-1` : `${h} top-full right-0 mt-1`;
817
870
  });
818
- async function N() {
819
- c.value = !0, a("open"), await re(), u.value?.focus();
871
+ async function M() {
872
+ u.value = !0, a("open"), await ne(), r.value?.focus();
820
873
  }
821
- function A() {
822
- c.value && (c.value = !1, a("close"));
874
+ function L() {
875
+ u.value && (u.value = !1, a("close"));
823
876
  }
824
- function E(k) {
825
- a("update:modelValue", k.target.value);
877
+ function E(h) {
878
+ a("update:modelValue", h.target.value);
826
879
  }
827
- function P() {
880
+ function y() {
828
881
  a("search", t.modelValue);
829
882
  }
830
- return (k, j) => (l(), n("div", Vt, [
831
- m.value ? (l(), n("button", {
883
+ return (h, m) => (l(), i("div", Yt, [
884
+ c.value ? (l(), i("button", {
832
885
  key: 0,
833
886
  type: "button",
834
887
  class: "flex size-7 items-center justify-center rounded-corner border border-ui-border bg-ui-bg/80 hover:bg-ui-surface/70",
835
888
  title: e.label,
836
889
  "aria-label": e.label,
837
- "aria-expanded": c.value,
838
- onMousedown: j[0] || (j[0] = z(() => {
890
+ "aria-expanded": u.value,
891
+ onMousedown: m[0] || (m[0] = T(() => {
839
892
  }, ["prevent"])),
840
- onClick: j[1] || (j[1] = (R) => c.value ? A() : N())
893
+ onClick: m[1] || (m[1] = (k) => u.value ? L() : M())
841
894
  }, [
842
- V(M, {
895
+ F(N, {
843
896
  name: "system-search",
844
897
  type: "symbol",
845
898
  size: 14
846
899
  })
847
- ], 40, jt)) : f("", !0),
848
- v.value ? (l(), n("div", {
900
+ ], 40, Jt)) : g("", !0),
901
+ b.value ? (l(), i("div", {
849
902
  key: 1,
850
- class: d(I.value)
903
+ class: p($.value)
851
904
  }, [
852
- h("input", {
905
+ C("input", {
853
906
  ref_key: "campo",
854
- ref: u,
907
+ ref: r,
855
908
  type: "search",
856
- class: d(["w-full rounded-corner border border-ui-border bg-ui-bg/80 px-2 py-1 text-sm outline-none focus:border-ui-border-strong", m.value ? "" : "w-48"]),
909
+ class: p(["w-full rounded-corner border border-ui-border bg-ui-bg/80 px-2 py-1 text-sm outline-none focus:border-ui-border-strong", c.value ? "" : "w-48"]),
857
910
  value: e.modelValue,
858
911
  placeholder: e.placeholder || e.label,
859
912
  "aria-label": e.label,
860
913
  onInput: E,
861
914
  onKeydown: [
862
- D(P, ["enter"]),
863
- D(A, ["esc"])
915
+ V(y, ["enter"]),
916
+ V(L, ["esc"])
864
917
  ],
865
- onBlur: A
866
- }, null, 42, Ot)
867
- ], 2)) : f("", !0)
918
+ onBlur: L
919
+ }, null, 42, Qt)
920
+ ], 2)) : g("", !0)
868
921
  ]));
869
922
  }
870
- }), Nt = ["type", "disabled"], Rt = {
923
+ }), _t = ["type", "disabled"], ea = {
871
924
  key: 0,
872
925
  class: "w-4 h-4 animate-spin rounded-full border-2 border-current border-t-transparent"
873
- }, Ft = ["src", "alt"], Wt = { key: 2 }, Ut = ["src", "alt"], Gt = /* @__PURE__ */ L({
926
+ }, ta = ["src", "alt"], aa = { key: 2 }, na = ["src", "alt"], la = /* @__PURE__ */ z({
874
927
  __name: "ActionButton",
875
928
  props: {
876
929
  label: {},
@@ -888,52 +941,52 @@ const gt = ["title", "aria-label"], yt = ["title", "aria-label"], ht = ["title",
888
941
  preventDefault: { type: Boolean, default: !1 }
889
942
  },
890
943
  emits: ["click"],
891
- setup(e, { emit: s }) {
892
- const t = e, a = s, o = {
944
+ setup(e, { emit: n }) {
945
+ const t = e, a = n, o = {
893
946
  primary: "bg-primary dark:bg-primary-dark text-tx-on-primary dark:text-tx-on-primary-dark hover:bg-primary/90 dark:hover:bg-primary-dark/90",
894
947
  secondary: "bg-secondary dark:bg-secondary-dark text-tx-on-primary dark:text-tx-on-primary-dark hover:bg-secondary/80 dark:hover:bg-secondary-dark/80",
895
948
  danger: "bg-status-error dark:bg-status-error-dark text-tx-on-primary dark:text-tx-on-primary-dark hover:bg-status-error/90 dark:hover:bg-status-error-dark/90"
896
- }, i = {
949
+ }, s = {
897
950
  sm: "px-2 py-1 text-xs",
898
951
  md: "px-3 py-1 text-sm",
899
952
  lg: "px-4 py-2 text-base"
900
- }, c = (u) => {
901
- t.stopPropagation && u.stopPropagation(), t.preventDefault && u.preventDefault(), !t.disabled && !t.loading && a("click");
953
+ }, u = (r) => {
954
+ t.stopPropagation && r.stopPropagation(), t.preventDefault && r.preventDefault(), !t.disabled && !t.loading && a("click");
902
955
  };
903
- return (u, m) => (l(), n("button", {
956
+ return (r, c) => (l(), i("button", {
904
957
  type: t.type,
905
- onClick: c,
906
- class: d(["rounded-corner transition-all duration-200 disabled:opacity-50 disabled:cursor-not-allowed flex items-center justify-center gap-2", [
958
+ onClick: u,
959
+ class: p(["rounded-corner transition-all duration-200 disabled:opacity-50 disabled:cursor-not-allowed flex items-center justify-center gap-2", [
907
960
  o[t.variant],
908
- i[t.size],
961
+ s[t.size],
909
962
  t.fullWidth ? "w-full" : "",
910
963
  t.iconSrc && !t.label ? "px-2 py-2" : "",
911
964
  e.customClass
912
965
  ]]),
913
966
  disabled: t.disabled || t.loading
914
967
  }, [
915
- e.loading ? (l(), n("span", Rt)) : f("", !0),
916
- t.iconSrc && !t.iconRight ? (l(), n("img", {
968
+ e.loading ? (l(), i("span", ea)) : g("", !0),
969
+ t.iconSrc && !t.iconRight ? (l(), i("img", {
917
970
  key: 1,
918
971
  src: t.iconSrc,
919
972
  alt: t.iconAlt || t.label,
920
973
  class: "w-4 h-4"
921
- }, null, 8, Ft)) : f("", !0),
922
- t.label ? (l(), n("span", Wt, w(t.label), 1)) : f("", !0),
923
- t.iconSrc && t.iconRight ? (l(), n("img", {
974
+ }, null, 8, ta)) : g("", !0),
975
+ t.label ? (l(), i("span", aa, I(t.label), 1)) : g("", !0),
976
+ t.iconSrc && t.iconRight ? (l(), i("img", {
924
977
  key: 3,
925
978
  src: t.iconSrc,
926
979
  alt: t.iconAlt || t.label,
927
980
  class: "w-4 h-4"
928
- }, null, 8, Ut)) : f("", !0)
929
- ], 10, Nt));
981
+ }, null, 8, na)) : g("", !0)
982
+ ], 10, _t));
930
983
  }
931
- }), K = (e, s) => {
984
+ }), Q = (e, n) => {
932
985
  const t = e.__vccOpts || e;
933
- for (const [a, o] of s)
986
+ for (const [a, o] of n)
934
987
  t[a] = o;
935
988
  return t;
936
- }, Xt = /* @__PURE__ */ K(Gt, [["__scopeId", "data-v-2eaf6e27"]]), Yt = { class: "text-base font-semibold m-0 text-primary dark:text-primary-dark" }, Kt = /* @__PURE__ */ L({
989
+ }, oa = /* @__PURE__ */ Q(la, [["__scopeId", "data-v-2eaf6e27"]]), ia = { class: "text-base font-semibold m-0 text-primary dark:text-primary-dark" }, sa = /* @__PURE__ */ z({
937
990
  __name: "ConfigSection",
938
991
  props: {
939
992
  title: {},
@@ -941,26 +994,26 @@ const gt = ["title", "aria-label"], yt = ["title", "aria-label"], ht = ["title",
941
994
  customClass: { default: () => ({}) }
942
995
  },
943
996
  setup(e) {
944
- return (s, t) => (l(), n("div", {
945
- class: d(["flex flex-col gap-4 p-4 background rounded-corner", e.customClass])
997
+ return (n, t) => (l(), i("div", {
998
+ class: p(["flex flex-col gap-4 p-4 background rounded-corner", e.customClass])
946
999
  }, [
947
- h("h3", Yt, w(e.icon ? `${e.icon} ${e.title}` : e.title), 1),
948
- T(s.$slots, "default", {}, void 0, !0)
1000
+ C("h3", ia, I(e.icon ? `${e.icon} ${e.title}` : e.title), 1),
1001
+ A(n.$slots, "default", {}, void 0, !0)
949
1002
  ], 2));
950
1003
  }
951
- }), qt = /* @__PURE__ */ K(Kt, [["__scopeId", "data-v-45bd4eab"]]), Ht = { class: "flex items-center gap-3 flex-1 min-w-0" }, Jt = ["src", "alt"], Qt = { class: "min-w-0" }, Zt = { class: "font-semibold truncate" }, _t = {
1004
+ }), ra = /* @__PURE__ */ Q(sa, [["__scopeId", "data-v-45bd4eab"]]), ua = { class: "flex items-center gap-3 flex-1 min-w-0" }, ca = ["src", "alt"], da = { class: "min-w-0" }, fa = { class: "font-semibold truncate" }, ma = {
952
1005
  key: 0,
953
1006
  class: "text-xs text-gray-400 truncate"
954
- }, ea = {
1007
+ }, ba = {
955
1008
  key: 1,
956
1009
  class: "text-xs text-gray-400 truncate"
957
- }, ta = {
1010
+ }, va = {
958
1011
  key: 2,
959
1012
  class: "text-xs text-gray-400 flex gap-2 mt-1"
960
- }, aa = {
1013
+ }, pa = {
961
1014
  key: 1,
962
1015
  class: "w-2 h-2 rounded-full bg-green-500"
963
- }, la = /* @__PURE__ */ L({
1016
+ }, ga = /* @__PURE__ */ z({
964
1017
  __name: "DeviceCard",
965
1018
  props: {
966
1019
  icon: {},
@@ -976,40 +1029,402 @@ const gt = ["title", "aria-label"], yt = ["title", "aria-label"], ht = ["title",
976
1029
  clickable: { type: Boolean, default: !1 }
977
1030
  },
978
1031
  emits: ["action", "click"],
979
- setup(e, { emit: s }) {
980
- const t = s, a = () => {
1032
+ setup(e, { emit: n }) {
1033
+ const t = n, a = () => {
981
1034
  t("action");
982
1035
  }, o = () => {
983
1036
  t("click");
984
1037
  };
985
- return (i, c) => (l(), n("div", {
986
- class: d(["flex items-center justify-between background rounded-vsk px-6 py-3 mb-4", [{ "border-l-4 border-green-500": e.isConnected }, e.customClass]]),
1038
+ return (s, u) => (l(), i("div", {
1039
+ class: p(["flex items-center justify-between background rounded-vsk px-6 py-3 mb-4", [{ "border-l-4 border-green-500": e.isConnected }, e.customClass]]),
987
1040
  onClick: o
988
1041
  }, [
989
- h("div", Ht, [
990
- h("img", {
1042
+ C("div", ua, [
1043
+ C("img", {
991
1044
  src: e.icon,
992
1045
  alt: e.title,
993
1046
  class: "h-7 w-7 shrink-0"
994
- }, null, 8, Jt),
995
- h("div", Qt, [
996
- h("div", Zt, w(e.title), 1),
997
- e.subtitle ? (l(), n("div", _t, w(e.subtitle), 1)) : f("", !0),
998
- e.metadata ? (l(), n("div", ea, w(e.metadata), 1)) : f("", !0),
999
- e.extraInfo && e.extraInfo.length > 0 ? (l(), n("div", ta, [
1000
- (l(!0), n(X, null, Y(e.extraInfo, (u, m) => (l(), n("span", { key: m }, w(u), 1))), 128))
1001
- ])) : f("", !0)
1047
+ }, null, 8, ca),
1048
+ C("div", da, [
1049
+ C("div", fa, I(e.title), 1),
1050
+ e.subtitle ? (l(), i("div", ma, I(e.subtitle), 1)) : g("", !0),
1051
+ e.metadata ? (l(), i("div", ba, I(e.metadata), 1)) : g("", !0),
1052
+ e.extraInfo && e.extraInfo.length > 0 ? (l(), i("div", va, [
1053
+ (l(!0), i(U, null, Y(e.extraInfo, (r, c) => (l(), i("span", { key: c }, I(r), 1))), 128))
1054
+ ])) : g("", !0)
1002
1055
  ])
1003
1056
  ]),
1004
- e.showActionButton ? (l(), n("button", {
1057
+ e.showActionButton ? (l(), i("button", {
1005
1058
  key: 0,
1006
1059
  class: "bg-vsk-primary rounded-vsk px-4 py-2 text-sm font-semibold cursor-pointer hover:opacity-70",
1007
- onClick: z(a, ["stop"])
1008
- }, w(e.actionLabel), 1)) : f("", !0),
1009
- e.showStatusIndicator && e.isConnected ? (l(), n("div", aa)) : f("", !0)
1060
+ onClick: T(a, ["stop"])
1061
+ }, I(e.actionLabel), 1)) : g("", !0),
1062
+ e.showStatusIndicator && e.isConnected ? (l(), i("div", pa)) : g("", !0)
1010
1063
  ], 2));
1011
1064
  }
1012
- }), na = ["for"], oa = /* @__PURE__ */ L({
1065
+ }), ze = /* @__PURE__ */ Symbol("menú de vasak");
1066
+ function Z() {
1067
+ const e = be(ze, null);
1068
+ if (e) return e;
1069
+ const n = w(!1);
1070
+ return {
1071
+ abierto: n,
1072
+ idDelMenu: "vsk-menu-suelto",
1073
+ idDeLaEtiqueta: w(null),
1074
+ ponerLaEtiqueta: () => {
1075
+ },
1076
+ disparador: w(null),
1077
+ ponerElDisparador: () => {
1078
+ },
1079
+ focoAlAbrir: w("ninguno"),
1080
+ abrir: () => {
1081
+ n.value = !0;
1082
+ },
1083
+ cerrar: () => {
1084
+ n.value = !1;
1085
+ },
1086
+ alternar: () => {
1087
+ n.value = !n.value;
1088
+ }
1089
+ };
1090
+ }
1091
+ let fe = 0;
1092
+ function Le() {
1093
+ return fe += 1, `vsk-menu-${fe}`;
1094
+ }
1095
+ const ya = { class: "relative inline-block" }, ha = /* @__PURE__ */ z({
1096
+ __name: "DropdownMenu",
1097
+ props: {
1098
+ open: { type: Boolean, default: void 0 }
1099
+ },
1100
+ emits: ["update:open"],
1101
+ setup(e, { emit: n }) {
1102
+ const t = e, a = n, o = w(!1), s = w(null), u = w(null), r = w("ninguno"), c = Le();
1103
+ let b = null;
1104
+ const $ = x({
1105
+ get: () => t.open ?? o.value,
1106
+ set: (y) => {
1107
+ t.open === void 0 && (o.value = y), a("update:open", y);
1108
+ }
1109
+ });
1110
+ K($, (y) => {
1111
+ if (y) {
1112
+ const h = document.activeElement;
1113
+ b = h instanceof HTMLElement ? h : null;
1114
+ } else
1115
+ r.value = "ninguno";
1116
+ });
1117
+ function M(y = "ninguno") {
1118
+ r.value = y, $.value = !0;
1119
+ }
1120
+ function L(y = {}) {
1121
+ if ($.value = !1, !y.devolverElFoco) return;
1122
+ const h = b ?? s.value;
1123
+ h?.isConnected && h.focus();
1124
+ }
1125
+ function E(y = "ninguno") {
1126
+ if ($.value) {
1127
+ L({ devolverElFoco: !0 });
1128
+ return;
1129
+ }
1130
+ M(y);
1131
+ }
1132
+ return ae(ze, {
1133
+ abierto: $,
1134
+ idDelMenu: c,
1135
+ idDeLaEtiqueta: u,
1136
+ ponerLaEtiqueta: (y) => {
1137
+ u.value = y;
1138
+ },
1139
+ disparador: s,
1140
+ ponerElDisparador: (y) => {
1141
+ s.value = y;
1142
+ },
1143
+ focoAlAbrir: r,
1144
+ abrir: M,
1145
+ cerrar: L,
1146
+ alternar: E
1147
+ }), (y, h) => (l(), i("div", ya, [
1148
+ A(y.$slots, "default")
1149
+ ]));
1150
+ }
1151
+ }), xa = ["id", "aria-labelledby", "inert"], ka = {
1152
+ role: "none",
1153
+ class: "py-1"
1154
+ }, wa = /* @__PURE__ */ z({
1155
+ inheritAttrs: !1,
1156
+ __name: "DropdownMenuContent",
1157
+ props: {
1158
+ side: { default: "bottom" },
1159
+ align: { default: "start" },
1160
+ sideOffset: { default: 4 }
1161
+ },
1162
+ setup(e) {
1163
+ const n = e, t = Z(), { idDelMenu: a, idDeLaEtiqueta: o } = t, s = x(() => t.disparador.value), u = x(() => t.abierto.value), r = w(null), c = w({ top: 0, left: 0 });
1164
+ function b() {
1165
+ if (!s.value || !r.value) return;
1166
+ const m = s.value.getBoundingClientRect(), k = r.value.getBoundingClientRect();
1167
+ let d = 0, v = 0;
1168
+ switch (n.side) {
1169
+ case "bottom":
1170
+ d = m.bottom + n.sideOffset;
1171
+ break;
1172
+ case "top":
1173
+ d = m.top - k.height - n.sideOffset;
1174
+ break;
1175
+ case "left":
1176
+ v = m.left - k.width - n.sideOffset, d = m.top;
1177
+ break;
1178
+ case "right":
1179
+ v = m.right + n.sideOffset, d = m.top;
1180
+ break;
1181
+ }
1182
+ switch (n.align) {
1183
+ case "start":
1184
+ (n.side === "bottom" || n.side === "top") && (v = m.left);
1185
+ break;
1186
+ case "center":
1187
+ (n.side === "bottom" || n.side === "top") && (v = m.left + m.width / 2 - k.width / 2);
1188
+ break;
1189
+ case "end":
1190
+ (n.side === "bottom" || n.side === "top") && (v = m.right - k.width);
1191
+ break;
1192
+ }
1193
+ c.value = { top: d, left: v };
1194
+ }
1195
+ function $() {
1196
+ return r.value ? Array.from(r.value.querySelectorAll('[role="menuitem"]')) : [];
1197
+ }
1198
+ function M(m) {
1199
+ const k = $();
1200
+ if (!k.length) return;
1201
+ const d = k.length;
1202
+ k[(m % d + d) % d]?.focus();
1203
+ }
1204
+ function L() {
1205
+ const m = document.activeElement;
1206
+ return m instanceof HTMLElement ? $().indexOf(m) : -1;
1207
+ }
1208
+ function E(m) {
1209
+ const k = L();
1210
+ switch (m.key) {
1211
+ case "ArrowDown":
1212
+ m.preventDefault(), M(k + 1);
1213
+ break;
1214
+ case "ArrowUp":
1215
+ m.preventDefault(), M(k <= 0 ? -1 : k - 1);
1216
+ break;
1217
+ case "Home":
1218
+ m.preventDefault(), M(0);
1219
+ break;
1220
+ case "End":
1221
+ m.preventDefault(), M(-1);
1222
+ break;
1223
+ case "Escape":
1224
+ m.preventDefault(), m.stopPropagation(), t.cerrar({ devolverElFoco: !0 });
1225
+ break;
1226
+ case "Tab":
1227
+ m.preventDefault(), t.cerrar({ devolverElFoco: !0 });
1228
+ break;
1229
+ }
1230
+ }
1231
+ K(u, async (m) => {
1232
+ if (m)
1233
+ switch (await ne(), requestAnimationFrame(() => {
1234
+ b();
1235
+ }), t.focoAlAbrir.value) {
1236
+ case "primero":
1237
+ M(0);
1238
+ break;
1239
+ case "ultimo":
1240
+ M(-1);
1241
+ break;
1242
+ // Abierto con el ratón: el foco va al menú y no a un ítem —no hay
1243
+ // ninguno elegido todavía—, que es lo que deja andar las flechas y el
1244
+ // Escape sin haber tocado nada.
1245
+ default:
1246
+ r.value?.focus();
1247
+ }
1248
+ });
1249
+ function y() {
1250
+ u.value && b();
1251
+ }
1252
+ function h(m) {
1253
+ const k = m.target, d = !!k.closest("[dropdown-content]"), v = !!s.value?.contains(k);
1254
+ !d && !v && t.cerrar();
1255
+ }
1256
+ return W(() => {
1257
+ document.addEventListener("click", h), window.addEventListener("resize", y), window.addEventListener("scroll", y, !0);
1258
+ }), G(() => {
1259
+ document.removeEventListener("click", h), window.removeEventListener("resize", y), window.removeEventListener("scroll", y, !0);
1260
+ }), (m, k) => (l(), q(ge, { to: "body" }, [
1261
+ F(ye, {
1262
+ "enter-active-class": "transition-all duration-150 ease-in-out",
1263
+ "leave-active-class": "transition-all duration-150 ease-in-out",
1264
+ "enter-from-class": "opacity-0 scale-95",
1265
+ "leave-to-class": "opacity-0 scale-95",
1266
+ onEnter: k[1] || (k[1] = (d) => d.offsetHeight),
1267
+ onLeave: k[2] || (k[2] = (d) => d.offsetHeight)
1268
+ }, {
1269
+ default: R(() => [
1270
+ me(C("div", J({
1271
+ ref_key: "contenido",
1272
+ ref: r
1273
+ }, m.$attrs, {
1274
+ id: P(a),
1275
+ role: "menu",
1276
+ tabindex: "-1",
1277
+ "aria-orientation": "vertical",
1278
+ "aria-labelledby": P(o) ?? void 0,
1279
+ inert: !u.value,
1280
+ style: { position: "fixed", top: `${c.value.top}px`, left: `${c.value.left}px`, zIndex: 50 },
1281
+ "dropdown-content": "",
1282
+ class: "min-w-30 rounded-corner border border-primary bg-ui-bg/80 shadow-lg focus:outline-none",
1283
+ onClick: k[0] || (k[0] = (d) => d.stopPropagation()),
1284
+ onKeydown: E
1285
+ }), [
1286
+ C("div", ka, [
1287
+ A(m.$slots, "default")
1288
+ ])
1289
+ ], 16, xa), [
1290
+ [Ue, u.value]
1291
+ ])
1292
+ ]),
1293
+ _: 3
1294
+ })
1295
+ ]));
1296
+ }
1297
+ }), $a = ["aria-disabled", "onKeydown"], Ca = /* @__PURE__ */ z({
1298
+ __name: "DropdownMenuItem",
1299
+ props: {
1300
+ disabled: { type: Boolean, default: !1 }
1301
+ },
1302
+ emits: ["select", "click"],
1303
+ setup(e, { emit: n }) {
1304
+ const t = e, a = n, o = Z();
1305
+ function s(u) {
1306
+ t.disabled || (a("select"), a("click", u), o.cerrar({ devolverElFoco: !0 }));
1307
+ }
1308
+ return (u, r) => (l(), i("div", {
1309
+ role: "menuitem",
1310
+ tabindex: "0",
1311
+ "aria-disabled": e.disabled || void 0,
1312
+ class: p([
1313
+ "px-3 py-2 text-sm transition-colors outline-none",
1314
+ {
1315
+ "opacity-50 cursor-not-allowed": e.disabled,
1316
+ "cursor-pointer hover:bg-primary hover:text-tx-on-primary focus-visible:bg-primary focus-visible:text-tx-on-primary": !e.disabled
1317
+ }
1318
+ ]),
1319
+ onClick: s,
1320
+ onKeydown: [
1321
+ V(T(s, ["prevent"]), ["enter"]),
1322
+ V(T(s, ["prevent"]), ["space"])
1323
+ ]
1324
+ }, [
1325
+ A(u.$slots, "default")
1326
+ ], 42, $a));
1327
+ }
1328
+ }), za = /* @__PURE__ */ z({
1329
+ __name: "DropdownMenuLabel",
1330
+ setup(e) {
1331
+ const n = Z(), t = `${Le()}-titulo`;
1332
+ return W(() => {
1333
+ n.ponerLaEtiqueta(t);
1334
+ }), G(() => {
1335
+ n.ponerLaEtiqueta(null);
1336
+ }), (a, o) => (l(), i("div", {
1337
+ id: t,
1338
+ role: "presentation",
1339
+ class: "px-3 py-2 text-sm font-semibold text-tx-main"
1340
+ }, [
1341
+ A(a.$slots, "default")
1342
+ ]));
1343
+ }
1344
+ }), La = {
1345
+ role: "separator",
1346
+ "aria-orientation": "horizontal",
1347
+ class: "bg-ui-bg/80 my-4 h-0.5"
1348
+ }, Ea = /* @__PURE__ */ z({
1349
+ __name: "DropdownMenuSeparator",
1350
+ setup(e) {
1351
+ return (n, t) => (l(), i("div", La));
1352
+ }
1353
+ });
1354
+ function Ee(e) {
1355
+ const n = e.filter(
1356
+ (a) => a.type !== Ge && !(a.type === Xe && typeof a.children == "string" && !a.children.trim())
1357
+ );
1358
+ if (n.length !== 1) return null;
1359
+ const t = n[0];
1360
+ return t.type === U && Array.isArray(t.children) ? Ee(t.children) : t;
1361
+ }
1362
+ function Da(e) {
1363
+ if (e instanceof HTMLElement) return e;
1364
+ const n = e?.$el;
1365
+ return n instanceof HTMLElement ? n : null;
1366
+ }
1367
+ const Ba = z({
1368
+ name: "DropdownMenuTrigger",
1369
+ inheritAttrs: !1,
1370
+ props: {
1371
+ /** Sin envoltorio: los atributos van sobre el hijo que se le pasó. */
1372
+ asChild: { type: Boolean, default: !1 },
1373
+ /** El disparador no abre nada; lo abre la aplicación por su cuenta. */
1374
+ disabled: { type: Boolean, default: !1 }
1375
+ },
1376
+ setup(e, { slots: n, attrs: t }) {
1377
+ const a = Z(), o = w(null);
1378
+ function s() {
1379
+ a.ponerElDisparador(Da(o.value));
1380
+ }
1381
+ function u() {
1382
+ e.disabled || (s(), a.alternar());
1383
+ }
1384
+ function r(c) {
1385
+ if (!e.disabled)
1386
+ switch (c.key) {
1387
+ case "Enter":
1388
+ case " ":
1389
+ c.preventDefault(), s(), a.alternar("primero");
1390
+ break;
1391
+ case "ArrowDown":
1392
+ c.preventDefault(), s(), a.abrir("primero");
1393
+ break;
1394
+ case "ArrowUp":
1395
+ c.preventDefault(), s(), a.abrir("ultimo");
1396
+ break;
1397
+ case "Escape":
1398
+ a.abierto.value && (c.preventDefault(), a.cerrar({ devolverElFoco: !0 }));
1399
+ break;
1400
+ }
1401
+ }
1402
+ return () => {
1403
+ const c = {
1404
+ ref: ($) => {
1405
+ o.value = $, s();
1406
+ },
1407
+ "aria-haspopup": "menu",
1408
+ "aria-expanded": a.abierto.value ? "true" : "false",
1409
+ // Sólo cuando hay algo que controlar: `aria-controls` apuntando
1410
+ // a un elemento que el lector no expone —el menú cerrado está
1411
+ // `inert`— es una referencia rota.
1412
+ "aria-controls": a.abierto.value ? a.idDelMenu : void 0,
1413
+ onClick: u,
1414
+ onKeydown: r
1415
+ }, b = n.default?.() ?? [];
1416
+ if (e.asChild) {
1417
+ const $ = Ee(b);
1418
+ if ($) return We($, { ...t, ...c });
1419
+ }
1420
+ return Ke(
1421
+ "div",
1422
+ { ...t, class: ["dropdown-menu-trigger inline-block", t.class], ...c },
1423
+ b
1424
+ );
1425
+ };
1426
+ }
1427
+ }), Aa = ["for"], Ma = /* @__PURE__ */ z({
1013
1428
  __name: "FormGroup",
1014
1429
  props: {
1015
1430
  label: {},
@@ -1018,30 +1433,30 @@ const gt = ["title", "aria-label"], yt = ["title", "aria-label"], ht = ["title",
1018
1433
  labelClass: { default: () => ({}) }
1019
1434
  },
1020
1435
  setup(e) {
1021
- return (s, t) => (l(), n("div", {
1022
- class: d(["flex flex-col gap-2", e.customClass])
1436
+ return (n, t) => (l(), i("div", {
1437
+ class: p(["flex flex-col gap-2", e.customClass])
1023
1438
  }, [
1024
- e.label ? (l(), n("label", {
1439
+ e.label ? (l(), i("label", {
1025
1440
  key: 0,
1026
1441
  for: e.htmlFor,
1027
- class: d(["text-sm font-medium text-primary dark:text-primary-dark", e.labelClass])
1028
- }, w(e.label), 11, na)) : f("", !0),
1029
- T(s.$slots, "default", {}, void 0, !0)
1442
+ class: p(["text-sm font-medium text-primary dark:text-primary-dark", e.labelClass])
1443
+ }, I(e.label), 11, Aa)) : g("", !0),
1444
+ A(n.$slots, "default", {}, void 0, !0)
1030
1445
  ], 2));
1031
1446
  }
1032
- }), sa = /* @__PURE__ */ K(oa, [["__scopeId", "data-v-c0d9d9cb"]]), ia = /* @__PURE__ */ L({
1447
+ }), Sa = /* @__PURE__ */ Q(Ma, [["__scopeId", "data-v-c0d9d9cb"]]), Ta = /* @__PURE__ */ z({
1033
1448
  __name: "ListCard",
1034
1449
  props: {
1035
1450
  clickable: { type: Boolean, default: !1 },
1036
1451
  customClass: { default: () => ({}) }
1037
1452
  },
1038
1453
  emits: ["click"],
1039
- setup(e, { emit: s }) {
1040
- const t = e, a = s, o = () => {
1454
+ setup(e, { emit: n }) {
1455
+ const t = e, a = n, o = () => {
1041
1456
  t.clickable && a("click");
1042
1457
  };
1043
- return (i, c) => (l(), n("div", {
1044
- class: d([
1458
+ return (s, u) => (l(), i("div", {
1459
+ class: p([
1045
1460
  "flex items-center justify-between background p-3 rounded-vsk border border-vsk-primary/70 transition-colors duration-200",
1046
1461
  {
1047
1462
  "hover:bg-vsk-primary/5 cursor-pointer": t.clickable
@@ -1050,13 +1465,13 @@ const gt = ["title", "aria-label"], yt = ["title", "aria-label"], ht = ["title",
1050
1465
  ]),
1051
1466
  onClick: o
1052
1467
  }, [
1053
- T(i.$slots, "default", {}, void 0, !0)
1468
+ A(s.$slots, "default", {}, void 0, !0)
1054
1469
  ], 2));
1055
1470
  }
1056
- }), ra = /* @__PURE__ */ K(ia, [["__scopeId", "data-v-f86d47da"]]), ua = { class: "background rounded-corner flex flex-row items-center gap-2 justify-between w-full h-auto p-4 transition-all duration-200 hover:bg-ui-surface/80 dark:hover:bg-ui-surface-dark/80" }, ca = ["src", "alt", "title"], da = {
1471
+ }), Ia = /* @__PURE__ */ Q(Ta, [["__scopeId", "data-v-f86d47da"]]), Oa = { class: "background rounded-corner flex flex-row items-center gap-2 justify-between w-full h-auto p-4 transition-all duration-200 hover:bg-ui-surface/80 dark:hover:bg-ui-surface-dark/80" }, ja = ["src", "alt", "title"], Va = {
1057
1472
  key: 1,
1058
1473
  class: "w-8 h-8 flex items-center justify-center"
1059
- }, fa = ["src", "alt"], ma = ["min", "max", "value"], ba = /* @__PURE__ */ L({
1474
+ }, Pa = ["src", "alt"], Fa = ["min", "max", "value"], Na = /* @__PURE__ */ z({
1060
1475
  __name: "SliderControl",
1061
1476
  props: {
1062
1477
  icon: {},
@@ -1070,50 +1485,50 @@ const gt = ["title", "aria-label"], yt = ["title", "aria-label"], ht = ["title",
1070
1485
  getPercentageClass: { type: Function, default: () => "" }
1071
1486
  },
1072
1487
  emits: ["update:modelValue", "buttonClick"],
1073
- setup(e, { emit: s }) {
1074
- const t = e, a = s, o = y(() => {
1488
+ setup(e, { emit: n }) {
1489
+ const t = e, a = n, o = x(() => {
1075
1490
  if (t.max <= t.min) return 0;
1076
- const m = t.max - t.min, v = t.modelValue - t.min;
1077
- return Math.round(v / m * 100);
1078
- }), i = y(() => t.getPercentageClass ? t.getPercentageClass(o.value) : ""), c = (m) => {
1079
- const v = m.target;
1080
- a("update:modelValue", Number(v.value));
1081
- }, u = () => {
1491
+ const c = t.max - t.min, b = t.modelValue - t.min;
1492
+ return Math.round(b / c * 100);
1493
+ }), s = x(() => t.getPercentageClass ? t.getPercentageClass(o.value) : ""), u = (c) => {
1494
+ const b = c.target;
1495
+ a("update:modelValue", Number(b.value));
1496
+ }, r = () => {
1082
1497
  a("buttonClick");
1083
1498
  };
1084
- return (m, v) => (l(), n("div", ua, [
1085
- e.showButton ? (l(), n("button", {
1499
+ return (c, b) => (l(), i("div", Oa, [
1500
+ e.showButton ? (l(), i("button", {
1086
1501
  key: 0,
1087
- onClick: u,
1502
+ onClick: r,
1088
1503
  class: "w-8 h-8 flex items-center justify-center rounded-corner transition-all duration-200 hover:bg-ui-surface/80 dark:hover:bg-ui-surface-dark/80 hover:scale-110 active:scale-95"
1089
1504
  }, [
1090
- h("img", {
1505
+ C("img", {
1091
1506
  src: e.icon,
1092
1507
  alt: e.alt,
1093
1508
  title: e.tooltip,
1094
- class: d(["w-6 h-6 transition-all duration-200", e.iconClass])
1095
- }, null, 10, ca)
1096
- ])) : (l(), n("div", da, [
1097
- h("img", {
1509
+ class: p(["w-6 h-6 transition-all duration-200", e.iconClass])
1510
+ }, null, 10, ja)
1511
+ ])) : (l(), i("div", Va, [
1512
+ C("img", {
1098
1513
  src: e.icon,
1099
1514
  alt: e.alt,
1100
1515
  class: "w-6 h-6 transition-all duration-200"
1101
- }, null, 8, fa)
1516
+ }, null, 8, Pa)
1102
1517
  ])),
1103
- h("input", {
1518
+ C("input", {
1104
1519
  type: "range",
1105
1520
  min: e.min,
1106
1521
  max: e.max,
1107
1522
  value: e.modelValue,
1108
- onInput: c,
1523
+ onInput: u,
1109
1524
  class: "flex-1 transition-all duration-200 hover:scale-105"
1110
- }, null, 40, ma),
1111
- h("span", {
1112
- class: d(["w-12 text-right transition-all duration-200 font-medium", i.value])
1113
- }, w(o.value) + "% ", 3)
1525
+ }, null, 40, Fa),
1526
+ C("span", {
1527
+ class: p(["w-12 text-right transition-all duration-200 font-medium", s.value])
1528
+ }, I(o.value) + "% ", 3)
1114
1529
  ]));
1115
1530
  }
1116
- }), va = ["disabled"], ga = /* @__PURE__ */ L({
1531
+ }), Ra = ["disabled"], qa = /* @__PURE__ */ z({
1117
1532
  __name: "SwitchToggle",
1118
1533
  props: {
1119
1534
  isOn: { type: Boolean },
@@ -1124,15 +1539,15 @@ const gt = ["title", "aria-label"], yt = ["title", "aria-label"], ht = ["title",
1124
1539
  customClass: { default: "" }
1125
1540
  },
1126
1541
  emits: ["toggle"],
1127
- setup(e, { emit: s }) {
1128
- const t = e, a = s, o = () => {
1542
+ setup(e, { emit: n }) {
1543
+ const t = e, a = n, o = () => {
1129
1544
  a("toggle", !t.isOn);
1130
1545
  };
1131
- return (i, c) => (l(), n("button", {
1546
+ return (s, u) => (l(), i("button", {
1132
1547
  type: "button",
1133
1548
  onClick: o,
1134
1549
  disabled: e.disabled,
1135
- class: d([
1550
+ class: p([
1136
1551
  "relative inline-flex items-center rounded-full transition-colors",
1137
1552
  e.size === "small" ? "h-6 w-11" : "h-7 w-12",
1138
1553
  e.isOn ? e.activeClass : e.inactiveClass,
@@ -1140,16 +1555,16 @@ const gt = ["title", "aria-label"], yt = ["title", "aria-label"], ht = ["title",
1140
1555
  e.customClass
1141
1556
  ])
1142
1557
  }, [
1143
- h("span", {
1144
- class: d([
1558
+ C("span", {
1559
+ class: p([
1145
1560
  "inline-block transform rounded-full bg-white shadow transition-transform",
1146
1561
  e.size === "small" ? "h-4 w-4" : "h-6 w-6",
1147
1562
  e.isOn ? e.size === "small" ? "translate-x-6" : "translate-x-5" : "translate-x-1"
1148
1563
  ])
1149
1564
  }, null, 2)
1150
- ], 10, va));
1565
+ ], 10, Ra));
1151
1566
  }
1152
- }), ya = ["disabled"], ha = ["src", "alt", "title"], pa = /* @__PURE__ */ L({
1567
+ }), Ha = ["disabled"], Ua = ["src", "alt", "title"], Wa = /* @__PURE__ */ z({
1153
1568
  __name: "ToggleControl",
1154
1569
  props: {
1155
1570
  icon: {},
@@ -1161,13 +1576,13 @@ const gt = ["title", "aria-label"], yt = ["title", "aria-label"], ht = ["title",
1161
1576
  customClass: { default: () => ({}) }
1162
1577
  },
1163
1578
  emits: ["click"],
1164
- setup(e, { emit: s }) {
1165
- const t = s, a = () => {
1579
+ setup(e, { emit: n }) {
1580
+ const t = n, a = () => {
1166
1581
  t("click");
1167
1582
  };
1168
- return (o, i) => (l(), n("button", {
1583
+ return (o, s) => (l(), i("button", {
1169
1584
  onClick: a,
1170
- class: d(["p-2 rounded-corner background hover:opacity-50 transition-all duration-300 h-17.5 w-17.5 group relative overflow-hidden hover:scale-105 hover:shadow-lg active:scale-95", {
1585
+ class: p(["p-2 rounded-corner background hover:opacity-50 transition-all duration-300 h-17.5 w-17.5 group relative overflow-hidden hover:scale-105 hover:shadow-lg active:scale-95", {
1171
1586
  "animate-pulse": e.isLoading,
1172
1587
  "ring-2 ring-primary dark:ring-primary-dark": e.isActive,
1173
1588
  "opacity-60": !e.isActive,
@@ -1175,23 +1590,23 @@ const gt = ["title", "aria-label"], yt = ["title", "aria-label"], ht = ["title",
1175
1590
  }]),
1176
1591
  disabled: e.isLoading
1177
1592
  }, [
1178
- h("img", {
1593
+ C("img", {
1179
1594
  src: e.icon,
1180
1595
  alt: e.alt,
1181
1596
  title: e.tooltip,
1182
- class: d(["m-auto w-12.5 h-12.5 transition-all duration-300 group-hover:scale-110 relative z-10", {
1597
+ class: p(["m-auto w-12.5 h-12.5 transition-all duration-300 group-hover:scale-110 relative z-10", {
1183
1598
  "animate-spin": e.isLoading,
1184
1599
  "filter brightness-75": !e.isActive,
1185
1600
  "drop-shadow-lg": e.isActive,
1186
1601
  ...e.iconClass
1187
1602
  }])
1188
- }, null, 10, ha)
1189
- ], 10, ya));
1603
+ }, null, 10, Ua)
1604
+ ], 10, Ha));
1190
1605
  }
1191
- }), xa = ["title"], ka = ["src", "alt"], $a = {
1606
+ }), Ka = ["title"], Ga = ["src", "alt"], Xa = {
1192
1607
  key: 0,
1193
1608
  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"
1194
- }, wa = /* @__PURE__ */ L({
1609
+ }, Ya = /* @__PURE__ */ z({
1195
1610
  __name: "TrayIconButton",
1196
1611
  props: {
1197
1612
  icon: {},
@@ -1205,91 +1620,106 @@ const gt = ["title", "aria-label"], yt = ["title", "aria-label"], ht = ["title",
1205
1620
  customTooltipText: { default: "" }
1206
1621
  },
1207
1622
  emits: ["click"],
1208
- setup(e, { emit: s }) {
1209
- const t = s, a = S(!1), o = () => {
1623
+ setup(e, { emit: n }) {
1624
+ const t = n, a = w(!1), o = () => {
1210
1625
  t("click");
1211
1626
  };
1212
- return (i, c) => (l(), n("div", {
1213
- class: d(["p-1 rounded-corner relative hover:bg-primary dark:hover:bg-primary-dark group transition-all duration-300", e.customClass]),
1627
+ return (s, u) => (l(), i("div", {
1628
+ class: p(["p-1 rounded-corner relative hover:bg-primary dark:hover:bg-primary-dark group transition-all duration-300", e.customClass]),
1214
1629
  title: e.tooltip,
1215
1630
  onClick: o,
1216
- onMouseenter: c[0] || (c[0] = (u) => a.value = !0),
1217
- onMouseleave: c[1] || (c[1] = (u) => a.value = !1)
1631
+ onMouseenter: u[0] || (u[0] = (r) => a.value = !0),
1632
+ onMouseleave: u[1] || (u[1] = (r) => a.value = !1)
1218
1633
  }, [
1219
- h("img", {
1634
+ C("img", {
1220
1635
  src: e.icon,
1221
1636
  alt: e.alt,
1222
- class: d(["m-auto h-5.5 w-auto transition-all duration-300", e.iconClass])
1223
- }, null, 10, ka),
1224
- e.badge !== null && e.badge > 0 ? (l(), n("div", $a, w(e.badge), 1)) : f("", !0),
1225
- e.showCustomTooltip && e.customTooltipText ? (l(), n("div", {
1637
+ class: p(["m-auto h-5.5 w-auto transition-all duration-300", e.iconClass])
1638
+ }, null, 10, Ga),
1639
+ e.badge !== null && e.badge > 0 ? (l(), i("div", Xa, I(e.badge), 1)) : g("", !0),
1640
+ e.showCustomTooltip && e.customTooltipText ? (l(), i("div", {
1226
1641
  key: 1,
1227
- class: d(["absolute top-1 left-1/2 transform -translate-x-1/2 text-xs font-semibold p-1 rounded-corner transition-all duration-300 pointer-events-none background", [
1642
+ class: p(["absolute top-1 left-1/2 transform -translate-x-1/2 text-xs font-semibold p-1 rounded-corner transition-all duration-300 pointer-events-none background", [
1228
1643
  e.tooltipClass,
1229
1644
  {
1230
1645
  "opacity-0 -translate-y-2": !a.value,
1231
1646
  "opacity-100 translate-y-0": a.value
1232
1647
  }
1233
1648
  ]])
1234
- }, w(e.customTooltipText), 3)) : f("", !0),
1235
- T(i.$slots, "default")
1236
- ], 42, xa));
1649
+ }, I(e.customTooltipText), 3)) : g("", !0),
1650
+ A(s.$slots, "default")
1651
+ ], 42, Ka));
1237
1652
  }
1238
- }), Ca = [
1239
- nt,
1240
- ce,
1241
- ue,
1242
- ut,
1243
- M,
1653
+ }), Ja = [
1654
+ yt,
1655
+ xe,
1656
+ he,
1244
1657
  $t,
1245
- fe,
1246
- de,
1247
- It,
1248
- me,
1249
- Pt,
1658
+ N,
1659
+ jt,
1660
+ $e,
1661
+ we,
1250
1662
  Xt,
1251
- qt,
1252
- la,
1253
- sa,
1663
+ Ce,
1664
+ Zt,
1665
+ oa,
1254
1666
  ra,
1255
- ba,
1256
1667
  ga,
1257
- pa,
1258
- wa
1259
- ], Aa = {
1668
+ ha,
1669
+ wa,
1670
+ Ca,
1671
+ za,
1672
+ Ea,
1673
+ Ba,
1674
+ Sa,
1675
+ Ia,
1676
+ Na,
1677
+ qa,
1678
+ Wa,
1679
+ Ya
1680
+ ], tn = {
1260
1681
  install(e) {
1261
- Ca.forEach((s) => {
1262
- e.component(s.name, s);
1682
+ Ja.forEach((n) => {
1683
+ e.component(n.name, n);
1263
1684
  });
1264
1685
  }
1265
1686
  };
1266
1687
  export {
1267
- Xt as ActionButton,
1268
- fe as AppBar,
1269
- Pt as BarSearch,
1270
- ee as CLAVE_DE_LA_BARRA,
1271
- qt as ConfigSection,
1272
- la as DeviceCard,
1273
- sa as FormGroup,
1274
- ra as ListCard,
1275
- ct as POSICIONES,
1276
- ut as SelectField,
1277
- nt as SideBar,
1278
- ce as SideButton,
1279
- ue as SideGroup,
1280
- ba as SliderControl,
1281
- ga as SwitchToggle,
1282
- It as TabBar,
1283
- me as TabItem,
1284
- M as ThemeIcon,
1285
- pa as ToggleControl,
1286
- wa as TrayIconButton,
1287
- de as WindowControls,
1288
- $t as WindowFrame,
1289
- Aa as default,
1290
- dt as esPosicion,
1291
- J as orientacionDe,
1292
- bt as posicionDe,
1293
- G as usarLaBarra,
1294
- vt as usarLaPosicionDeLaBarra
1688
+ oa as ActionButton,
1689
+ $e as AppBar,
1690
+ Zt as BarSearch,
1691
+ ze as CLAVE_DEL_MENU,
1692
+ le as CLAVE_DE_LA_BARRA,
1693
+ ra as ConfigSection,
1694
+ ga as DeviceCard,
1695
+ ha as DropdownMenu,
1696
+ wa as DropdownMenuContent,
1697
+ Ca as DropdownMenuItem,
1698
+ za as DropdownMenuLabel,
1699
+ Ea as DropdownMenuSeparator,
1700
+ Ba as DropdownMenuTrigger,
1701
+ Sa as FormGroup,
1702
+ oe as LOS_TRES_CONTROLES,
1703
+ Ia as ListCard,
1704
+ Ct as POSICIONES,
1705
+ $t as SelectField,
1706
+ yt as SideBar,
1707
+ xe as SideButton,
1708
+ he as SideGroup,
1709
+ Na as SliderControl,
1710
+ qa as SwitchToggle,
1711
+ Xt as TabBar,
1712
+ Ce as TabItem,
1713
+ N as ThemeIcon,
1714
+ Wa as ToggleControl,
1715
+ Ya as TrayIconButton,
1716
+ we as WindowControls,
1717
+ jt as WindowFrame,
1718
+ tn as default,
1719
+ zt as esPosicion,
1720
+ te as orientacionDe,
1721
+ Dt as posicionDe,
1722
+ Z as usarElMenu,
1723
+ X as usarLaBarra,
1724
+ Bt as usarLaPosicionDeLaBarra
1295
1725
  };