@vasakgroup/vue-libvasak 0.4.1 → 0.5.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 +1 @@
1
- (function(d,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("@tauri-apps/api/event"),require("@vasakgroup/plugin-vicons"),require("@tauri-apps/api/window")):typeof define=="function"&&define.amd?define(["exports","vue","@tauri-apps/api/event","@vasakgroup/plugin-vicons","@tauri-apps/api/window"],e):(d=typeof globalThis<"u"?globalThis:d||self,e(d.VueLibVasak={},d.Vue,d.TauriEvent,d.VasakVicons,d.TauriWindow))})(this,(function(d,e,de,F,me){"use strict";function fe(t,n){const l=e.ref("");let a=null,o=!1,i=0;async function c(){const s=++i,m=t.value;if(!m){l.value="";return}const u=n.value==="symbol"?await F.getSymbolSource(m):await F.getIconSource(m);s===i&&(l.value=u)}return e.onMounted(async()=>{const s=await de.listen("vicons:theme-changed",c);if(o){s();return}a=s,await c()}),e.onUnmounted(()=>{o=!0,a?.()}),e.watch(t,c),l}const ue=["src","alt"],B=e.defineComponent({__name:"ThemeIcon",props:{name:{},type:{default:"icon"},size:{default:18},alt:{default:""}},setup(t){const n=t,l=fe(e.toRef(n,"name"),e.toRef(n,"type")),a=e.computed(()=>`${n.size}px`);return(o,i)=>e.unref(l)?(e.openBlock(),e.createElementBlock("img",{key:0,src:e.unref(l),alt:t.alt,style:e.normalizeStyle({width:a.value,height:a.value}),class:"shrink-0 object-contain"},null,12,ue)):(e.openBlock(),e.createElementBlock("span",{key:1,style:e.normalizeStyle({width:a.value,height:a.value}),class:"shrink-0"},null,4))}}),be={class:"flex flex-col gap-2"},pe=["aria-expanded"],ke={key:1,class:"flex flex-col gap-1"},T=e.defineComponent({__name:"SideGroup",props:{title:{},collapsed:{type:Boolean,default:!1},defaultOpen:{type:Boolean,default:!0}},setup(t){const n=t,l=e.ref(n.defaultOpen);return e.watch(()=>n.collapsed,a=>{a&&(l.value=!0)}),(a,o)=>(e.openBlock(),e.createElementBlock("section",be,[t.collapsed?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",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","aria-expanded":l.value,onClick:o[0]||(o[0]=i=>l.value=!l.value)},[e.createElementVNode("span",null,e.toDisplayString(t.title),1),e.createVNode(B,{name:"pan-down-symbolic",type:"symbol",size:12,class:e.normalizeClass(["transition-transform duration-200",l.value?"":"-rotate-90"])},null,8,["class"])],8,pe)),l.value||t.collapsed?(e.openBlock(),e.createElementBlock("div",ke,[e.renderSlot(a.$slots,"default")])):e.createCommentVNode("",!0)]))}}),ge=["title","aria-label","disabled","aria-current"],ye={key:1},he={key:0,class:"min-w-0 flex-1 truncate font-medium"},Ce={key:1,class:"rounded-corner bg-ui-surface px-2 py-0.5 font-semibold text-tx-muted text-xs"},I=e.defineComponent({__name:"SideButton",props:{label:{},icon:{default:""},active:{type:Boolean,default:!1},collapsed:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},badge:{default:""}},emits:["click"],setup(t){return(n,l)=>(e.openBlock(),e.createElementBlock("button",{type:"button",title:t.collapsed?t.label:void 0,"aria-label":t.collapsed?t.label:void 0,disabled:t.disabled,"aria-current":t.active?"page":void 0,class:e.normalizeClass(["group relative flex w-full items-center gap-3 rounded-corner border px-3 py-2 text-left text-sm transition-all duration-200",[t.active?"border-secondary bg-primary/15 text-tx-main shadow-sm":"border-transparent bg-transparent hover:border-ui-border hover:bg-ui-surface/70",t.disabled?"cursor-not-allowed opacity-60":"cursor-pointer",t.collapsed?"justify-center px-2":""]]),onClick:l[0]||(l[0]=a=>n.$emit("click"))},[e.createElementVNode("span",{class:e.normalizeClass(["flex h-8 w-8 shrink-0 items-center justify-center rounded-corner font-semibold text-xs uppercase tracking-wide",t.active?"border-secondary bg-primary/20":""]),"aria-hidden":"true"},[t.icon?(e.openBlock(),e.createBlock(B,{key:0,name:t.icon,size:20},null,8,["name"])):(e.openBlock(),e.createElementBlock("span",ye,e.toDisplayString(t.label.charAt(0).toUpperCase()),1))],2),t.collapsed?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("span",he,e.toDisplayString(t.label),1)),!t.collapsed&&t.badge!==""?(e.openBlock(),e.createElementBlock("span",Ce,e.toDisplayString(t.badge),1)):e.createCommentVNode("",!0)],10,ge))}}),xe={key:0,class:"flex flex-col gap-2 border-ui-border border-b p-2"},Be={class:"flex items-center gap-2"},we=["aria-label","aria-expanded"],$e={key:0,class:"min-w-0 flex-1"},Ee={key:0,class:"truncate font-semibold text-sm"},ze={key:1,class:"truncate text-tx-muted text-xs"},Ve={key:0},Se={key:1,class:"flex border-ui-border border-b p-2"},Ne=["aria-label","aria-expanded"],Le={class:"flex min-h-0 flex-1 flex-col gap-3 overflow-y-auto p-2"},K="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",W=767,U=e.defineComponent({__name:"SideBar",props:{title:{default:""},subtitle:{default:""},categories:{default:()=>[]},modelValue:{default:""},collapsed:{type:Boolean,default:void 0},collapseLabel:{default:"Collapse"},expandLabel:{default:"Expand"}},emits:["update:modelValue","update:collapsed","change"],setup(t,{expose:n,emit:l}){const a=t,o=l,i=e.ref(a.collapsed??!1),c=e.ref(!1);let s=null,m=null;const u=e.computed(()=>c.value||i.value),$=e.computed(()=>!!(a.title||a.subtitle));e.computed(()=>a.categories.length>0);function V(){return document.documentElement?.clientWidth||window.innerWidth}function x(){c.value=V()<=W}function w(){i.value=!i.value,o("update:collapsed",i.value)}function z(g){o("update:modelValue",g),o("change",g)}return e.watch(()=>a.collapsed,g=>{g!==void 0&&(i.value=g)}),e.onMounted(()=>{s=window.matchMedia(`(max-width: ${W}px)`),x(),s.addEventListener("change",x),window.addEventListener("resize",x),typeof ResizeObserver<"u"&&document.documentElement&&(m=new ResizeObserver(x),m.observe(document.documentElement))}),e.onBeforeUnmount(()=>{s?.removeEventListener("change",x),window.removeEventListener("resize",x),m?.disconnect(),m=null}),n({collapsed:u}),(g,E)=>(e.openBlock(),e.createElementBlock("aside",{class:e.normalizeClass(["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]",u.value?"md:w-[84px]":"md:w-72"]])},[$.value||g.$slots.header?(e.openBlock(),e.createElementBlock("header",xe,[e.createElementVNode("div",Be,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(K),"aria-label":u.value?t.expandLabel:t.collapseLabel,"aria-expanded":!u.value,onClick:w},[e.createVNode(B,{name:u.value?"pan-end-symbolic":"pan-start-symbolic",type:"symbol",size:16},null,8,["name"])],8,we),$.value&&!u.value?(e.openBlock(),e.createElementBlock("div",$e,[t.title?(e.openBlock(),e.createElementBlock("p",Ee,e.toDisplayString(t.title),1)):e.createCommentVNode("",!0),t.subtitle?(e.openBlock(),e.createElementBlock("p",ze,e.toDisplayString(t.subtitle),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)]),g.$slots.header&&!u.value?(e.openBlock(),e.createElementBlock("div",Ve,[e.renderSlot(g.$slots,"header",{collapsed:u.value})])):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("div",Se,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(K),"aria-label":u.value?t.expandLabel:t.collapseLabel,"aria-expanded":!u.value,onClick:w},[e.createVNode(B,{name:u.value?"pan-end-symbolic":"pan-start-symbolic",type:"symbol",size:16},null,8,["name"])],8,Ne)])),e.createElementVNode("div",Le,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.categories,S=>(e.openBlock(),e.createBlock(T,{key:S.id,title:S.title,collapsed:u.value},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(S.items,f=>(e.openBlock(),e.createBlock(I,{key:f.id,label:f.label,icon:f.icon,badge:f.badge,disabled:f.disabled,collapsed:u.value,active:t.modelValue===f.id,onClick:b=>z(f.id)},null,8,["label","icon","badge","disabled","collapsed","active","onClick"]))),128))]),_:2},1032,["title","collapsed"]))),128)),e.renderSlot(g.$slots,"default",{collapsed:u.value})])],2))}}),De={class:"flex min-w-0 flex-col gap-1"},Me=["for"],Ae={class:"relative flex min-w-0 items-center"},Te=["id"],q=e.defineComponent({inheritAttrs:!1,__name:"SelectField",props:e.mergeModels({label:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(t){const n=t,l=e.useAttrs(),a=e.useId(),o=e.computed(()=>l.id??a),[i,c]=e.useModel(t,"modelValue",{set(s){return c.number?Number(s):s}});return(s,m)=>(e.openBlock(),e.createElementBlock("div",De,[n.label?(e.openBlock(),e.createElementBlock("label",{key:0,for:o.value,class:"text-tx-muted text-xs"},e.toDisplayString(n.label),9,Me)):e.createCommentVNode("",!0),e.createElementVNode("div",Ae,[e.withDirectives(e.createElementVNode("select",e.mergeProps({id:o.value,"onUpdate:modelValue":m[0]||(m[0]=u=>e.isRef(i)?i.value=u:null),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"},e.unref(l)),[e.renderSlot(s.$slots,"default")],16,Te),[[e.vModelSelect,e.unref(i)]]),e.createVNode(B,{name:"pan-down-symbolic",type:"symbol",size:14,class:"pointer-events-none absolute right-2"})])]))}}),D=Symbol("barra de vasak");function M(t){return t==="left"||t==="right"?"vertical":"horizontal"}const G=["top","bottom","left","right"];function X(t){return typeof t=="string"&&G.includes(t)}function N(){const t=e.inject(D,null);if(t)return t;const n=e.ref("top");return{posicion:n,orientacion:e.computed(()=>M(n.value)),vertical:e.computed(()=>M(n.value)==="vertical")}}const Ie="window",Pe="barPosition";function Y(t){const l=t?.[Ie]?.[Pe];return X(l)?l:null}function H(t="top"){const n=e.ref(t);let l=null,a=!1;async function o(){try{const{readConfig:i}=await import("@vasakgroup/plugin-config-manager"),c=await i();n.value=Y(c)??t}catch{}}return e.onMounted(async()=>{await o();try{const{listen:i}=await import("@tauri-apps/api/event"),c=await i("config-changed",()=>{o()});if(a){c();return}l=c}catch{}}),e.onBeforeUnmount(()=>{a=!0,l?.(),l=null}),n}const Oe=["title","aria-label"],je=["title","aria-label"],Re=["title","aria-label"],P="flex items-center justify-center rounded-corner border border-ui-border bg-ui-bg/80 p-1 transition-colors",O=e.defineComponent({__name:"WindowControls",props:{minimizeLabel:{default:"Minimize"},maximizeLabel:{default:"Maximize"},closeLabel:{default:"Close"}},setup(t){const{vertical:n}=N();function l(){return me.getCurrentWindow()}return(a,o)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["flex shrink-0 gap-1",e.unref(n)?"flex-col":""]),"data-tauri-drag-region":""},[e.createElementVNode("button",{type:"button",class:e.normalizeClass([P,"hover:bg-status-success"]),title:t.minimizeLabel,"aria-label":t.minimizeLabel,onClick:o[0]||(o[0]=i=>l().minimize())},[e.createVNode(B,{name:"window-minimize",size:24})],10,Oe),e.createElementVNode("button",{type:"button",class:e.normalizeClass([P,"hover:bg-status-warning"]),title:t.maximizeLabel,"aria-label":t.maximizeLabel,onClick:o[1]||(o[1]=i=>l().toggleMaximize())},[e.createVNode(B,{name:"window-maximize",size:24})],10,je),e.createElementVNode("button",{type:"button",class:e.normalizeClass([P,"hover:bg-status-error"]),title:t.closeLabel,"aria-label":t.closeLabel,onClick:o[2]||(o[2]=i=>l().close())},[e.createVNode(B,{name:"window-close",size:24})],10,Re)],2))}}),Fe={key:0,class:"flex shrink-0 items-center","data-tauri-drag-region":""},Ke={key:1,class:"min-w-0 shrink truncate text-sm","data-tauri-drag-region":""},j=e.defineComponent({__name:"AppBar",props:{position:{default:null},title:{default:""},minimizeLabel:{default:"Minimize"},maximizeLabel:{default:"Maximize"},closeLabel:{default:"Close"},hideControls:{type:Boolean,default:!1}},setup(t){const n=t,l=N(),a=e.computed(()=>n.position??l.posicion.value),o=e.computed(()=>a.value==="left"||a.value==="right");return e.provide(D,{posicion:a,orientacion:e.computed(()=>o.value?"vertical":"horizontal"),vertical:o}),(i,c)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["flex shrink-0 items-center gap-2 p-1 font-title",o.value?"h-full flex-col":"w-full"]),"data-tauri-drag-region":""},[i.$slots.identidad?(e.openBlock(),e.createElementBlock("div",Fe,[e.renderSlot(i.$slots,"identidad")])):e.createCommentVNode("",!0),(i.$slots.titulo||t.title)&&!o.value?(e.openBlock(),e.createElementBlock("p",Ke,[e.renderSlot(i.$slots,"titulo",{},()=>[e.createTextVNode(e.toDisplayString(t.title),1)])])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["flex min-h-0 min-w-0 flex-1 items-center gap-2 overflow-auto",o.value?"flex-col":""]),"data-tauri-drag-region":""},[e.renderSlot(i.$slots,"default")],2),i.$slots.acciones?(e.openBlock(),e.createElementBlock("div",{key:2,class:e.normalizeClass(["flex shrink-0 items-center gap-1",o.value?"flex-col":""])},[e.renderSlot(i.$slots,"acciones")],2)):e.createCommentVNode("",!0),t.hideControls?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(O,{key:3,"minimize-label":t.minimizeLabel,"maximize-label":t.maximizeLabel,"close-label":t.closeLabel},null,8,["minimize-label","maximize-label","close-label"]))],2))}}),We={class:"flex min-h-0 min-w-0 flex-1"},J=e.defineComponent({__name:"WindowFrame",props:{position:{default:null},title:{default:""},minimizeLabel:{default:"Minimize"},maximizeLabel:{default:"Maximize"},closeLabel:{default:"Close"},hideControls:{type:Boolean,default:!1},hideBar:{type:Boolean,default:!1}},setup(t){const n=t,l=H(),a=e.computed(()=>n.position??l.value),o=e.computed(()=>M(a.value)),i=e.computed(()=>o.value==="vertical");e.provide(D,{posicion:a,orientacion:o,vertical:i});const c={top:"flex-col",bottom:"flex-col-reverse",left:"flex-row",right:"flex-row-reverse"};return(s,m)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["flex h-screen w-screen overflow-hidden rounded-corner-window border border-ui-border bg-ui-bg/80",c[a.value]])},[t.hideBar?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(j,{key:0,position:a.value,title:t.title,"minimize-label":t.minimizeLabel,"maximize-label":t.maximizeLabel,"close-label":t.closeLabel,"hide-controls":t.hideControls},e.createSlots({default:e.withCtx(()=>[e.renderSlot(s.$slots,"barra")]),_:2},[s.$slots.identidad?{name:"identidad",fn:e.withCtx(()=>[e.renderSlot(s.$slots,"identidad")]),key:"0"}:void 0,s.$slots.titulo?{name:"titulo",fn:e.withCtx(()=>[e.renderSlot(s.$slots,"titulo")]),key:"1"}:void 0,s.$slots.acciones?{name:"acciones",fn:e.withCtx(()=>[e.renderSlot(s.$slots,"acciones")]),key:"2"}:void 0]),1032,["position","title","minimize-label","maximize-label","close-label","hide-controls"])),e.createElementVNode("div",We,[e.renderSlot(s.$slots,"default")])],2))}}),Ue=["aria-selected","title","aria-label","tabindex"],qe={key:1,"aria-hidden":"true"},Ge={key:2,class:"min-w-0 flex-1 truncate"},Xe=["title","aria-label"],Ye={class:"whitespace-nowrap"},He={key:0,class:"size-2 shrink-0 rounded-full bg-current","aria-hidden":"true"},Je=["title","aria-label"],Qe=500,Q=8,Z=6,R=e.defineComponent({__name:"TabItem",props:{tab:{},active:{type:Boolean,default:!1},closeLabel:{default:"Close"},dirtyLabel:{default:"Unsaved changes"},tabindex:{default:0}},emits:["select","close","menu","mover","navegar"],setup(t,{emit:n}){const l=t,a=n,{vertical:o,posicion:i}=N(),c=e.ref(null),s=e.ref(null),m=e.ref(!1),u=e.ref(!1),$=e.ref(!1),V=e.ref({top:0,left:0,right:0});let x=null,w=null;const z=e.computed(()=>l.tab.closable!==!1),g=e.computed(()=>l.tab.tooltip??l.tab.label),E=e.computed(()=>l.tab.dirty?`${l.tab.label} · ${l.dirtyLabel}`:l.tab.label),S=e.computed(()=>l.tab.label.trim().charAt(0).toUpperCase()),f=e.computed(()=>m.value||$.value),b=e.computed(()=>!!l.tab.dirty&&!(f.value&&z.value)),p=e.computed(()=>z.value&&(f.value||l.active||!l.tab.dirty)),k=e.computed(()=>o.value&&(m.value||u.value||$.value)),C=e.computed(()=>{const y={position:"fixed",top:`${V.value.top}px`,zIndex:50};return i.value==="right"?{...y,right:`${V.value.right+Z}px`}:{...y,left:`${V.value.left+Z}px`}});function ce(){const y=c.value;if(!y)return;const r=y.getBoundingClientRect();V.value={top:r.top,left:r.right,right:window.innerWidth-r.left}}function Mt(y){const r=y.relatedTarget;r&&s.value?.contains(r)||($.value=!1)}function At(){m.value=!0,ce()}function Tt(){u.value=!0,ce()}function L(){x!==null&&clearTimeout(x),x=null,w=null}function It(y){y.button===0&&(w={x:y.clientX,y:y.clientY},x=setTimeout(()=>{w&&a("menu",w),L()},Qe))}function Pt(y){if(!w)return;(Math.abs(y.clientX-w.x)>Q||Math.abs(y.clientY-w.y)>Q)&&L()}function Ot(y){y.button===1&&z.value&&(y.preventDefault(),a("close"))}function jt(y){y.preventDefault(),a("menu",{x:y.clientX,y:y.clientY})}return e.onBeforeUnmount(L),(y,r)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"raiz",ref:c,class:e.normalizeClass(["group relative flex shrink-0 cursor-pointer items-center gap-2 rounded-corner border border-ui-border transition-colors",[t.active?"bg-primary font-bold text-tx-on-primary":"bg-ui-bg/80 hover:bg-ui-surface/70",e.unref(o)?"size-8 justify-center p-0 text-sm":"w-34 max-w-34 px-3 py-1 text-sm"]]),role:"tab","aria-selected":t.active,title:g.value,"aria-label":E.value,tabindex:t.tabindex,onClick:r[5]||(r[5]=e.withModifiers(h=>a("select"),["stop"])),onKeydown:[r[6]||(r[6]=e.withKeys(e.withModifiers(h=>a("select"),["stop"]),["enter"])),r[7]||(r[7]=e.withKeys(e.withModifiers(h=>a("select"),["prevent","stop"]),["space"])),r[8]||(r[8]=e.withKeys(e.withModifiers(h=>a("navegar","anterior"),["prevent","stop"]),["left"])),r[9]||(r[9]=e.withKeys(e.withModifiers(h=>a("navegar","anterior"),["prevent","stop"]),["up"])),r[10]||(r[10]=e.withKeys(e.withModifiers(h=>a("navegar","siguiente"),["prevent","stop"]),["right"])),r[11]||(r[11]=e.withKeys(e.withModifiers(h=>a("navegar","siguiente"),["prevent","stop"]),["down"])),r[12]||(r[12]=e.withKeys(e.withModifiers(h=>a("navegar","primera"),["prevent","stop"]),["home"])),r[13]||(r[13]=e.withKeys(e.withModifiers(h=>a("navegar","ultima"),["prevent","stop"]),["end"])),r[14]||(r[14]=e.withKeys(e.withModifiers(h=>a("mover",-1),["alt","prevent","stop"]),["left"])),r[15]||(r[15]=e.withKeys(e.withModifiers(h=>a("mover",-1),["alt","prevent","stop"]),["up"])),r[16]||(r[16]=e.withKeys(e.withModifiers(h=>a("mover",1),["alt","prevent","stop"]),["right"])),r[17]||(r[17]=e.withKeys(e.withModifiers(h=>a("mover",1),["alt","prevent","stop"]),["down"])),r[18]||(r[18]=e.withKeys(e.withModifiers(h=>z.value&&a("close"),["prevent","stop"]),["delete"]))],onAuxclick:e.withModifiers(Ot,["stop"]),onContextmenu:jt,onPointerdown:It,onPointermove:Pt,onPointerup:L,onPointerleave:L,onMouseenter:At,onMouseleave:r[19]||(r[19]=h=>m.value=!1),onFocus:Tt,onBlur:r[20]||(r[20]=h=>u.value=!1)},[t.tab.icon?(e.openBlock(),e.createBlock(B,{key:0,name:t.tab.icon,size:16,class:"shrink-0"},null,8,["name"])):e.unref(o)?(e.openBlock(),e.createElementBlock("span",qe,e.toDisplayString(S.value),1)):e.createCommentVNode("",!0),e.unref(o)?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("span",Ge,e.toDisplayString(t.tab.label),1)),b.value?(e.openBlock(),e.createElementBlock("span",{key:3,class:e.normalizeClass(["size-2 shrink-0 rounded-full bg-current",e.unref(o)?"absolute right-0.5 top-0.5":""]),"aria-hidden":"true"},null,2)):p.value&&!e.unref(o)?(e.openBlock(),e.createElementBlock("button",{key:4,type:"button",class:"flex size-4 shrink-0 items-center justify-center rounded-corner-sm hover:bg-ui-surface",title:t.closeLabel,"aria-label":`${t.closeLabel}: ${E.value}`,onClick:r[0]||(r[0]=e.withModifiers(h=>a("close"),["stop"]))},[e.createVNode(B,{name:"gtk-close",type:"symbol",size:12})],8,Xe)):e.createCommentVNode("",!0),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[e.createVNode(e.Transition,{"enter-active-class":"transition duration-150 ease-out","enter-from-class":"opacity-0 scale-95","leave-active-class":"transition duration-100 ease-in","leave-to-class":"opacity-0 scale-95"},{default:e.withCtx(()=>[k.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["flex items-center gap-2 rounded-corner border border-ui-border bg-ui-surface/95 px-3 py-1 text-sm shadow-lg",t.active?"font-bold":""]),ref_key:"desplegadoRef",ref:s,style:e.normalizeStyle(C.value),onMouseenter:r[2]||(r[2]=h=>$.value=!0),onMouseleave:r[3]||(r[3]=h=>$.value=!1),onFocusin:r[4]||(r[4]=h=>$.value=!0),onFocusout:Mt},[e.createElementVNode("span",Ye,e.toDisplayString(t.tab.label),1),t.tab.dirty?(e.openBlock(),e.createElementBlock("span",He)):e.createCommentVNode("",!0),z.value?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",class:"flex size-4 shrink-0 items-center justify-center rounded-corner-sm hover:bg-ui-surface",title:t.closeLabel,"aria-label":`${t.closeLabel}: ${E.value}`,onClick:r[1]||(r[1]=e.withModifiers(h=>a("close"),["stop"]))},[e.createVNode(B,{name:"gtk-close",type:"symbol",size:12})],8,Je)):e.createCommentVNode("",!0)],38)):e.createCommentVNode("",!0)]),_:1})]))],42,Ue))}}),Ze=["aria-orientation"],ve=["draggable","onDragstart","onDragover","onDrop"],_e=["title","aria-label"],v=e.defineComponent({__name:"TabBar",props:{tabs:{},modelValue:{default:""},newLabel:{default:""},closeLabel:{default:"Close"},dirtyLabel:{default:"Unsaved changes"},fixedOrder:{type:Boolean,default:!1}},emits:["update:modelValue","select","close","new","reorder","menu"],setup(t,{emit:n}){const l=t,a=n,{vertical:o}=N(),i=e.ref(null),c=e.ref(0),s=e.ref(null),m=e.ref(null);function u(f){a("update:modelValue",f),a("select",f)}async function $(f,b){const p=l.tabs.length-1;if(p<0)return;const k=b==="primera"?0:b==="ultima"?p:b==="anterior"?(f-1+l.tabs.length)%l.tabs.length:(f+1)%l.tabs.length;c.value=k,await e.nextTick(),i.value?.querySelectorAll('[role="tab"]')?.[k]?.focus()}function V(f,b){if(l.fixedOrder)return;const p=f+b;if(p<0||p>=l.tabs.length)return;const k=[...l.tabs],[C]=k.splice(f,1);C&&(k.splice(p,0,C),c.value=p,a("reorder",k))}function x(f){const b=i.value;if(!b)return;const p=f.deltaY||f.deltaX||0,k=o.value?b.scrollTop:b.scrollLeft;o.value?b.scrollTop+=p:b.scrollLeft+=p,(o.value?b.scrollTop:b.scrollLeft)!==k&&f.preventDefault()}function w(f,b){l.fixedOrder||(s.value=f,b.dataTransfer?.setData("text/plain",String(f)),b.dataTransfer&&(b.dataTransfer.effectAllowed="move"))}function z(f,b){l.fixedOrder||s.value===null||(b.preventDefault(),m.value=f,b.dataTransfer&&(b.dataTransfer.dropEffect="move"))}function g(f){const b=s.value;if(E(),l.fixedOrder||b===null||b===f)return;const p=[...l.tabs],[k]=p.splice(b,1);k&&(p.splice(f,0,k),a("reorder",p))}function E(){s.value=null,m.value=null}const S=e.computed(()=>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");return(f,b)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["flex min-h-0 min-w-0 items-center gap-1",e.unref(o)?"w-full flex-col":"h-full"]),role:"tablist","aria-orientation":e.unref(o)?"vertical":"horizontal"},[e.createElementVNode("div",{ref_key:"carril",ref:i,class:e.normalizeClass(S.value),onWheel:x},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.tabs,(p,k)=>(e.openBlock(),e.createElementBlock("div",{key:p.id,class:e.normalizeClass(["transition-opacity",[s.value===k?"opacity-40":"",m.value===k&&s.value!==k?"ring-2 ring-secondary rounded-corner":""]]),draggable:!t.fixedOrder,onDragstart:C=>w(k,C),onDragover:C=>z(k,C),onDrop:e.withModifiers(C=>g(k),["prevent"]),onDragend:E},[e.createVNode(R,{tab:p,active:p.id===t.modelValue,"close-label":t.closeLabel,"dirty-label":t.dirtyLabel,tabindex:k===c.value?0:-1,onSelect:C=>u(p.id),onClose:C=>a("close",p.id),onMenu:C=>a("menu",{id:p.id,...C}),onNavegar:C=>$(k,C),onMover:C=>V(k,C)},null,8,["tab","active","close-label","dirty-label","tabindex","onSelect","onClose","onMenu","onNavegar","onMover"])],42,ve))),128))],34),t.newLabel?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",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",title:t.newLabel,"aria-label":t.newLabel,onClick:b[0]||(b[0]=p=>a("new"))},[e.createVNode(B,{name:"gtk-add",type:"symbol",size:14})],8,_e)):e.createCommentVNode("",!0)],10,Ze))}}),et={class:"relative flex shrink-0 items-center"},tt=["title","aria-label","aria-expanded"],lt=["value","placeholder","aria-label"],_=e.defineComponent({__name:"BarSearch",props:{modelValue:{default:""},placeholder:{default:""},label:{default:"Search"},collapsed:{type:Boolean,default:!1}},emits:["update:modelValue","search","open","close"],setup(t,{emit:n}){const l=t,a=n,{vertical:o,posicion:i}=N(),c=e.ref(!1),s=e.ref(null),m=e.computed(()=>o.value||l.collapsed),u=e.computed(()=>!m.value||c.value),$=e.computed(()=>{if(!m.value)return"";const g="absolute z-40 w-64 rounded-corner border border-ui-border bg-ui-surface/95 p-1 shadow-lg";return i.value==="left"?`${g} left-full top-0 ml-1`:i.value==="right"?`${g} right-full top-0 mr-1`:i.value==="bottom"?`${g} bottom-full right-0 mb-1`:`${g} top-full right-0 mt-1`});async function V(){c.value=!0,a("open"),await e.nextTick(),s.value?.focus()}function x(){c.value&&(c.value=!1,a("close"))}function w(g){a("update:modelValue",g.target.value)}function z(){a("search",l.modelValue)}return(g,E)=>(e.openBlock(),e.createElementBlock("div",et,[m.value?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"flex size-7 items-center justify-center rounded-corner border border-ui-border bg-ui-bg/80 hover:bg-ui-surface/70",title:t.label,"aria-label":t.label,"aria-expanded":c.value,onMousedown:E[0]||(E[0]=e.withModifiers(()=>{},["prevent"])),onClick:E[1]||(E[1]=S=>c.value?x():V())},[e.createVNode(B,{name:"system-search",type:"symbol",size:14})],40,tt)):e.createCommentVNode("",!0),u.value?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass($.value)},[e.createElementVNode("input",{ref_key:"campo",ref:s,type:"search",class:e.normalizeClass(["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"]),value:t.modelValue,placeholder:t.placeholder||t.label,"aria-label":t.label,onInput:w,onKeydown:[e.withKeys(z,["enter"]),e.withKeys(x,["esc"])],onBlur:x},null,42,lt)],2)):e.createCommentVNode("",!0)]))}}),at=["type","disabled"],ot={key:0,class:"w-4 h-4 animate-spin rounded-full border-2 border-current border-t-transparent"},nt=["src","alt"],it={key:2},rt=["src","alt"],st=e.defineComponent({__name:"ActionButton",props:{label:{},disabled:{type:Boolean,default:!1},variant:{default:"primary"},loading:{type:Boolean,default:!1},customClass:{default:()=>({})},size:{default:"md"},fullWidth:{type:Boolean,default:!1},iconSrc:{default:""},iconAlt:{default:""},iconRight:{type:Boolean,default:!1},type:{default:"button"},stopPropagation:{type:Boolean,default:!1},preventDefault:{type:Boolean,default:!1}},emits:["click"],setup(t,{emit:n}){const l=t,a=n,o={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",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",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"},i={sm:"px-2 py-1 text-xs",md:"px-3 py-1 text-sm",lg:"px-4 py-2 text-base"},c=s=>{l.stopPropagation&&s.stopPropagation(),l.preventDefault&&s.preventDefault(),!l.disabled&&!l.loading&&a("click")};return(s,m)=>(e.openBlock(),e.createElementBlock("button",{type:l.type,onClick:c,class:e.normalizeClass(["rounded-corner transition-all duration-200 disabled:opacity-50 disabled:cursor-not-allowed flex items-center justify-center gap-2",[o[l.variant],i[l.size],l.fullWidth?"w-full":"",l.iconSrc&&!l.label?"px-2 py-2":"",t.customClass]]),disabled:l.disabled||l.loading},[t.loading?(e.openBlock(),e.createElementBlock("span",ot)):e.createCommentVNode("",!0),l.iconSrc&&!l.iconRight?(e.openBlock(),e.createElementBlock("img",{key:1,src:l.iconSrc,alt:l.iconAlt||l.label,class:"w-4 h-4"},null,8,nt)):e.createCommentVNode("",!0),l.label?(e.openBlock(),e.createElementBlock("span",it,e.toDisplayString(l.label),1)):e.createCommentVNode("",!0),l.iconSrc&&l.iconRight?(e.openBlock(),e.createElementBlock("img",{key:3,src:l.iconSrc,alt:l.iconAlt||l.label,class:"w-4 h-4"},null,8,rt)):e.createCommentVNode("",!0)],10,at))}}),A=(t,n)=>{const l=t.__vccOpts||t;for(const[a,o]of n)l[a]=o;return l},ee=A(st,[["__scopeId","data-v-2eaf6e27"]]),ct={class:"text-base font-semibold m-0 text-primary dark:text-primary-dark"},te=A(e.defineComponent({__name:"ConfigSection",props:{title:{},icon:{default:""},customClass:{default:()=>({})}},setup(t){return(n,l)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["flex flex-col gap-4 p-4 background rounded-corner",t.customClass])},[e.createElementVNode("h3",ct,e.toDisplayString(t.icon?`${t.icon} ${t.title}`:t.title),1),e.renderSlot(n.$slots,"default",{},void 0,!0)],2))}}),[["__scopeId","data-v-45bd4eab"]]),dt={class:"flex items-center gap-3 flex-1 min-w-0"},mt=["src","alt"],ft={class:"min-w-0"},ut={class:"font-semibold truncate"},bt={key:0,class:"text-xs text-gray-400 truncate"},pt={key:1,class:"text-xs text-gray-400 truncate"},kt={key:2,class:"text-xs text-gray-400 flex gap-2 mt-1"},gt={key:1,class:"w-2 h-2 rounded-full bg-green-500"},le=e.defineComponent({__name:"DeviceCard",props:{icon:{},title:{},subtitle:{default:""},metadata:{default:""},extraInfo:{default:()=>[]},isConnected:{type:Boolean,default:!1},showActionButton:{type:Boolean,default:!0},actionLabel:{default:"Conectar"},showStatusIndicator:{type:Boolean,default:!1},customClass:{default:""},clickable:{type:Boolean,default:!1}},emits:["action","click"],setup(t,{emit:n}){const l=n,a=()=>{l("action")},o=()=>{l("click")};return(i,c)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["flex items-center justify-between background rounded-vsk px-6 py-3 mb-4",[{"border-l-4 border-green-500":t.isConnected},t.customClass]]),onClick:o},[e.createElementVNode("div",dt,[e.createElementVNode("img",{src:t.icon,alt:t.title,class:"h-7 w-7 shrink-0"},null,8,mt),e.createElementVNode("div",ft,[e.createElementVNode("div",ut,e.toDisplayString(t.title),1),t.subtitle?(e.openBlock(),e.createElementBlock("div",bt,e.toDisplayString(t.subtitle),1)):e.createCommentVNode("",!0),t.metadata?(e.openBlock(),e.createElementBlock("div",pt,e.toDisplayString(t.metadata),1)):e.createCommentVNode("",!0),t.extraInfo&&t.extraInfo.length>0?(e.openBlock(),e.createElementBlock("div",kt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.extraInfo,(s,m)=>(e.openBlock(),e.createElementBlock("span",{key:m},e.toDisplayString(s),1))),128))])):e.createCommentVNode("",!0)])]),t.showActionButton?(e.openBlock(),e.createElementBlock("button",{key:0,class:"bg-vsk-primary rounded-vsk px-4 py-2 text-sm font-semibold cursor-pointer hover:opacity-70",onClick:e.withModifiers(a,["stop"])},e.toDisplayString(t.actionLabel),1)):e.createCommentVNode("",!0),t.showStatusIndicator&&t.isConnected?(e.openBlock(),e.createElementBlock("div",gt)):e.createCommentVNode("",!0)],2))}}),yt=["for"],ae=A(e.defineComponent({__name:"FormGroup",props:{label:{},htmlFor:{default:""},customClass:{default:()=>({})},labelClass:{default:()=>({})}},setup(t){return(n,l)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["flex flex-col gap-2",t.customClass])},[t.label?(e.openBlock(),e.createElementBlock("label",{key:0,for:t.htmlFor,class:e.normalizeClass(["text-sm font-medium text-primary dark:text-primary-dark",t.labelClass])},e.toDisplayString(t.label),11,yt)):e.createCommentVNode("",!0),e.renderSlot(n.$slots,"default",{},void 0,!0)],2))}}),[["__scopeId","data-v-c0d9d9cb"]]),oe=A(e.defineComponent({__name:"ListCard",props:{clickable:{type:Boolean,default:!1},customClass:{default:()=>({})}},emits:["click"],setup(t,{emit:n}){const l=t,a=n,o=()=>{l.clickable&&a("click")};return(i,c)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["flex items-center justify-between background p-3 rounded-vsk border border-vsk-primary/70 transition-colors duration-200",{"hover:bg-vsk-primary/5 cursor-pointer":l.clickable},t.customClass]),onClick:o},[e.renderSlot(i.$slots,"default",{},void 0,!0)],2))}}),[["__scopeId","data-v-f86d47da"]]),ht={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"},Ct=["src","alt","title"],xt={key:1,class:"w-8 h-8 flex items-center justify-center"},Bt=["src","alt"],wt=["min","max","value"],ne=e.defineComponent({__name:"SliderControl",props:{icon:{},alt:{default:""},tooltip:{default:""},modelValue:{},min:{default:0},max:{default:100},showButton:{type:Boolean,default:!1},iconClass:{default:()=>({})},getPercentageClass:{type:Function,default:()=>""}},emits:["update:modelValue","buttonClick"],setup(t,{emit:n}){const l=t,a=n,o=e.computed(()=>{if(l.max<=l.min)return 0;const m=l.max-l.min,u=l.modelValue-l.min;return Math.round(u/m*100)}),i=e.computed(()=>l.getPercentageClass?l.getPercentageClass(o.value):""),c=m=>{const u=m.target;a("update:modelValue",Number(u.value))},s=()=>{a("buttonClick")};return(m,u)=>(e.openBlock(),e.createElementBlock("div",ht,[t.showButton?(e.openBlock(),e.createElementBlock("button",{key:0,onClick:s,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"},[e.createElementVNode("img",{src:t.icon,alt:t.alt,title:t.tooltip,class:e.normalizeClass(["w-6 h-6 transition-all duration-200",t.iconClass])},null,10,Ct)])):(e.openBlock(),e.createElementBlock("div",xt,[e.createElementVNode("img",{src:t.icon,alt:t.alt,class:"w-6 h-6 transition-all duration-200"},null,8,Bt)])),e.createElementVNode("input",{type:"range",min:t.min,max:t.max,value:t.modelValue,onInput:c,class:"flex-1 transition-all duration-200 hover:scale-105"},null,40,wt),e.createElementVNode("span",{class:e.normalizeClass(["w-12 text-right transition-all duration-200 font-medium",i.value])},e.toDisplayString(o.value)+"% ",3)]))}}),$t=["disabled"],ie=e.defineComponent({__name:"SwitchToggle",props:{isOn:{type:Boolean},disabled:{type:Boolean,default:!1},size:{default:"small"},activeClass:{default:"bg-primary dark:bg-primary-dark"},inactiveClass:{default:"background"},customClass:{default:""}},emits:["toggle"],setup(t,{emit:n}){const l=t,a=n,o=()=>{a("toggle",!l.isOn)};return(i,c)=>(e.openBlock(),e.createElementBlock("button",{type:"button",onClick:o,disabled:t.disabled,class:e.normalizeClass(["relative inline-flex items-center rounded-full transition-colors",t.size==="small"?"h-6 w-11":"h-7 w-12",t.isOn?t.activeClass:t.inactiveClass,t.disabled?"opacity-50 cursor-not-allowed":"cursor-pointer",t.customClass])},[e.createElementVNode("span",{class:e.normalizeClass(["inline-block transform rounded-full bg-white shadow transition-transform",t.size==="small"?"h-4 w-4":"h-6 w-6",t.isOn?t.size==="small"?"translate-x-6":"translate-x-5":"translate-x-1"])},null,2)],10,$t))}}),Et=["disabled"],zt=["src","alt","title"],re=e.defineComponent({__name:"ToggleControl",props:{icon:{},alt:{default:""},tooltip:{default:""},isActive:{type:Boolean,default:!1},isLoading:{type:Boolean,default:!1},iconClass:{default:()=>({})},customClass:{default:()=>({})}},emits:["click"],setup(t,{emit:n}){const l=n,a=()=>{l("click")};return(o,i)=>(e.openBlock(),e.createElementBlock("button",{onClick:a,class:e.normalizeClass(["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",{"animate-pulse":t.isLoading,"ring-2 ring-primary dark:ring-primary-dark":t.isActive,"opacity-60":!t.isActive,...t.customClass}]),disabled:t.isLoading},[e.createElementVNode("img",{src:t.icon,alt:t.alt,title:t.tooltip,class:e.normalizeClass(["m-auto w-12.5 h-12.5 transition-all duration-300 group-hover:scale-110 relative z-10",{"animate-spin":t.isLoading,"filter brightness-75":!t.isActive,"drop-shadow-lg":t.isActive,...t.iconClass}])},null,10,zt)],10,Et))}}),Vt=["title"],St=["src","alt"],Nt={key:0,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"},se=e.defineComponent({__name:"TrayIconButton",props:{icon:{},alt:{default:""},tooltip:{default:""},badge:{default:null},iconClass:{default:()=>({})},customClass:{default:""},tooltipClass:{default:""},showCustomTooltip:{type:Boolean,default:!1},customTooltipText:{default:""}},emits:["click"],setup(t,{emit:n}){const l=n,a=e.ref(!1),o=()=>{l("click")};return(i,c)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["p-1 rounded-corner relative hover:bg-primary dark:hover:bg-primary-dark group transition-all duration-300",t.customClass]),title:t.tooltip,onClick:o,onMouseenter:c[0]||(c[0]=s=>a.value=!0),onMouseleave:c[1]||(c[1]=s=>a.value=!1)},[e.createElementVNode("img",{src:t.icon,alt:t.alt,class:e.normalizeClass(["m-auto h-5.5 w-auto transition-all duration-300",t.iconClass])},null,10,St),t.badge!==null&&t.badge>0?(e.openBlock(),e.createElementBlock("div",Nt,e.toDisplayString(t.badge),1)):e.createCommentVNode("",!0),t.showCustomTooltip&&t.customTooltipText?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["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",[t.tooltipClass,{"opacity-0 -translate-y-2":!a.value,"opacity-100 translate-y-0":a.value}]])},e.toDisplayString(t.customTooltipText),3)):e.createCommentVNode("",!0),e.renderSlot(i.$slots,"default")],42,Vt))}}),Lt=[U,I,T,q,B,J,j,O,v,R,_,ee,te,le,ae,oe,ne,ie,re,se],Dt={install(t){Lt.forEach(n=>{t.component(n.name,n)})}};d.ActionButton=ee,d.AppBar=j,d.BarSearch=_,d.CLAVE_DE_LA_BARRA=D,d.ConfigSection=te,d.DeviceCard=le,d.FormGroup=ae,d.ListCard=oe,d.POSICIONES=G,d.SelectField=q,d.SideBar=U,d.SideButton=I,d.SideGroup=T,d.SliderControl=ne,d.SwitchToggle=ie,d.TabBar=v,d.TabItem=R,d.ThemeIcon=B,d.ToggleControl=re,d.TrayIconButton=se,d.WindowControls=O,d.WindowFrame=J,d.default=Dt,d.esPosicion=X,d.orientacionDe=M,d.posicionDe=Y,d.usarLaBarra=N,d.usarLaPosicionDeLaBarra=H,Object.defineProperties(d,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
1
+ (function(f,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("@tauri-apps/api/event"),require("@vasakgroup/plugin-vicons"),require("@tauri-apps/api/window")):typeof define=="function"&&define.amd?define(["exports","vue","@tauri-apps/api/event","@vasakgroup/plugin-vicons","@tauri-apps/api/window"],e):(f=typeof globalThis<"u"?globalThis:f||self,e(f.VueLibVasak={},f.Vue,f.TauriEvent,f.VasakVicons,f.TauriWindow))})(this,(function(f,e,Ce,q,Be){"use strict";function xe(t,a){const o=e.ref("");let n=null,l=!1,r=0;async function s(){const i=++r,m=t.value;if(!m){o.value="";return}const p=a.value==="symbol"?await q.getSymbolSource(m):await q.getIconSource(m);i===r&&(o.value=p)}return e.onMounted(async()=>{const i=await Ce.listen("vicons:theme-changed",s);if(l){i();return}n=i,await s()}),e.onUnmounted(()=>{l=!0,n?.()}),e.watch(t,s),o}const Ee=["src","alt"],L=e.defineComponent({__name:"ThemeIcon",props:{name:{},type:{default:"icon"},size:{default:18},alt:{default:""}},setup(t){const a=t,o=xe(e.toRef(a,"name"),e.toRef(a,"type")),n=e.computed(()=>`${a.size}px`);return(l,r)=>e.unref(o)?(e.openBlock(),e.createElementBlock("img",{key:0,src:e.unref(o),alt:t.alt,style:e.normalizeStyle({width:n.value,height:n.value}),class:"shrink-0 object-contain"},null,12,Ee)):(e.openBlock(),e.createElementBlock("span",{key:1,style:e.normalizeStyle({width:n.value,height:n.value}),class:"shrink-0"},null,4))}}),$e={class:"flex flex-col gap-2"},ze=["aria-expanded"],Ve={key:1,class:"flex flex-col gap-1"},I=e.defineComponent({__name:"SideGroup",props:{title:{},collapsed:{type:Boolean,default:!1},defaultOpen:{type:Boolean,default:!0}},setup(t){const a=t,o=e.ref(a.defaultOpen);return e.watch(()=>a.collapsed,n=>{n&&(o.value=!0)}),(n,l)=>(e.openBlock(),e.createElementBlock("section",$e,[t.collapsed?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",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","aria-expanded":o.value,onClick:l[0]||(l[0]=r=>o.value=!o.value)},[e.createElementVNode("span",null,e.toDisplayString(t.title),1),e.createVNode(L,{name:"pan-down-symbolic",type:"symbol",size:12,class:e.normalizeClass(["transition-transform duration-200",o.value?"":"-rotate-90"])},null,8,["class"])],8,ze)),o.value||t.collapsed?(e.openBlock(),e.createElementBlock("div",Ve,[e.renderSlot(n.$slots,"default")])):e.createCommentVNode("",!0)]))}}),Le=["title","aria-label","disabled","aria-current"],De={key:1},Se={key:0,class:"min-w-0 flex-1 truncate font-medium"},Ne={key:1,class:"rounded-corner bg-ui-surface px-2 py-0.5 font-semibold text-tx-muted text-xs"},O=e.defineComponent({__name:"SideButton",props:{label:{},icon:{default:""},active:{type:Boolean,default:!1},collapsed:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},badge:{default:""}},emits:["click"],setup(t){return(a,o)=>(e.openBlock(),e.createElementBlock("button",{type:"button",title:t.collapsed?t.label:void 0,"aria-label":t.collapsed?t.label:void 0,disabled:t.disabled,"aria-current":t.active?"page":void 0,class:e.normalizeClass(["group relative flex w-full items-center gap-3 rounded-corner border px-3 py-2 text-left text-sm transition-all duration-200",[t.active?"border-secondary bg-primary/15 text-tx-main shadow-sm":"border-transparent bg-transparent hover:border-ui-border hover:bg-ui-surface/70",t.disabled?"cursor-not-allowed opacity-60":"cursor-pointer",t.collapsed?"justify-center px-2":""]]),onClick:o[0]||(o[0]=n=>a.$emit("click"))},[e.createElementVNode("span",{class:e.normalizeClass(["flex h-8 w-8 shrink-0 items-center justify-center rounded-corner font-semibold text-xs uppercase tracking-wide",t.active?"border-secondary bg-primary/20":""]),"aria-hidden":"true"},[t.icon?(e.openBlock(),e.createBlock(L,{key:0,name:t.icon,size:20},null,8,["name"])):(e.openBlock(),e.createElementBlock("span",De,e.toDisplayString(t.label.charAt(0).toUpperCase()),1))],2),t.collapsed?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("span",Se,e.toDisplayString(t.label),1)),!t.collapsed&&t.badge!==""?(e.openBlock(),e.createElementBlock("span",Ne,e.toDisplayString(t.badge),1)):e.createCommentVNode("",!0)],10,Le))}}),Me={key:0,class:"flex flex-col gap-2 border-ui-border border-b p-2"},Ae={class:"flex items-center gap-2"},Te=["aria-label","aria-expanded"],Ie={key:0,class:"min-w-0 flex-1"},Oe={key:0,class:"truncate font-semibold text-sm"},Pe={key:1,class:"truncate text-tx-muted text-xs"},je={key:0},Fe={key:1,class:"flex border-ui-border border-b p-2"},Ke=["aria-label","aria-expanded"],Re={class:"flex min-h-0 flex-1 flex-col gap-3 overflow-y-auto p-2"},U="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",W=767,H=e.defineComponent({__name:"SideBar",props:{title:{default:""},subtitle:{default:""},categories:{default:()=>[]},modelValue:{default:""},collapsed:{type:Boolean,default:void 0},collapseLabel:{default:"Collapse"},expandLabel:{default:"Expand"}},emits:["update:modelValue","update:collapsed","change"],setup(t,{expose:a,emit:o}){const n=t,l=o,r=e.ref(n.collapsed??!1),s=e.ref(!1);let i=null,m=null;const p=e.computed(()=>s.value||r.value),y=e.computed(()=>!!(n.title||n.subtitle));e.computed(()=>n.categories.length>0);function E(){return document.documentElement?.clientWidth||window.innerWidth}function B(){s.value=E()<=W}function V(){r.value=!r.value,l("update:collapsed",r.value)}function k(g){l("update:modelValue",g),l("change",g)}return e.watch(()=>n.collapsed,g=>{g!==void 0&&(r.value=g)}),e.onMounted(()=>{i=window.matchMedia(`(max-width: ${W}px)`),B(),i.addEventListener("change",B),window.addEventListener("resize",B),typeof ResizeObserver<"u"&&document.documentElement&&(m=new ResizeObserver(B),m.observe(document.documentElement))}),e.onBeforeUnmount(()=>{i?.removeEventListener("change",B),window.removeEventListener("resize",B),m?.disconnect(),m=null}),a({collapsed:p}),(g,u)=>(e.openBlock(),e.createElementBlock("aside",{class:e.normalizeClass(["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]",p.value?"md:w-[84px]":"md:w-72"]])},[y.value||g.$slots.header?(e.openBlock(),e.createElementBlock("header",Me,[e.createElementVNode("div",Ae,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(U),"aria-label":p.value?t.expandLabel:t.collapseLabel,"aria-expanded":!p.value,onClick:V},[e.createVNode(L,{name:p.value?"pan-end-symbolic":"pan-start-symbolic",type:"symbol",size:16},null,8,["name"])],8,Te),y.value&&!p.value?(e.openBlock(),e.createElementBlock("div",Ie,[t.title?(e.openBlock(),e.createElementBlock("p",Oe,e.toDisplayString(t.title),1)):e.createCommentVNode("",!0),t.subtitle?(e.openBlock(),e.createElementBlock("p",Pe,e.toDisplayString(t.subtitle),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)]),g.$slots.header&&!p.value?(e.openBlock(),e.createElementBlock("div",je,[e.renderSlot(g.$slots,"header",{collapsed:p.value})])):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("div",Fe,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(U),"aria-label":p.value?t.expandLabel:t.collapseLabel,"aria-expanded":!p.value,onClick:V},[e.createVNode(L,{name:p.value?"pan-end-symbolic":"pan-start-symbolic",type:"symbol",size:16},null,8,["name"])],8,Ke)])),e.createElementVNode("div",Re,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.categories,h=>(e.openBlock(),e.createBlock(I,{key:h.id,title:h.title,collapsed:p.value},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.items,c=>(e.openBlock(),e.createBlock(O,{key:c.id,label:c.label,icon:c.icon,badge:c.badge,disabled:c.disabled,collapsed:p.value,active:t.modelValue===c.id,onClick:b=>k(c.id)},null,8,["label","icon","badge","disabled","collapsed","active","onClick"]))),128))]),_:2},1032,["title","collapsed"]))),128)),e.renderSlot(g.$slots,"default",{collapsed:p.value})])],2))}}),qe={class:"flex min-w-0 flex-col gap-1"},Ue=["for"],We={class:"relative flex min-w-0 items-center"},He=["id"],G=e.defineComponent({inheritAttrs:!1,__name:"SelectField",props:e.mergeModels({label:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(t){const a=t,o=e.useAttrs(),n=e.useId(),l=e.computed(()=>o.id??n),[r,s]=e.useModel(t,"modelValue",{set(i){return s.number?Number(i):i}});return(i,m)=>(e.openBlock(),e.createElementBlock("div",qe,[a.label?(e.openBlock(),e.createElementBlock("label",{key:0,for:l.value,class:"text-tx-muted text-xs"},e.toDisplayString(a.label),9,Ue)):e.createCommentVNode("",!0),e.createElementVNode("div",We,[e.withDirectives(e.createElementVNode("select",e.mergeProps({id:l.value,"onUpdate:modelValue":m[0]||(m[0]=p=>e.isRef(r)?r.value=p:null),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"},e.unref(o)),[e.renderSlot(i.$slots,"default")],16,He),[[e.vModelSelect,e.unref(r)]]),e.createVNode(L,{name:"pan-down-symbolic",type:"symbol",size:14,class:"pointer-events-none absolute right-2"})])]))}}),M=Symbol("barra de vasak");function A(t){return t==="left"||t==="right"?"vertical":"horizontal"}const X=["top","bottom","left","right"];function Y(t){return typeof t=="string"&&X.includes(t)}function D(){const t=e.inject(M,null);if(t)return t;const a=e.ref("top");return{posicion:a,orientacion:e.computed(()=>A(a.value)),vertical:e.computed(()=>A(a.value)==="vertical")}}const Ge="window",Xe="barPosition";function J(t){const o=t?.[Ge]?.[Xe];return Y(o)?o:null}function Q(t="top"){const a=e.ref(t);let o=null,n=!1;async function l(){try{const{readConfig:r}=await import("@vasakgroup/plugin-config-manager"),s=await r();a.value=J(s)??t}catch{}}return e.onMounted(async()=>{await l();try{const{listen:r}=await import("@tauri-apps/api/event"),s=await r("config-changed",()=>{l()});if(n){s();return}o=s}catch{}}),e.onBeforeUnmount(()=>{n=!0,o?.(),o=null}),a}const Ye=["title","aria-label"],Je=["title","aria-label"],Qe=["title","aria-label"],P="flex items-center justify-center rounded-corner border border-ui-border bg-ui-bg/80 p-1 transition-colors",j=e.defineComponent({__name:"WindowControls",props:{minimizeLabel:{default:"Minimize"},maximizeLabel:{default:"Maximize"},closeLabel:{default:"Close"}},setup(t){const{vertical:a}=D();function o(){return Be.getCurrentWindow()}return(n,l)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["flex shrink-0 gap-1",e.unref(a)?"flex-col":""]),"data-tauri-drag-region":""},[e.createElementVNode("button",{type:"button",class:e.normalizeClass([P,"hover:bg-status-success"]),title:t.minimizeLabel,"aria-label":t.minimizeLabel,onClick:l[0]||(l[0]=r=>o().minimize())},[e.createVNode(L,{name:"window-minimize",size:24})],10,Ye),e.createElementVNode("button",{type:"button",class:e.normalizeClass([P,"hover:bg-status-warning"]),title:t.maximizeLabel,"aria-label":t.maximizeLabel,onClick:l[1]||(l[1]=r=>o().toggleMaximize())},[e.createVNode(L,{name:"window-maximize",size:24})],10,Je),e.createElementVNode("button",{type:"button",class:e.normalizeClass([P,"hover:bg-status-error"]),title:t.closeLabel,"aria-label":t.closeLabel,onClick:l[2]||(l[2]=r=>o().close())},[e.createVNode(L,{name:"window-close",size:24})],10,Qe)],2))}}),Ze={key:0,class:"flex shrink-0 items-center","data-tauri-drag-region":""},ve={key:1,class:"min-w-0 shrink truncate text-sm","data-tauri-drag-region":""},F=e.defineComponent({__name:"AppBar",props:{position:{default:null},title:{default:""},minimizeLabel:{default:"Minimize"},maximizeLabel:{default:"Maximize"},closeLabel:{default:"Close"},hideControls:{type:Boolean,default:!1}},setup(t){const a=t,o=D(),n=e.computed(()=>a.position??o.posicion.value),l=e.computed(()=>n.value==="left"||n.value==="right");return e.provide(M,{posicion:n,orientacion:e.computed(()=>l.value?"vertical":"horizontal"),vertical:l}),(r,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["flex shrink-0 items-center gap-2 p-1 font-title",l.value?"h-full flex-col":"w-full"]),"data-tauri-drag-region":""},[r.$slots.identidad?(e.openBlock(),e.createElementBlock("div",Ze,[e.renderSlot(r.$slots,"identidad")])):e.createCommentVNode("",!0),(r.$slots.titulo||t.title)&&!l.value?(e.openBlock(),e.createElementBlock("p",ve,[e.renderSlot(r.$slots,"titulo",{},()=>[e.createTextVNode(e.toDisplayString(t.title),1)])])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["flex min-h-0 min-w-0 flex-1 items-center gap-2 overflow-auto",l.value?"flex-col":""]),"data-tauri-drag-region":""},[e.renderSlot(r.$slots,"default")],2),r.$slots.acciones?(e.openBlock(),e.createElementBlock("div",{key:2,class:e.normalizeClass(["flex shrink-0 items-center gap-1",l.value?"flex-col":""])},[e.renderSlot(r.$slots,"acciones")],2)):e.createCommentVNode("",!0),t.hideControls?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(j,{key:3,"minimize-label":t.minimizeLabel,"maximize-label":t.maximizeLabel,"close-label":t.closeLabel},null,8,["minimize-label","maximize-label","close-label"]))],2))}}),_e={class:"flex min-h-0 min-w-0 flex-1"},Z=e.defineComponent({__name:"WindowFrame",props:{position:{default:null},title:{default:""},minimizeLabel:{default:"Minimize"},maximizeLabel:{default:"Maximize"},closeLabel:{default:"Close"},hideControls:{type:Boolean,default:!1},hideBar:{type:Boolean,default:!1}},setup(t){const a=t,o=Q(),n=e.computed(()=>a.position??o.value),l=e.computed(()=>A(n.value)),r=e.computed(()=>l.value==="vertical");e.provide(M,{posicion:n,orientacion:l,vertical:r});const s={top:"flex-col",bottom:"flex-col-reverse",left:"flex-row",right:"flex-row-reverse"};return(i,m)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["flex h-screen w-screen overflow-hidden rounded-corner-window border border-ui-border bg-ui-bg/80",s[n.value]])},[t.hideBar?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(F,{key:0,position:n.value,title:t.title,"minimize-label":t.minimizeLabel,"maximize-label":t.maximizeLabel,"close-label":t.closeLabel,"hide-controls":t.hideControls},e.createSlots({default:e.withCtx(()=>[e.renderSlot(i.$slots,"barra")]),_:2},[i.$slots.identidad?{name:"identidad",fn:e.withCtx(()=>[e.renderSlot(i.$slots,"identidad")]),key:"0"}:void 0,i.$slots.titulo?{name:"titulo",fn:e.withCtx(()=>[e.renderSlot(i.$slots,"titulo")]),key:"1"}:void 0,i.$slots.acciones?{name:"acciones",fn:e.withCtx(()=>[e.renderSlot(i.$slots,"acciones")]),key:"2"}:void 0]),1032,["position","title","minimize-label","maximize-label","close-label","hide-controls"])),e.createElementVNode("div",_e,[e.renderSlot(i.$slots,"default")])],2))}}),et=["aria-selected","title","aria-label","tabindex"],tt={key:1,"aria-hidden":"true"},ot={key:2,class:"min-w-0 flex-1 truncate"},nt=["title","aria-label"],at={class:"whitespace-nowrap"},lt={key:0,class:"size-2 shrink-0 rounded-full bg-current","aria-hidden":"true"},rt=["title","aria-label"],it=500,v=8,_=6,K=e.defineComponent({__name:"TabItem",props:{tab:{},active:{type:Boolean,default:!1},closeLabel:{default:"Close"},dirtyLabel:{default:"Unsaved changes"},tabindex:{default:0}},emits:["select","close","menu","mover","navegar"],setup(t,{emit:a}){const o=t,n=a,{vertical:l,posicion:r}=D(),s=e.ref(null),i=e.ref(null),m=e.ref(!1),p=e.ref(!1),y=e.ref(!1),E=e.ref({top:0,left:0,right:0});let B=null,V=null;const k=e.computed(()=>o.tab.closable!==!1),g=e.computed(()=>o.tab.tooltip??o.tab.label),u=e.computed(()=>o.tab.dirty?`${o.tab.label} · ${o.dirtyLabel}`:o.tab.label),h=e.computed(()=>o.tab.label.trim().charAt(0).toUpperCase()),c=e.computed(()=>m.value||y.value),b=e.computed(()=>!!o.tab.dirty&&!(c.value&&k.value)),w=e.computed(()=>k.value&&(c.value||o.active||!o.tab.dirty)),C=e.computed(()=>l.value&&(m.value||p.value||y.value)),z=e.computed(()=>{const x={position:"fixed",top:`${E.value.top}px`,zIndex:50};return r.value==="right"?{...x,right:`${E.value.right+_}px`}:{...x,left:`${E.value.left+_}px`}});function we(){const x=s.value;if(!x)return;const d=x.getBoundingClientRect();E.value={top:d.top,left:d.right,right:window.innerWidth-d.left}}function Jt(x){const d=x.relatedTarget;d&&i.value?.contains(d)||(y.value=!1)}function Qt(){m.value=!0,we()}function Zt(){p.value=!0,we()}function N(){B!==null&&clearTimeout(B),B=null,V=null}function vt(x){x.button===0&&(V={x:x.clientX,y:x.clientY},B=setTimeout(()=>{V&&n("menu",V),N()},it))}function _t(x){if(!V)return;(Math.abs(x.clientX-V.x)>v||Math.abs(x.clientY-V.y)>v)&&N()}function eo(x){x.button===1&&k.value&&(x.preventDefault(),n("close"))}function to(x){x.preventDefault(),n("menu",{x:x.clientX,y:x.clientY})}return e.onBeforeUnmount(N),(x,d)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"raiz",ref:s,class:e.normalizeClass(["group relative flex shrink-0 cursor-pointer items-center gap-2 rounded-corner border border-ui-border transition-colors",[t.active?"bg-primary font-bold text-tx-on-primary":"bg-ui-bg/80 hover:bg-ui-surface/70",e.unref(l)?"size-8 justify-center p-0 text-sm":"w-34 max-w-34 px-3 py-1 text-sm"]]),role:"tab","aria-selected":t.active,title:g.value,"aria-label":u.value,tabindex:t.tabindex,onClick:d[5]||(d[5]=e.withModifiers($=>n("select"),["stop"])),onKeydown:[d[6]||(d[6]=e.withKeys(e.withModifiers($=>n("select"),["stop"]),["enter"])),d[7]||(d[7]=e.withKeys(e.withModifiers($=>n("select"),["prevent","stop"]),["space"])),d[8]||(d[8]=e.withKeys(e.withModifiers($=>n("navegar","anterior"),["prevent","stop"]),["left"])),d[9]||(d[9]=e.withKeys(e.withModifiers($=>n("navegar","anterior"),["prevent","stop"]),["up"])),d[10]||(d[10]=e.withKeys(e.withModifiers($=>n("navegar","siguiente"),["prevent","stop"]),["right"])),d[11]||(d[11]=e.withKeys(e.withModifiers($=>n("navegar","siguiente"),["prevent","stop"]),["down"])),d[12]||(d[12]=e.withKeys(e.withModifiers($=>n("navegar","primera"),["prevent","stop"]),["home"])),d[13]||(d[13]=e.withKeys(e.withModifiers($=>n("navegar","ultima"),["prevent","stop"]),["end"])),d[14]||(d[14]=e.withKeys(e.withModifiers($=>n("mover",-1),["alt","prevent","stop"]),["left"])),d[15]||(d[15]=e.withKeys(e.withModifiers($=>n("mover",-1),["alt","prevent","stop"]),["up"])),d[16]||(d[16]=e.withKeys(e.withModifiers($=>n("mover",1),["alt","prevent","stop"]),["right"])),d[17]||(d[17]=e.withKeys(e.withModifiers($=>n("mover",1),["alt","prevent","stop"]),["down"])),d[18]||(d[18]=e.withKeys(e.withModifiers($=>k.value&&n("close"),["prevent","stop"]),["delete"]))],onAuxclick:e.withModifiers(eo,["stop"]),onContextmenu:to,onPointerdown:vt,onPointermove:_t,onPointerup:N,onPointerleave:N,onMouseenter:Qt,onMouseleave:d[19]||(d[19]=$=>m.value=!1),onFocus:Zt,onBlur:d[20]||(d[20]=$=>p.value=!1)},[t.tab.icon?(e.openBlock(),e.createBlock(L,{key:0,name:t.tab.icon,size:16,class:"shrink-0"},null,8,["name"])):e.unref(l)?(e.openBlock(),e.createElementBlock("span",tt,e.toDisplayString(h.value),1)):e.createCommentVNode("",!0),e.unref(l)?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("span",ot,e.toDisplayString(t.tab.label),1)),b.value?(e.openBlock(),e.createElementBlock("span",{key:3,class:e.normalizeClass(["size-2 shrink-0 rounded-full bg-current",e.unref(l)?"absolute right-0.5 top-0.5":""]),"aria-hidden":"true"},null,2)):w.value&&!e.unref(l)?(e.openBlock(),e.createElementBlock("button",{key:4,type:"button",class:"flex size-4 shrink-0 items-center justify-center rounded-corner-sm hover:bg-ui-surface",title:t.closeLabel,"aria-label":`${t.closeLabel}: ${u.value}`,onClick:d[0]||(d[0]=e.withModifiers($=>n("close"),["stop"]))},[e.createVNode(L,{name:"gtk-close",type:"symbol",size:12})],8,nt)):e.createCommentVNode("",!0),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[e.createVNode(e.Transition,{"enter-active-class":"transition duration-150 ease-out","enter-from-class":"opacity-0 scale-95","leave-active-class":"transition duration-100 ease-in","leave-to-class":"opacity-0 scale-95"},{default:e.withCtx(()=>[C.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["flex items-center gap-2 rounded-corner border border-ui-border bg-ui-surface/95 px-3 py-1 text-sm shadow-lg",t.active?"font-bold":""]),ref_key:"desplegadoRef",ref:i,style:e.normalizeStyle(z.value),onMouseenter:d[2]||(d[2]=$=>y.value=!0),onMouseleave:d[3]||(d[3]=$=>y.value=!1),onFocusin:d[4]||(d[4]=$=>y.value=!0),onFocusout:Jt},[e.createElementVNode("span",at,e.toDisplayString(t.tab.label),1),t.tab.dirty?(e.openBlock(),e.createElementBlock("span",lt)):e.createCommentVNode("",!0),k.value?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",class:"flex size-4 shrink-0 items-center justify-center rounded-corner-sm hover:bg-ui-surface",title:t.closeLabel,"aria-label":`${t.closeLabel}: ${u.value}`,onClick:d[1]||(d[1]=e.withModifiers($=>n("close"),["stop"]))},[e.createVNode(L,{name:"gtk-close",type:"symbol",size:12})],8,rt)):e.createCommentVNode("",!0)],38)):e.createCommentVNode("",!0)]),_:1})]))],42,et))}}),st=["aria-orientation"],ct=["draggable","onDragstart","onDragover","onDrop"],dt=["title","aria-label"],ee=e.defineComponent({__name:"TabBar",props:{tabs:{},modelValue:{default:""},newLabel:{default:""},closeLabel:{default:"Close"},dirtyLabel:{default:"Unsaved changes"},fixedOrder:{type:Boolean,default:!1}},emits:["update:modelValue","select","close","new","reorder","menu"],setup(t,{emit:a}){const o=t,n=a,{vertical:l}=D(),r=e.ref(null),s=e.ref(0),i=e.ref(null),m=e.ref(null);function p(c){n("update:modelValue",c),n("select",c)}async function y(c,b){const w=o.tabs.length-1;if(w<0)return;const C=b==="primera"?0:b==="ultima"?w:b==="anterior"?(c-1+o.tabs.length)%o.tabs.length:(c+1)%o.tabs.length;s.value=C,await e.nextTick(),r.value?.querySelectorAll('[role="tab"]')?.[C]?.focus()}function E(c,b){if(o.fixedOrder)return;const w=c+b;if(w<0||w>=o.tabs.length)return;const C=[...o.tabs],[z]=C.splice(c,1);z&&(C.splice(w,0,z),s.value=w,n("reorder",C))}function B(c){const b=r.value;if(!b)return;const w=c.deltaY||c.deltaX||0,C=l.value?b.scrollTop:b.scrollLeft;l.value?b.scrollTop+=w:b.scrollLeft+=w,(l.value?b.scrollTop:b.scrollLeft)!==C&&c.preventDefault()}function V(c,b){o.fixedOrder||(i.value=c,b.dataTransfer?.setData("text/plain",String(c)),b.dataTransfer&&(b.dataTransfer.effectAllowed="move"))}function k(c,b){o.fixedOrder||i.value===null||(b.preventDefault(),m.value=c,b.dataTransfer&&(b.dataTransfer.dropEffect="move"))}function g(c){const b=i.value;if(u(),o.fixedOrder||b===null||b===c)return;const w=[...o.tabs],[C]=w.splice(b,1);C&&(w.splice(c,0,C),n("reorder",w))}function u(){i.value=null,m.value=null}const h=e.computed(()=>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");return(c,b)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["flex min-h-0 min-w-0 items-center gap-1",e.unref(l)?"w-full flex-col":"h-full"]),role:"tablist","aria-orientation":e.unref(l)?"vertical":"horizontal"},[e.createElementVNode("div",{ref_key:"carril",ref:r,class:e.normalizeClass(h.value),onWheel:B},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.tabs,(w,C)=>(e.openBlock(),e.createElementBlock("div",{key:w.id,class:e.normalizeClass(["transition-opacity",[i.value===C?"opacity-40":"",m.value===C&&i.value!==C?"ring-2 ring-secondary rounded-corner":""]]),draggable:!t.fixedOrder,onDragstart:z=>V(C,z),onDragover:z=>k(C,z),onDrop:e.withModifiers(z=>g(C),["prevent"]),onDragend:u},[e.createVNode(K,{tab:w,active:w.id===t.modelValue,"close-label":t.closeLabel,"dirty-label":t.dirtyLabel,tabindex:C===s.value?0:-1,onSelect:z=>p(w.id),onClose:z=>n("close",w.id),onMenu:z=>n("menu",{id:w.id,...z}),onNavegar:z=>y(C,z),onMover:z=>E(C,z)},null,8,["tab","active","close-label","dirty-label","tabindex","onSelect","onClose","onMenu","onNavegar","onMover"])],42,ct))),128))],34),t.newLabel?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",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",title:t.newLabel,"aria-label":t.newLabel,onClick:b[0]||(b[0]=w=>n("new"))},[e.createVNode(L,{name:"gtk-add",type:"symbol",size:14})],8,dt)):e.createCommentVNode("",!0)],10,st))}}),mt={class:"relative flex shrink-0 items-center"},ft=["title","aria-label","aria-expanded"],ut=["value","placeholder","aria-label"],te=e.defineComponent({__name:"BarSearch",props:{modelValue:{default:""},placeholder:{default:""},label:{default:"Search"},collapsed:{type:Boolean,default:!1}},emits:["update:modelValue","search","open","close"],setup(t,{emit:a}){const o=t,n=a,{vertical:l,posicion:r}=D(),s=e.ref(!1),i=e.ref(null),m=e.computed(()=>l.value||o.collapsed),p=e.computed(()=>!m.value||s.value),y=e.computed(()=>{if(!m.value)return"";const g="absolute z-40 w-64 rounded-corner border border-ui-border bg-ui-surface/95 p-1 shadow-lg";return r.value==="left"?`${g} left-full top-0 ml-1`:r.value==="right"?`${g} right-full top-0 mr-1`:r.value==="bottom"?`${g} bottom-full right-0 mb-1`:`${g} top-full right-0 mt-1`});async function E(){s.value=!0,n("open"),await e.nextTick(),i.value?.focus()}function B(){s.value&&(s.value=!1,n("close"))}function V(g){n("update:modelValue",g.target.value)}function k(){n("search",o.modelValue)}return(g,u)=>(e.openBlock(),e.createElementBlock("div",mt,[m.value?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"flex size-7 items-center justify-center rounded-corner border border-ui-border bg-ui-bg/80 hover:bg-ui-surface/70",title:t.label,"aria-label":t.label,"aria-expanded":s.value,onMousedown:u[0]||(u[0]=e.withModifiers(()=>{},["prevent"])),onClick:u[1]||(u[1]=h=>s.value?B():E())},[e.createVNode(L,{name:"system-search",type:"symbol",size:14})],40,ft)):e.createCommentVNode("",!0),p.value?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(y.value)},[e.createElementVNode("input",{ref_key:"campo",ref:i,type:"search",class:e.normalizeClass(["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"]),value:t.modelValue,placeholder:t.placeholder||t.label,"aria-label":t.label,onInput:V,onKeydown:[e.withKeys(k,["enter"]),e.withKeys(B,["esc"])],onBlur:B},null,42,ut)],2)):e.createCommentVNode("",!0)]))}}),pt=["type","disabled"],bt={key:0,class:"w-4 h-4 animate-spin rounded-full border-2 border-current border-t-transparent"},kt=["src","alt"],gt={key:2},ht=["src","alt"],yt=e.defineComponent({__name:"ActionButton",props:{label:{},disabled:{type:Boolean,default:!1},variant:{default:"primary"},loading:{type:Boolean,default:!1},customClass:{default:()=>({})},size:{default:"md"},fullWidth:{type:Boolean,default:!1},iconSrc:{default:""},iconAlt:{default:""},iconRight:{type:Boolean,default:!1},type:{default:"button"},stopPropagation:{type:Boolean,default:!1},preventDefault:{type:Boolean,default:!1}},emits:["click"],setup(t,{emit:a}){const o=t,n=a,l={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",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",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"},r={sm:"px-2 py-1 text-xs",md:"px-3 py-1 text-sm",lg:"px-4 py-2 text-base"},s=i=>{o.stopPropagation&&i.stopPropagation(),o.preventDefault&&i.preventDefault(),!o.disabled&&!o.loading&&n("click")};return(i,m)=>(e.openBlock(),e.createElementBlock("button",{type:o.type,onClick:s,class:e.normalizeClass(["rounded-corner transition-all duration-200 disabled:opacity-50 disabled:cursor-not-allowed flex items-center justify-center gap-2",[l[o.variant],r[o.size],o.fullWidth?"w-full":"",o.iconSrc&&!o.label?"px-2 py-2":"",t.customClass]]),disabled:o.disabled||o.loading},[t.loading?(e.openBlock(),e.createElementBlock("span",bt)):e.createCommentVNode("",!0),o.iconSrc&&!o.iconRight?(e.openBlock(),e.createElementBlock("img",{key:1,src:o.iconSrc,alt:o.iconAlt||o.label,class:"w-4 h-4"},null,8,kt)):e.createCommentVNode("",!0),o.label?(e.openBlock(),e.createElementBlock("span",gt,e.toDisplayString(o.label),1)):e.createCommentVNode("",!0),o.iconSrc&&o.iconRight?(e.openBlock(),e.createElementBlock("img",{key:3,src:o.iconSrc,alt:o.iconAlt||o.label,class:"w-4 h-4"},null,8,ht)):e.createCommentVNode("",!0)],10,pt))}}),T=(t,a)=>{const o=t.__vccOpts||t;for(const[n,l]of a)o[n]=l;return o},oe=T(yt,[["__scopeId","data-v-2eaf6e27"]]),wt={class:"text-base font-semibold m-0 text-primary dark:text-primary-dark"},ne=T(e.defineComponent({__name:"ConfigSection",props:{title:{},icon:{default:""},customClass:{default:()=>({})}},setup(t){return(a,o)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["flex flex-col gap-4 p-4 background rounded-corner",t.customClass])},[e.createElementVNode("h3",wt,e.toDisplayString(t.icon?`${t.icon} ${t.title}`:t.title),1),e.renderSlot(a.$slots,"default",{},void 0,!0)],2))}}),[["__scopeId","data-v-45bd4eab"]]),Ct={class:"flex items-center gap-3 flex-1 min-w-0"},Bt=["src","alt"],xt={class:"min-w-0"},Et={class:"font-semibold truncate"},$t={key:0,class:"text-xs text-gray-400 truncate"},zt={key:1,class:"text-xs text-gray-400 truncate"},Vt={key:2,class:"text-xs text-gray-400 flex gap-2 mt-1"},Lt={key:1,class:"w-2 h-2 rounded-full bg-green-500"},ae=e.defineComponent({__name:"DeviceCard",props:{icon:{},title:{},subtitle:{default:""},metadata:{default:""},extraInfo:{default:()=>[]},isConnected:{type:Boolean,default:!1},showActionButton:{type:Boolean,default:!0},actionLabel:{default:"Conectar"},showStatusIndicator:{type:Boolean,default:!1},customClass:{default:""},clickable:{type:Boolean,default:!1}},emits:["action","click"],setup(t,{emit:a}){const o=a,n=()=>{o("action")},l=()=>{o("click")};return(r,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["flex items-center justify-between background rounded-vsk px-6 py-3 mb-4",[{"border-l-4 border-green-500":t.isConnected},t.customClass]]),onClick:l},[e.createElementVNode("div",Ct,[e.createElementVNode("img",{src:t.icon,alt:t.title,class:"h-7 w-7 shrink-0"},null,8,Bt),e.createElementVNode("div",xt,[e.createElementVNode("div",Et,e.toDisplayString(t.title),1),t.subtitle?(e.openBlock(),e.createElementBlock("div",$t,e.toDisplayString(t.subtitle),1)):e.createCommentVNode("",!0),t.metadata?(e.openBlock(),e.createElementBlock("div",zt,e.toDisplayString(t.metadata),1)):e.createCommentVNode("",!0),t.extraInfo&&t.extraInfo.length>0?(e.openBlock(),e.createElementBlock("div",Vt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.extraInfo,(i,m)=>(e.openBlock(),e.createElementBlock("span",{key:m},e.toDisplayString(i),1))),128))])):e.createCommentVNode("",!0)])]),t.showActionButton?(e.openBlock(),e.createElementBlock("button",{key:0,class:"bg-vsk-primary rounded-vsk px-4 py-2 text-sm font-semibold cursor-pointer hover:opacity-70",onClick:e.withModifiers(n,["stop"])},e.toDisplayString(t.actionLabel),1)):e.createCommentVNode("",!0),t.showStatusIndicator&&t.isConnected?(e.openBlock(),e.createElementBlock("div",Lt)):e.createCommentVNode("",!0)],2))}}),R=Symbol("menú de vasak");function S(){const t=e.inject(R,null);if(t)return t;const a=e.ref(!1);return{abierto:a,idDelMenu:"vsk-menu-suelto",idDeLaEtiqueta:e.ref(null),ponerLaEtiqueta:()=>{},disparador:e.ref(null),ponerElDisparador:()=>{},focoAlAbrir:e.ref("ninguno"),abrir:()=>{a.value=!0},cerrar:()=>{a.value=!1},alternar:()=>{a.value=!a.value}}}let le=0;function re(){return le+=1,`vsk-menu-${le}`}const Dt={class:"relative inline-block"},ie=e.defineComponent({__name:"DropdownMenu",props:{open:{type:Boolean,default:void 0}},emits:["update:open"],setup(t,{emit:a}){const o=t,n=a,l=e.ref(!1),r=e.ref(null),s=e.ref(null),i=e.ref("ninguno"),m=re();let p=null;const y=e.computed({get:()=>o.open??l.value,set:k=>{o.open===void 0&&(l.value=k),n("update:open",k)}});e.watch(y,k=>{if(k){const g=document.activeElement;p=g instanceof HTMLElement?g:null}else i.value="ninguno"});function E(k="ninguno"){i.value=k,y.value=!0}function B(k={}){if(y.value=!1,!k.devolverElFoco)return;const g=p??r.value;g?.isConnected&&g.focus()}function V(k="ninguno"){if(y.value){B({devolverElFoco:!0});return}E(k)}return e.provide(R,{abierto:y,idDelMenu:m,idDeLaEtiqueta:s,ponerLaEtiqueta:k=>{s.value=k},disparador:r,ponerElDisparador:k=>{r.value=k},focoAlAbrir:i,abrir:E,cerrar:B,alternar:V}),(k,g)=>(e.openBlock(),e.createElementBlock("div",Dt,[e.renderSlot(k.$slots,"default")]))}}),St=["id","aria-labelledby","inert"],Nt={role:"none",class:"py-1"},se=e.defineComponent({inheritAttrs:!1,__name:"DropdownMenuContent",props:{side:{default:"bottom"},align:{default:"start"},sideOffset:{default:4}},setup(t){const a=t,o=S(),{idDelMenu:n,idDeLaEtiqueta:l}=o,r=e.computed(()=>o.disparador.value),s=e.computed(()=>o.abierto.value),i=e.ref(null),m=e.ref({top:0,left:0});function p(){if(!r.value||!i.value)return;const u=r.value.getBoundingClientRect(),h=i.value.getBoundingClientRect();let c=0,b=0;switch(a.side){case"bottom":c=u.bottom+a.sideOffset;break;case"top":c=u.top-h.height-a.sideOffset;break;case"left":b=u.left-h.width-a.sideOffset,c=u.top;break;case"right":b=u.right+a.sideOffset,c=u.top;break}switch(a.align){case"start":(a.side==="bottom"||a.side==="top")&&(b=u.left);break;case"center":(a.side==="bottom"||a.side==="top")&&(b=u.left+u.width/2-h.width/2);break;case"end":(a.side==="bottom"||a.side==="top")&&(b=u.right-h.width);break}m.value={top:c,left:b}}function y(){return i.value?Array.from(i.value.querySelectorAll('[role="menuitem"]')):[]}function E(u){const h=y();if(!h.length)return;const c=h.length;h[(u%c+c)%c]?.focus()}function B(){const u=document.activeElement;return u instanceof HTMLElement?y().indexOf(u):-1}function V(u){const h=B();switch(u.key){case"ArrowDown":u.preventDefault(),E(h+1);break;case"ArrowUp":u.preventDefault(),E(h<=0?-1:h-1);break;case"Home":u.preventDefault(),E(0);break;case"End":u.preventDefault(),E(-1);break;case"Escape":u.preventDefault(),u.stopPropagation(),o.cerrar({devolverElFoco:!0});break;case"Tab":u.preventDefault(),o.cerrar({devolverElFoco:!0});break}}e.watch(s,async u=>{if(u)switch(await e.nextTick(),requestAnimationFrame(()=>{p()}),o.focoAlAbrir.value){case"primero":E(0);break;case"ultimo":E(-1);break;default:i.value?.focus()}});function k(){s.value&&p()}function g(u){const h=u.target,c=!!h.closest("[dropdown-content]"),b=!!r.value?.contains(h);!c&&!b&&o.cerrar()}return e.onMounted(()=>{document.addEventListener("click",g),window.addEventListener("resize",k),window.addEventListener("scroll",k,!0)}),e.onBeforeUnmount(()=>{document.removeEventListener("click",g),window.removeEventListener("resize",k),window.removeEventListener("scroll",k,!0)}),(u,h)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[e.createVNode(e.Transition,{"enter-active-class":"transition-all duration-150 ease-in-out","leave-active-class":"transition-all duration-150 ease-in-out","enter-from-class":"opacity-0 scale-95","leave-to-class":"opacity-0 scale-95",onEnter:h[1]||(h[1]=c=>c.offsetHeight),onLeave:h[2]||(h[2]=c=>c.offsetHeight)},{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("div",e.mergeProps({ref_key:"contenido",ref:i},u.$attrs,{id:e.unref(n),role:"menu",tabindex:"-1","aria-orientation":"vertical","aria-labelledby":e.unref(l)??void 0,inert:!s.value,style:{position:"fixed",top:`${m.value.top}px`,left:`${m.value.left}px`,zIndex:50},"dropdown-content":"",class:"min-w-30 rounded-corner border border-primary bg-ui-bg/80 shadow-lg focus:outline-none",onClick:h[0]||(h[0]=c=>c.stopPropagation()),onKeydown:V}),[e.createElementVNode("div",Nt,[e.renderSlot(u.$slots,"default")])],16,St),[[e.vShow,s.value]])]),_:3})]))}}),Mt=["aria-disabled","onKeydown"],ce=e.defineComponent({__name:"DropdownMenuItem",props:{disabled:{type:Boolean,default:!1}},emits:["select","click"],setup(t,{emit:a}){const o=t,n=a,l=S();function r(s){o.disabled||(n("select"),n("click",s),l.cerrar({devolverElFoco:!0}))}return(s,i)=>(e.openBlock(),e.createElementBlock("div",{role:"menuitem",tabindex:"0","aria-disabled":t.disabled||void 0,class:e.normalizeClass(["px-3 py-2 text-sm transition-colors outline-none",{"opacity-50 cursor-not-allowed":t.disabled,"cursor-pointer hover:bg-primary hover:text-tx-on-primary focus-visible:bg-primary focus-visible:text-tx-on-primary":!t.disabled}]),onClick:r,onKeydown:[e.withKeys(e.withModifiers(r,["prevent"]),["enter"]),e.withKeys(e.withModifiers(r,["prevent"]),["space"])]},[e.renderSlot(s.$slots,"default")],42,Mt))}}),de=e.defineComponent({__name:"DropdownMenuLabel",setup(t){const a=S(),o=`${re()}-titulo`;return e.onMounted(()=>{a.ponerLaEtiqueta(o)}),e.onBeforeUnmount(()=>{a.ponerLaEtiqueta(null)}),(n,l)=>(e.openBlock(),e.createElementBlock("div",{id:o,role:"presentation",class:"px-3 py-2 text-sm font-semibold text-tx-main"},[e.renderSlot(n.$slots,"default")]))}}),At={role:"separator","aria-orientation":"horizontal",class:"bg-ui-bg/80 my-4 h-0.5"},me=e.defineComponent({__name:"DropdownMenuSeparator",setup(t){return(a,o)=>(e.openBlock(),e.createElementBlock("div",At))}});function fe(t){const a=t.filter(n=>n.type!==e.Comment&&!(n.type===e.Text&&typeof n.children=="string"&&!n.children.trim()));if(a.length!==1)return null;const o=a[0];return o.type===e.Fragment&&Array.isArray(o.children)?fe(o.children):o}function Tt(t){if(t instanceof HTMLElement)return t;const a=t?.$el;return a instanceof HTMLElement?a:null}const ue=e.defineComponent({name:"DropdownMenuTrigger",inheritAttrs:!1,props:{asChild:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1}},setup(t,{slots:a,attrs:o}){const n=S(),l=e.ref(null);function r(){n.ponerElDisparador(Tt(l.value))}function s(){t.disabled||(r(),n.alternar())}function i(m){if(!t.disabled)switch(m.key){case"Enter":case" ":m.preventDefault(),r(),n.alternar("primero");break;case"ArrowDown":m.preventDefault(),r(),n.abrir("primero");break;case"ArrowUp":m.preventDefault(),r(),n.abrir("ultimo");break;case"Escape":n.abierto.value&&(m.preventDefault(),n.cerrar({devolverElFoco:!0}));break}}return()=>{const m={ref:y=>{l.value=y,r()},"aria-haspopup":"menu","aria-expanded":n.abierto.value?"true":"false","aria-controls":n.abierto.value?n.idDelMenu:void 0,onClick:s,onKeydown:i},p=a.default?.()??[];if(t.asChild){const y=fe(p);if(y)return e.cloneVNode(y,{...o,...m})}return e.h("div",{...o,class:["dropdown-menu-trigger inline-block",o.class],...m},p)}}}),It=["for"],pe=T(e.defineComponent({__name:"FormGroup",props:{label:{},htmlFor:{default:""},customClass:{default:()=>({})},labelClass:{default:()=>({})}},setup(t){return(a,o)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["flex flex-col gap-2",t.customClass])},[t.label?(e.openBlock(),e.createElementBlock("label",{key:0,for:t.htmlFor,class:e.normalizeClass(["text-sm font-medium text-primary dark:text-primary-dark",t.labelClass])},e.toDisplayString(t.label),11,It)):e.createCommentVNode("",!0),e.renderSlot(a.$slots,"default",{},void 0,!0)],2))}}),[["__scopeId","data-v-c0d9d9cb"]]),be=T(e.defineComponent({__name:"ListCard",props:{clickable:{type:Boolean,default:!1},customClass:{default:()=>({})}},emits:["click"],setup(t,{emit:a}){const o=t,n=a,l=()=>{o.clickable&&n("click")};return(r,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["flex items-center justify-between background p-3 rounded-vsk border border-vsk-primary/70 transition-colors duration-200",{"hover:bg-vsk-primary/5 cursor-pointer":o.clickable},t.customClass]),onClick:l},[e.renderSlot(r.$slots,"default",{},void 0,!0)],2))}}),[["__scopeId","data-v-f86d47da"]]),Ot={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"},Pt=["src","alt","title"],jt={key:1,class:"w-8 h-8 flex items-center justify-center"},Ft=["src","alt"],Kt=["min","max","value"],ke=e.defineComponent({__name:"SliderControl",props:{icon:{},alt:{default:""},tooltip:{default:""},modelValue:{},min:{default:0},max:{default:100},showButton:{type:Boolean,default:!1},iconClass:{default:()=>({})},getPercentageClass:{type:Function,default:()=>""}},emits:["update:modelValue","buttonClick"],setup(t,{emit:a}){const o=t,n=a,l=e.computed(()=>{if(o.max<=o.min)return 0;const m=o.max-o.min,p=o.modelValue-o.min;return Math.round(p/m*100)}),r=e.computed(()=>o.getPercentageClass?o.getPercentageClass(l.value):""),s=m=>{const p=m.target;n("update:modelValue",Number(p.value))},i=()=>{n("buttonClick")};return(m,p)=>(e.openBlock(),e.createElementBlock("div",Ot,[t.showButton?(e.openBlock(),e.createElementBlock("button",{key:0,onClick:i,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"},[e.createElementVNode("img",{src:t.icon,alt:t.alt,title:t.tooltip,class:e.normalizeClass(["w-6 h-6 transition-all duration-200",t.iconClass])},null,10,Pt)])):(e.openBlock(),e.createElementBlock("div",jt,[e.createElementVNode("img",{src:t.icon,alt:t.alt,class:"w-6 h-6 transition-all duration-200"},null,8,Ft)])),e.createElementVNode("input",{type:"range",min:t.min,max:t.max,value:t.modelValue,onInput:s,class:"flex-1 transition-all duration-200 hover:scale-105"},null,40,Kt),e.createElementVNode("span",{class:e.normalizeClass(["w-12 text-right transition-all duration-200 font-medium",r.value])},e.toDisplayString(l.value)+"% ",3)]))}}),Rt=["disabled"],ge=e.defineComponent({__name:"SwitchToggle",props:{isOn:{type:Boolean},disabled:{type:Boolean,default:!1},size:{default:"small"},activeClass:{default:"bg-primary dark:bg-primary-dark"},inactiveClass:{default:"background"},customClass:{default:""}},emits:["toggle"],setup(t,{emit:a}){const o=t,n=a,l=()=>{n("toggle",!o.isOn)};return(r,s)=>(e.openBlock(),e.createElementBlock("button",{type:"button",onClick:l,disabled:t.disabled,class:e.normalizeClass(["relative inline-flex items-center rounded-full transition-colors",t.size==="small"?"h-6 w-11":"h-7 w-12",t.isOn?t.activeClass:t.inactiveClass,t.disabled?"opacity-50 cursor-not-allowed":"cursor-pointer",t.customClass])},[e.createElementVNode("span",{class:e.normalizeClass(["inline-block transform rounded-full bg-white shadow transition-transform",t.size==="small"?"h-4 w-4":"h-6 w-6",t.isOn?t.size==="small"?"translate-x-6":"translate-x-5":"translate-x-1"])},null,2)],10,Rt))}}),qt=["disabled"],Ut=["src","alt","title"],he=e.defineComponent({__name:"ToggleControl",props:{icon:{},alt:{default:""},tooltip:{default:""},isActive:{type:Boolean,default:!1},isLoading:{type:Boolean,default:!1},iconClass:{default:()=>({})},customClass:{default:()=>({})}},emits:["click"],setup(t,{emit:a}){const o=a,n=()=>{o("click")};return(l,r)=>(e.openBlock(),e.createElementBlock("button",{onClick:n,class:e.normalizeClass(["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",{"animate-pulse":t.isLoading,"ring-2 ring-primary dark:ring-primary-dark":t.isActive,"opacity-60":!t.isActive,...t.customClass}]),disabled:t.isLoading},[e.createElementVNode("img",{src:t.icon,alt:t.alt,title:t.tooltip,class:e.normalizeClass(["m-auto w-12.5 h-12.5 transition-all duration-300 group-hover:scale-110 relative z-10",{"animate-spin":t.isLoading,"filter brightness-75":!t.isActive,"drop-shadow-lg":t.isActive,...t.iconClass}])},null,10,Ut)],10,qt))}}),Wt=["title"],Ht=["src","alt"],Gt={key:0,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"},ye=e.defineComponent({__name:"TrayIconButton",props:{icon:{},alt:{default:""},tooltip:{default:""},badge:{default:null},iconClass:{default:()=>({})},customClass:{default:""},tooltipClass:{default:""},showCustomTooltip:{type:Boolean,default:!1},customTooltipText:{default:""}},emits:["click"],setup(t,{emit:a}){const o=a,n=e.ref(!1),l=()=>{o("click")};return(r,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["p-1 rounded-corner relative hover:bg-primary dark:hover:bg-primary-dark group transition-all duration-300",t.customClass]),title:t.tooltip,onClick:l,onMouseenter:s[0]||(s[0]=i=>n.value=!0),onMouseleave:s[1]||(s[1]=i=>n.value=!1)},[e.createElementVNode("img",{src:t.icon,alt:t.alt,class:e.normalizeClass(["m-auto h-5.5 w-auto transition-all duration-300",t.iconClass])},null,10,Ht),t.badge!==null&&t.badge>0?(e.openBlock(),e.createElementBlock("div",Gt,e.toDisplayString(t.badge),1)):e.createCommentVNode("",!0),t.showCustomTooltip&&t.customTooltipText?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["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",[t.tooltipClass,{"opacity-0 -translate-y-2":!n.value,"opacity-100 translate-y-0":n.value}]])},e.toDisplayString(t.customTooltipText),3)):e.createCommentVNode("",!0),e.renderSlot(r.$slots,"default")],42,Wt))}}),Xt=[H,O,I,G,L,Z,F,j,ee,K,te,oe,ne,ae,ie,se,ce,de,me,ue,pe,be,ke,ge,he,ye],Yt={install(t){Xt.forEach(a=>{t.component(a.name,a)})}};f.ActionButton=oe,f.AppBar=F,f.BarSearch=te,f.CLAVE_DEL_MENU=R,f.CLAVE_DE_LA_BARRA=M,f.ConfigSection=ne,f.DeviceCard=ae,f.DropdownMenu=ie,f.DropdownMenuContent=se,f.DropdownMenuItem=ce,f.DropdownMenuLabel=de,f.DropdownMenuSeparator=me,f.DropdownMenuTrigger=ue,f.FormGroup=pe,f.ListCard=be,f.POSICIONES=X,f.SelectField=G,f.SideBar=H,f.SideButton=O,f.SideGroup=I,f.SliderControl=ke,f.SwitchToggle=ge,f.TabBar=ee,f.TabItem=K,f.ThemeIcon=L,f.ToggleControl=he,f.TrayIconButton=ye,f.WindowControls=j,f.WindowFrame=Z,f.default=Yt,f.esPosicion=Y,f.orientacionDe=A,f.posicionDe=J,f.usarElMenu=S,f.usarLaBarra=D,f.usarLaPosicionDeLaBarra=Q,Object.defineProperties(f,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vasakgroup/vue-libvasak",
3
- "version": "0.4.1",
3
+ "version": "0.5.0",
4
4
  "description": "Vue componenets for VSK Applications",
5
5
  "main": "./dist/vue-libvasak.umd.js",
6
6
  "module": "./dist/vue-libvasak.es.js",
package/readme.md CHANGED
@@ -49,6 +49,44 @@ import {
49
49
  </template>
50
50
  ```
51
51
 
52
+ ### DropdownMenu
53
+
54
+ A menu with real menu semantics: `role="menu"`, `role="menuitem"`, arrow-key
55
+ navigation, `Enter` and `Space` to activate, `Escape` and `Tab` to close — and
56
+ focus goes back to whoever opened it.
57
+
58
+ ```vue
59
+ <script setup lang="ts">
60
+ import {
61
+ DropdownMenu,
62
+ DropdownMenuContent,
63
+ DropdownMenuItem,
64
+ DropdownMenuTrigger,
65
+ } from "@vasakgroup/vue-libvasak";
66
+ </script>
67
+
68
+ <template>
69
+ <DropdownMenu>
70
+ <DropdownMenuTrigger as-child>
71
+ <button type="button">Actions</button>
72
+ </DropdownMenuTrigger>
73
+ <DropdownMenuContent side="bottom" align="start">
74
+ <DropdownMenuItem @select="copy">Copy</DropdownMenuItem>
75
+ <DropdownMenuItem :disabled="!canPaste" @select="paste">Paste</DropdownMenuItem>
76
+ </DropdownMenuContent>
77
+ </DropdownMenu>
78
+ </template>
79
+ ```
80
+
81
+ `as-child` puts `aria-haspopup`, `aria-expanded` and the handlers **on your own
82
+ button** instead of on a wrapper — that is what a screen reader announces. Drop
83
+ it and the trigger wraps the slot in a `div`, which is what a context menu
84
+ anchored to a point needs; there, bind `v-model:open` and let the application
85
+ decide when to open it.
86
+
87
+ A disabled item stays focusable and keeps its place in the arrow rotation, with
88
+ `aria-disabled`: an option that vanishes cannot be discovered.
89
+
52
90
  ## Contributors
53
91
 
54
92
  <center>