skillex 0.3.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.3.1] - 2026-04-08
11
+
12
+ ### Fixed
13
+ - Web UI: translate all remaining Portuguese strings to English (`No sources.`, `Sync history`, `Error`/`Done` toasts, `Visible`, `Catalog`, `Skill detail`, `Version`, `Installed`/`Yes`/`No`, `Compatibility`, `Instructions`, `Instructions unavailable`)
14
+ - Web UI dark theme: lift background and surface colors from near-black to a more comfortable dark grey; raise `--text-muted` and `--text-dim` contrast for better readability
15
+
10
16
  ## [0.3.0] - 2026-04-08
11
17
 
12
18
  ### Added
@@ -1 +1 @@
1
- import{d as C,o as i,c as o,n as p,a as e,b as k,t as n,e as y,F as m,r as h,w as $,u as x,f as v,g as S,h as B,i as M}from"./index-DXrW27jF.js";const j={class:"skill-card-body"},L={class:"skill-card-icon-row"},T={key:0,class:"skill-installed-dot"},O={class:"skill-card-meta"},I={class:"downloads-count"},z={class:"skill-card-head"},A={class:"version-badge"},R={class:"skill-description"},V={key:0,class:"tag-block"},F={key:1,class:"tag-block tag-block-compat"},E={class:"skill-card-footer"},N={class:"skill-author"},D=["src","alt"],G=C({__name:"SkillCard",props:{skill:{},onOpen:{type:Function},onInstall:{type:Function},onRemove:{type:Function}},setup(l){const d={workflow:"icon-bg-workflow",testing:"icon-bg-testing",devops:"icon-bg-devops",tools:"icon-bg-tools",security:"icon-bg-security"},g={git:"tag-git",github:"tag-git",commit:"tag-git",testing:"tag-test",jest:"tag-test",tdd:"tag-test",test:"tag-test",docker:"tag-docker",devops:"tag-docker",yaml:"tag-docker",security:"tag-security",owasp:"tag-security",audit:"tag-security",react:"tag-react",hooks:"tag-react",python:"tag-python",docs:"tag-python"};function w(a){const t=a.tags.map(s=>s.toLowerCase());return t.some(s=>["git","github","commit","workflow"].includes(s))?"icon-bg-workflow":t.some(s=>["testing","jest","tdd","test","vitest"].includes(s))?"icon-bg-testing":t.some(s=>["docker","devops","ci","cd"].includes(s))?"icon-bg-devops":t.some(s=>["security","owasp","audit"].includes(s))?"icon-bg-security":t.some(s=>["tools","python","scraper","web"].includes(s))?"icon-bg-tools":d[a.id]??"icon-bg-default"}function f(a){return g[a.toLowerCase()]??"tag-default"}function b(a){const t=a.id.toLowerCase();return t.includes("git")||t.includes("commit")?"🌿":t.includes("test")||t.includes("jest")?"🧪":t.includes("docker")?"🐳":t.includes("security")||t.includes("guard")?"🛡️":t.includes("react")?"⚛️":t.includes("python")?"🐍":t.includes("typescript")||t.includes("ts")?"🔷":t.includes("cpp")||t.includes("c++")?"⚙️":t.includes("latex")?"📄":t.includes("create")?"✨":t.includes("code")||t.includes("review")?"🔍":t.includes("error")?"🐛":"📦"}return(a,t)=>(i(),o("article",{class:p(["skill-card",{"is-installed":l.skill.installed}]),onClick:t[3]||(t[3]=s=>l.onOpen(l.skill.id))},[e("div",j,[e("div",L,[e("div",{class:p(["skill-icon-wrap",w(l.skill)])},[k(n(b(l.skill))+" ",1),l.skill.installed?(i(),o("div",T,[...t[4]||(t[4]=[e("svg",{fill:"currentColor",viewBox:"0 0 20 20"},[e("path",{"fill-rule":"evenodd",d:"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z","clip-rule":"evenodd"})],-1)])])):y("",!0)],2),e("div",O,[t[6]||(t[6]=e("span",{class:"verified-badge"},[e("svg",{width:"10",height:"10",fill:"currentColor",viewBox:"0 0 20 20"},[e("path",{"fill-rule":"evenodd",d:"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z","clip-rule":"evenodd"})]),k(" Oficial ")],-1)),e("span",I,[t[5]||(t[5]=e("svg",{fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4"})],-1)),k(" "+n(l.skill.source.repo),1)])])]),e("div",z,[e("h3",null,n(l.skill.name),1),e("span",A,"v"+n(l.skill.version),1)]),e("p",R,n(l.skill.description),1),l.skill.tags.length>0?(i(),o("div",V,[(i(!0),o(m,null,h(l.skill.tags,s=>(i(),o("span",{key:`${l.skill.id}-${s}`,class:p(["skill-tag",f(s)])},n(s),3))),128))])):y("",!0),l.skill.compatibility.length>0?(i(),o("div",F,[(i(!0),o(m,null,h(l.skill.compatibility,s=>(i(),o("span",{key:`${l.skill.id}-${s}`,class:"chip chip-accent",style:{height:"20px","font-size":"10px",padding:"0 8px"}},n(s),1))),128))])):y("",!0)]),e("div",E,[e("div",N,[e("img",{src:`https://api.dicebear.com/7.x/avataaars/svg?seed=${l.skill.author||l.skill.source.repo}`,alt:l.skill.author||l.skill.source.repo},null,8,D),k(" "+n(l.skill.author||l.skill.source.repo),1)]),e("div",{class:"skill-card-actions",onClick:t[2]||(t[2]=$(()=>{},["stop"]))},[l.skill.installed?(i(),o(m,{key:0},[t[8]||(t[8]=e("span",{class:"installed-label"},"Instalado",-1)),e("button",{class:"remove-btn",type:"button",title:"Remover",onClick:t[0]||(t[0]=s=>l.onRemove(l.skill.id))},[...t[7]||(t[7]=[e("svg",{fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1)])])],64)):(i(),o("button",{key:1,class:"button button-primary",style:{"min-height":"28px",padding:"0 12px","font-size":"0.75rem"},type:"button",onClick:t[1]||(t[1]=s=>l.onInstall(l.skill))},[...t[9]||(t[9]=[e("svg",{width:"11",height:"11",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2.5",d:"M12 4v16m8-8H4"})],-1),k(" Instalar ",-1)])]))])])],2))}}),H={class:"page-column"},P={class:"panel"},W={class:"catalog-overview"},Y={class:"overview-card"},q={class:"overview-card"},J={class:"overview-card"},K={class:"category-pills"},Q=["onClick"],U={key:0,class:"category-pill-count"},X={key:0,class:"empty-state"},Z={width:"40",height:"40",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",style:{color:"var(--text-dim)","margin-bottom":"4px"}},_={key:1,class:"catalog-grid"},st=C({__name:"CatalogPage",setup(l){const d=x(),g=B("all"),w=[{id:"all",name:"Todas",icon:"✦"},{id:"workflow",name:"Workflow",icon:"🌿"},{id:"testing",name:"Testing",icon:"🧪"},{id:"security",name:"Security",icon:"🛡️"},{id:"devops",name:"DevOps",icon:"🐳"},{id:"tools",name:"Tools",icon:"🔧"}];function f(t,s){const r=[t,...s].map(u=>u.toLowerCase()).join(" ");return/git|commit|workflow|branch/.test(r)?"workflow":/test|jest|tdd|vitest|spec/.test(r)?"testing":/security|owasp|audit|guard/.test(r)?"security":/docker|devops|ci|cd|helm/.test(r)?"devops":/python|scraper|tool|docs|web/.test(r)?"tools":"other"}function b(t){var s,r;return t==="all"?((s=d.state.catalog)==null?void 0:s.skills.length)??0:(((r=d.state.catalog)==null?void 0:r.skills)??[]).filter(u=>f(u.id,u.tags)===t).length}const a=S(()=>{const t=d.filteredSkills.value;return g.value==="all"?t:t.filter(s=>f(s.id,s.tags)===g.value)});return(t,s)=>{var r,u;return i(),o("section",H,[e("div",P,[s[3]||(s[3]=e("div",{class:"panel-head"},[e("div",{class:"panel-head-title"},[e("p",{class:"eyebrow"},"Discovery"),e("h2",null,"Marketplace"),e("p",null,"Habilidades validadas para o seu agente de IA.")])],-1)),e("div",W,[e("article",Y,[s[0]||(s[0]=e("span",null,"Visíveis",-1)),e("strong",null,n(a.value.length),1)]),e("article",q,[s[1]||(s[1]=e("span",null,"Sources",-1)),e("strong",null,n(((r=v(d).state.catalog)==null?void 0:r.sources.length)??0),1)]),e("article",J,[s[2]||(s[2]=e("span",null,"Instaladas",-1)),e("strong",null,n(((u=v(d).state.dashboard)==null?void 0:u.installed.length)??0),1)])]),e("div",K,[(i(),o(m,null,h(w,c=>e("button",{key:c.id,class:p(["category-pill",{active:g.value===c.id}]),type:"button",onClick:tt=>g.value=c.id},[e("span",null,n(c.icon),1),k(" "+n(c.name)+" ",1),c.id!=="all"?(i(),o("span",U,n(b(c.id)),1)):y("",!0)],10,Q)),64))])]),a.value.length===0?(i(),o("div",X,[(i(),o("svg",Z,[...s[4]||(s[4]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"1.5",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"},null,-1)])])),s[5]||(s[5]=e("strong",null,"Nenhuma skill encontrada",-1)),s[6]||(s[6]=e("p",null,"Tente outro filtro ou adicione uma source na sidebar.",-1))])):(i(),o("div",_,[(i(!0),o(m,null,h(a.value,c=>(i(),M(G,{key:c.id,skill:c,"on-open":v(d).navigateToSkill,"on-install":v(d).installSkill,"on-remove":v(d).removeSkill},null,8,["skill","on-open","on-install","on-remove"]))),128))]))])}}});export{st as default};
1
+ import{d as C,o as i,c as o,n as p,a as e,b as k,t as n,e as y,F as m,r as h,w as $,u as x,f as v,g as S,h as B,i as M}from"./index-DN-z--cR.js";const j={class:"skill-card-body"},L={class:"skill-card-icon-row"},T={key:0,class:"skill-installed-dot"},O={class:"skill-card-meta"},I={class:"downloads-count"},z={class:"skill-card-head"},A={class:"version-badge"},R={class:"skill-description"},V={key:0,class:"tag-block"},F={key:1,class:"tag-block tag-block-compat"},E={class:"skill-card-footer"},N={class:"skill-author"},D=["src","alt"],G=C({__name:"SkillCard",props:{skill:{},onOpen:{type:Function},onInstall:{type:Function},onRemove:{type:Function}},setup(l){const d={workflow:"icon-bg-workflow",testing:"icon-bg-testing",devops:"icon-bg-devops",tools:"icon-bg-tools",security:"icon-bg-security"},g={git:"tag-git",github:"tag-git",commit:"tag-git",testing:"tag-test",jest:"tag-test",tdd:"tag-test",test:"tag-test",docker:"tag-docker",devops:"tag-docker",yaml:"tag-docker",security:"tag-security",owasp:"tag-security",audit:"tag-security",react:"tag-react",hooks:"tag-react",python:"tag-python",docs:"tag-python"};function w(a){const t=a.tags.map(s=>s.toLowerCase());return t.some(s=>["git","github","commit","workflow"].includes(s))?"icon-bg-workflow":t.some(s=>["testing","jest","tdd","test","vitest"].includes(s))?"icon-bg-testing":t.some(s=>["docker","devops","ci","cd"].includes(s))?"icon-bg-devops":t.some(s=>["security","owasp","audit"].includes(s))?"icon-bg-security":t.some(s=>["tools","python","scraper","web"].includes(s))?"icon-bg-tools":d[a.id]??"icon-bg-default"}function f(a){return g[a.toLowerCase()]??"tag-default"}function b(a){const t=a.id.toLowerCase();return t.includes("git")||t.includes("commit")?"🌿":t.includes("test")||t.includes("jest")?"🧪":t.includes("docker")?"🐳":t.includes("security")||t.includes("guard")?"🛡️":t.includes("react")?"⚛️":t.includes("python")?"🐍":t.includes("typescript")||t.includes("ts")?"🔷":t.includes("cpp")||t.includes("c++")?"⚙️":t.includes("latex")?"📄":t.includes("create")?"✨":t.includes("code")||t.includes("review")?"🔍":t.includes("error")?"🐛":"📦"}return(a,t)=>(i(),o("article",{class:p(["skill-card",{"is-installed":l.skill.installed}]),onClick:t[3]||(t[3]=s=>l.onOpen(l.skill.id))},[e("div",j,[e("div",L,[e("div",{class:p(["skill-icon-wrap",w(l.skill)])},[k(n(b(l.skill))+" ",1),l.skill.installed?(i(),o("div",T,[...t[4]||(t[4]=[e("svg",{fill:"currentColor",viewBox:"0 0 20 20"},[e("path",{"fill-rule":"evenodd",d:"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z","clip-rule":"evenodd"})],-1)])])):y("",!0)],2),e("div",O,[t[6]||(t[6]=e("span",{class:"verified-badge"},[e("svg",{width:"10",height:"10",fill:"currentColor",viewBox:"0 0 20 20"},[e("path",{"fill-rule":"evenodd",d:"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z","clip-rule":"evenodd"})]),k(" Oficial ")],-1)),e("span",I,[t[5]||(t[5]=e("svg",{fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4"})],-1)),k(" "+n(l.skill.source.repo),1)])])]),e("div",z,[e("h3",null,n(l.skill.name),1),e("span",A,"v"+n(l.skill.version),1)]),e("p",R,n(l.skill.description),1),l.skill.tags.length>0?(i(),o("div",V,[(i(!0),o(m,null,h(l.skill.tags,s=>(i(),o("span",{key:`${l.skill.id}-${s}`,class:p(["skill-tag",f(s)])},n(s),3))),128))])):y("",!0),l.skill.compatibility.length>0?(i(),o("div",F,[(i(!0),o(m,null,h(l.skill.compatibility,s=>(i(),o("span",{key:`${l.skill.id}-${s}`,class:"chip chip-accent",style:{height:"20px","font-size":"10px",padding:"0 8px"}},n(s),1))),128))])):y("",!0)]),e("div",E,[e("div",N,[e("img",{src:`https://api.dicebear.com/7.x/avataaars/svg?seed=${l.skill.author||l.skill.source.repo}`,alt:l.skill.author||l.skill.source.repo},null,8,D),k(" "+n(l.skill.author||l.skill.source.repo),1)]),e("div",{class:"skill-card-actions",onClick:t[2]||(t[2]=$(()=>{},["stop"]))},[l.skill.installed?(i(),o(m,{key:0},[t[8]||(t[8]=e("span",{class:"installed-label"},"Instalado",-1)),e("button",{class:"remove-btn",type:"button",title:"Remover",onClick:t[0]||(t[0]=s=>l.onRemove(l.skill.id))},[...t[7]||(t[7]=[e("svg",{fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1)])])],64)):(i(),o("button",{key:1,class:"button button-primary",style:{"min-height":"28px",padding:"0 12px","font-size":"0.75rem"},type:"button",onClick:t[1]||(t[1]=s=>l.onInstall(l.skill))},[...t[9]||(t[9]=[e("svg",{width:"11",height:"11",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2.5",d:"M12 4v16m8-8H4"})],-1),k(" Instalar ",-1)])]))])])],2))}}),H={class:"page-column"},P={class:"panel"},W={class:"catalog-overview"},Y={class:"overview-card"},q={class:"overview-card"},J={class:"overview-card"},K={class:"category-pills"},Q=["onClick"],U={key:0,class:"category-pill-count"},X={key:0,class:"empty-state"},Z={width:"40",height:"40",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",style:{color:"var(--text-dim)","margin-bottom":"4px"}},_={key:1,class:"catalog-grid"},st=C({__name:"CatalogPage",setup(l){const d=x(),g=B("all"),w=[{id:"all",name:"Todas",icon:"✦"},{id:"workflow",name:"Workflow",icon:"🌿"},{id:"testing",name:"Testing",icon:"🧪"},{id:"security",name:"Security",icon:"🛡️"},{id:"devops",name:"DevOps",icon:"🐳"},{id:"tools",name:"Tools",icon:"🔧"}];function f(t,s){const r=[t,...s].map(u=>u.toLowerCase()).join(" ");return/git|commit|workflow|branch/.test(r)?"workflow":/test|jest|tdd|vitest|spec/.test(r)?"testing":/security|owasp|audit|guard/.test(r)?"security":/docker|devops|ci|cd|helm/.test(r)?"devops":/python|scraper|tool|docs|web/.test(r)?"tools":"other"}function b(t){var s,r;return t==="all"?((s=d.state.catalog)==null?void 0:s.skills.length)??0:(((r=d.state.catalog)==null?void 0:r.skills)??[]).filter(u=>f(u.id,u.tags)===t).length}const a=S(()=>{const t=d.filteredSkills.value;return g.value==="all"?t:t.filter(s=>f(s.id,s.tags)===g.value)});return(t,s)=>{var r,u;return i(),o("section",H,[e("div",P,[s[3]||(s[3]=e("div",{class:"panel-head"},[e("div",{class:"panel-head-title"},[e("p",{class:"eyebrow"},"Discovery"),e("h2",null,"Marketplace"),e("p",null,"Habilidades validadas para o seu agente de IA.")])],-1)),e("div",W,[e("article",Y,[s[0]||(s[0]=e("span",null,"Visible",-1)),e("strong",null,n(a.value.length),1)]),e("article",q,[s[1]||(s[1]=e("span",null,"Sources",-1)),e("strong",null,n(((r=v(d).state.catalog)==null?void 0:r.sources.length)??0),1)]),e("article",J,[s[2]||(s[2]=e("span",null,"Instaladas",-1)),e("strong",null,n(((u=v(d).state.dashboard)==null?void 0:u.installed.length)??0),1)])]),e("div",K,[(i(),o(m,null,h(w,c=>e("button",{key:c.id,class:p(["category-pill",{active:g.value===c.id}]),type:"button",onClick:tt=>g.value=c.id},[e("span",null,n(c.icon),1),k(" "+n(c.name)+" ",1),c.id!=="all"?(i(),o("span",U,n(b(c.id)),1)):y("",!0)],10,Q)),64))])]),a.value.length===0?(i(),o("div",X,[(i(),o("svg",Z,[...s[4]||(s[4]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"1.5",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"},null,-1)])])),s[5]||(s[5]=e("strong",null,"Nenhuma skill encontrada",-1)),s[6]||(s[6]=e("p",null,"Tente outro filtro ou adicione uma source na sidebar.",-1))])):(i(),o("div",_,[(i(!0),o(m,null,h(a.value,c=>(i(),M(G,{key:c.id,skill:c,"on-open":v(d).navigateToSkill,"on-install":v(d).installSkill,"on-remove":v(d).removeSkill},null,8,["skill","on-open","on-install","on-remove"]))),128))]))])}}});export{st as default};
@@ -0,0 +1 @@
1
+ import{d as b,j as g,u as h,k as f,l as w,c as e,a as t,f as r,b as d,t as i,e as u,F as v,m as x,r as m,g as y,o}from"./index-DN-z--cR.js";const C={class:"page-column"},S={class:"panel"},_={class:"detail-topbar"},I={key:0,class:"detail-hero"},M={class:"detail-description"},B={class:"detail-actions"},H={key:0,class:"empty-state panel"},L={class:"panel"},V={class:"detail-metadata-grid"},j={class:"metadata-card"},N={style:{"font-family":"monospace","font-size":"0.82rem"}},$={class:"metadata-card"},z={class:"metadata-card"},D={style:{"font-family":"monospace"}},T={class:"metadata-card"},E={class:"detail-chip-sections"},A={class:"chip-row"},F={key:0,style:{"font-size":"0.8rem",color:"var(--text-dim)"}},R={class:"chip-row"},K={key:0,style:{"font-size":"0.8rem",color:"var(--text-dim)"}},P={class:"panel"},U={key:0,class:"error-card",style:{margin:"0 20px 20px"}},Y=["innerHTML"],O=b({__name:"SkillDetailPage",setup(q){const k=g(),a=h(),p=y(()=>typeof k.params.skillId=="string"?k.params.skillId:""),s=y(()=>a.state.detail);async function c(){p.value&&await a.loadSkillDetail(p.value)}return f(p,()=>void c()),w(()=>void c()),(G,l)=>(o(),e("section",C,[t("div",S,[t("div",_,[t("button",{class:"button button-ghost",type:"button",onClick:l[0]||(l[0]=n=>r(a).navigateHome())},[...l[5]||(l[5]=[t("svg",{width:"13",height:"13",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 19l-7-7 7-7"})],-1),d(" Catalog ",-1)])]),l[6]||(l[6]=t("p",{class:"section-label"},"Skill detail",-1))]),s.value?(o(),e("div",I,[t("div",null,[l[7]||(l[7]=t("p",{class:"eyebrow"},"Skill",-1)),t("h2",null,i(s.value.skill.name),1),t("p",M,i(s.value.skill.description),1)]),t("div",B,[t("button",{class:"button button-secondary",type:"button",onClick:l[1]||(l[1]=n=>r(a).updateSkill(s.value.skill.id))},[...l[8]||(l[8]=[t("svg",{width:"13",height:"13",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),d(" Update ",-1)])]),t("button",{class:"button button-ghost",type:"button",onClick:l[2]||(l[2]=n=>r(a).syncNow())},"Sync"),s.value.skill.installed?(o(),e("button",{key:1,class:"button button-danger",type:"button",onClick:l[4]||(l[4]=n=>r(a).removeSkill(s.value.skill.id))},[...l[10]||(l[10]=[t("svg",{width:"13",height:"13",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1),d(" Remover ",-1)])])):(o(),e("button",{key:0,class:"button button-primary",type:"button",onClick:l[3]||(l[3]=n=>r(a).installSkill(s.value.skill))},[...l[9]||(l[9]=[t("svg",{width:"13",height:"13",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2.5",d:"M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4"})],-1),d(" Instalar ",-1)])]))])])):u("",!0)]),r(a).state.detailLoading?(o(),e("div",H,[...l[11]||(l[11]=[t("div",{style:{width:"28px",height:"28px","border-radius":"50%",border:"2px solid rgba(16,185,129,0.15)","border-top-color":"var(--accent)",animation:"spin 700ms linear infinite"}},null,-1),t("strong",null,"Carregando detalhes...",-1)])])):s.value?(o(),e(v,{key:1},[t("div",L,[t("div",V,[t("article",j,[l[12]||(l[12]=t("span",null,"Skill ID",-1)),t("strong",N,i(s.value.skill.id),1)]),t("article",$,[l[13]||(l[13]=t("span",null,"Source",-1)),t("strong",null,i(s.value.skill.source.label||s.value.skill.source.repo),1)]),t("article",z,[l[14]||(l[14]=t("span",null,"Version",-1)),t("strong",D,"v"+i(s.value.skill.version),1)]),t("article",T,[l[15]||(l[15]=t("span",null,"Installed",-1)),t("strong",{style:x(s.value.skill.installed?"color:var(--accent)":"color:var(--text-muted)")},i(s.value.skill.installed?"✓ Yes":"No"),5)])]),t("div",E,[t("div",null,[l[16]||(l[16]=t("p",{class:"section-label",style:{margin:"0 0 8px",display:"block"}},"Tags",-1)),t("div",A,[(o(!0),e(v,null,m(s.value.skill.tags,n=>(o(),e("span",{key:n,class:"chip"},i(n),1))),128)),s.value.skill.tags.length===0?(o(),e("span",F,"—")):u("",!0)])]),t("div",null,[l[17]||(l[17]=t("p",{class:"section-label",style:{margin:"0 0 8px",display:"block"}},"Compatibility",-1)),t("div",R,[(o(!0),e(v,null,m(s.value.skill.compatibility,n=>(o(),e("span",{key:n,class:"chip chip-accent"},i(n),1))),128)),s.value.skill.compatibility.length===0?(o(),e("span",K,"—")):u("",!0)])])])]),t("div",P,[l[19]||(l[19]=t("div",{class:"panel-head"},[t("div",{class:"panel-head-title"},[t("p",{class:"eyebrow"},"Instructions"),t("h2",null,"SKILL.md"),t("p",null,"Content rendered by the backend.")])],-1)),s.value.instructionsError?(o(),e("div",U,[l[18]||(l[18]=t("strong",null,"Instructions unavailable",-1)),t("p",null,i(s.value.instructionsError),1)])):(o(),e("article",{key:1,class:"markdown-body",innerHTML:s.value.instructionsHtml},null,8,Y))])],64)):u("",!0)]))}});export{O as default};
@@ -22,4 +22,4 @@
22
22
  * vue-router v4.6.4
23
23
  * (c) 2025 Eduardo San Martin Morote
24
24
  * @license MIT
25
- */let su=()=>location.protocol+"//"+location.host;function Mi(e,t){const{pathname:n,search:s,hash:r}=t,o=e.indexOf("#");if(o>-1){let i=r.includes(e.slice(o))?e.slice(o).length:1,l=r.slice(i);return l[0]!=="/"&&(l="/"+l),zr(l,"")}return zr(n,e)+s+r}function ru(e,t,n,s){let r=[],o=[],i=null;const l=({state:h})=>{const g=Mi(e,location),v=n.value,A=t.value;let M=0;if(h){if(n.value=g,t.value=h,i&&i===v){i=null;return}M=A?h.position-A.position:0}else s(g);r.forEach(D=>{D(n.value,v,{delta:M,type:Ps.pop,direction:M?M>0?gs.forward:gs.back:gs.unknown})})};function c(){i=n.value}function f(h){r.push(h);const g=()=>{const v=r.indexOf(h);v>-1&&r.splice(v,1)};return o.push(g),g}function a(){if(document.visibilityState==="hidden"){const{history:h}=window;if(!h.state)return;h.replaceState(te({},h.state,{scroll:Zn()}),"")}}function d(){for(const h of o)h();o=[],window.removeEventListener("popstate",l),window.removeEventListener("pagehide",a),document.removeEventListener("visibilitychange",a)}return window.addEventListener("popstate",l),window.addEventListener("pagehide",a),document.addEventListener("visibilitychange",a),{pauseListeners:c,listen:f,destroy:d}}function Zr(e,t,n,s=!1,r=!1){return{back:e,current:t,forward:n,replaced:s,position:window.history.length,scroll:r?Zn():null}}function ou(e){const{history:t,location:n}=window,s={value:Mi(e,n)},r={value:t.state};r.value||o(s.value,{back:null,current:s.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function o(c,f,a){const d=e.indexOf("#"),h=d>-1?(n.host&&document.querySelector("base")?e:e.slice(d))+c:su()+e+c;try{t[a?"replaceState":"pushState"](f,"",h),r.value=f}catch(g){console.error(g),n[a?"replace":"assign"](h)}}function i(c,f){o(c,te({},t.state,Zr(r.value.back,c,r.value.forward,!0),f,{position:r.value.position}),!0),s.value=c}function l(c,f){const a=te({},r.value,t.state,{forward:c,scroll:Zn()});o(a.current,a,!0),o(c,te({},Zr(s.value,c,null),{position:a.position+1},f),!1),s.value=c}return{location:s,state:r,push:l,replace:i}}function iu(e){e=Ka(e);const t=ou(e),n=ru(e,t.state,t.location,t.replace);function s(o,i=!0){i||n.pauseListeners(),history.go(o)}const r=te({location:"",base:e,go:s,createHref:$a.bind(null,e)},t,n);return Object.defineProperty(r,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(r,"state",{enumerable:!0,get:()=>t.state.value}),r}let Nt=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e})({});var he=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.ParamRegExp=2]="ParamRegExp",e[e.ParamRegExpEnd=3]="ParamRegExpEnd",e[e.EscapeNext=4]="EscapeNext",e})(he||{});const lu={type:Nt.Static,value:""},cu=/[a-zA-Z0-9_]/;function au(e){if(!e)return[[]];if(e==="/")return[[lu]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(g){throw new Error(`ERR (${n})/"${f}": ${g}`)}let n=he.Static,s=n;const r=[];let o;function i(){o&&r.push(o),o=[]}let l=0,c,f="",a="";function d(){f&&(n===he.Static?o.push({type:Nt.Static,value:f}):n===he.Param||n===he.ParamRegExp||n===he.ParamRegExpEnd?(o.length>1&&(c==="*"||c==="+")&&t(`A repeatable param (${f}) must be alone in its segment. eg: '/:ids+.`),o.push({type:Nt.Param,value:f,regexp:a,repeatable:c==="*"||c==="+",optional:c==="*"||c==="?"})):t("Invalid state to consume buffer"),f="")}function h(){f+=c}for(;l<e.length;){if(c=e[l++],c==="\\"&&n!==he.ParamRegExp){s=n,n=he.EscapeNext;continue}switch(n){case he.Static:c==="/"?(f&&d(),i()):c===":"?(d(),n=he.Param):h();break;case he.EscapeNext:h(),n=s;break;case he.Param:c==="("?n=he.ParamRegExp:cu.test(c)?h():(d(),n=he.Static,c!=="*"&&c!=="?"&&c!=="+"&&l--);break;case he.ParamRegExp:c===")"?a[a.length-1]=="\\"?a=a.slice(0,-1)+c:n=he.ParamRegExpEnd:a+=c;break;case he.ParamRegExpEnd:d(),n=he.Static,c!=="*"&&c!=="?"&&c!=="+"&&l--,a="";break;default:t("Unknown state");break}}return n===he.ParamRegExp&&t(`Unfinished custom RegExp for param "${f}"`),d(),i(),r}const eo="[^/]+?",uu={sensitive:!1,strict:!1,start:!0,end:!0};var Ce=(function(e){return e[e._multiplier=10]="_multiplier",e[e.Root=90]="Root",e[e.Segment=40]="Segment",e[e.SubSegment=30]="SubSegment",e[e.Static=40]="Static",e[e.Dynamic=20]="Dynamic",e[e.BonusCustomRegExp=10]="BonusCustomRegExp",e[e.BonusWildcard=-50]="BonusWildcard",e[e.BonusRepeatable=-20]="BonusRepeatable",e[e.BonusOptional=-8]="BonusOptional",e[e.BonusStrict=.7000000000000001]="BonusStrict",e[e.BonusCaseSensitive=.25]="BonusCaseSensitive",e})(Ce||{});const fu=/[.+*?^${}()[\]/\\]/g;function du(e,t){const n=te({},uu,t),s=[];let r=n.start?"^":"";const o=[];for(const f of e){const a=f.length?[]:[Ce.Root];n.strict&&!f.length&&(r+="/");for(let d=0;d<f.length;d++){const h=f[d];let g=Ce.Segment+(n.sensitive?Ce.BonusCaseSensitive:0);if(h.type===Nt.Static)d||(r+="/"),r+=h.value.replace(fu,"\\$&"),g+=Ce.Static;else if(h.type===Nt.Param){const{value:v,repeatable:A,optional:M,regexp:D}=h;o.push({name:v,repeatable:A,optional:M});const y=D||eo;if(y!==eo){g+=Ce.BonusCustomRegExp;try{`${y}`}catch(T){throw new Error(`Invalid custom RegExp for param "${v}" (${y}): `+T.message)}}let w=A?`((?:${y})(?:/(?:${y}))*)`:`(${y})`;d||(w=M&&f.length<2?`(?:/${w})`:"/"+w),M&&(w+="?"),r+=w,g+=Ce.Dynamic,M&&(g+=Ce.BonusOptional),A&&(g+=Ce.BonusRepeatable),y===".*"&&(g+=Ce.BonusWildcard)}a.push(g)}s.push(a)}if(n.strict&&n.end){const f=s.length-1;s[f][s[f].length-1]+=Ce.BonusStrict}n.strict||(r+="/?"),n.end?r+="$":n.strict&&!r.endsWith("/")&&(r+="(?:/|$)");const i=new RegExp(r,n.sensitive?"":"i");function l(f){const a=f.match(i),d={};if(!a)return null;for(let h=1;h<a.length;h++){const g=a[h]||"",v=o[h-1];d[v.name]=g&&v.repeatable?g.split("/"):g}return d}function c(f){let a="",d=!1;for(const h of e){(!d||!a.endsWith("/"))&&(a+="/"),d=!1;for(const g of h)if(g.type===Nt.Static)a+=g.value;else if(g.type===Nt.Param){const{value:v,repeatable:A,optional:M}=g,D=v in f?f[v]:"";if(We(D)&&!A)throw new Error(`Provided param "${v}" is an array but it is not repeatable (* or + modifiers)`);const y=We(D)?D.join("/"):D;if(!y)if(M)h.length<2&&(a.endsWith("/")?a=a.slice(0,-1):d=!0);else throw new Error(`Missing required param "${v}"`);a+=y}}return a||"/"}return{re:i,score:s,keys:o,parse:l,stringify:c}}function pu(e,t){let n=0;for(;n<e.length&&n<t.length;){const s=t[n]-e[n];if(s)return s;n++}return e.length<t.length?e.length===1&&e[0]===Ce.Static+Ce.Segment?-1:1:e.length>t.length?t.length===1&&t[0]===Ce.Static+Ce.Segment?1:-1:0}function Fi(e,t){let n=0;const s=e.score,r=t.score;for(;n<s.length&&n<r.length;){const o=pu(s[n],r[n]);if(o)return o;n++}if(Math.abs(r.length-s.length)===1){if(to(s))return 1;if(to(r))return-1}return r.length-s.length}function to(e){const t=e[e.length-1];return e.length>0&&t[t.length-1]<0}const hu={strict:!1,end:!0,sensitive:!1};function gu(e,t,n){const s=du(au(e.path),n),r=te(s,{record:e,parent:t,children:[],alias:[]});return t&&!r.record.aliasOf==!t.record.aliasOf&&t.children.push(r),r}function mu(e,t){const n=[],s=new Map;t=qr(hu,t);function r(d){return s.get(d)}function o(d,h,g){const v=!g,A=so(d);A.aliasOf=g&&g.record;const M=qr(t,d),D=[A];if("alias"in d){const T=typeof d.alias=="string"?[d.alias]:d.alias;for(const H of T)D.push(so(te({},A,{components:g?g.record.components:A.components,path:H,aliasOf:g?g.record:A})))}let y,w;for(const T of D){const{path:H}=T;if(h&&H[0]!=="/"){const W=h.record.path,Q=W[W.length-1]==="/"?"":"/";T.path=h.record.path+(H&&Q+H)}if(y=gu(T,h,M),g?g.alias.push(y):(w=w||y,w!==y&&w.alias.push(y),v&&d.name&&!ro(y)&&i(d.name)),Bi(y)&&c(y),A.children){const W=A.children;for(let Q=0;Q<W.length;Q++)o(W[Q],y,g&&g.children[Q])}g=g||y}return w?()=>{i(w)}:fn}function i(d){if(ki(d)){const h=s.get(d);h&&(s.delete(d),n.splice(n.indexOf(h),1),h.children.forEach(i),h.alias.forEach(i))}else{const h=n.indexOf(d);h>-1&&(n.splice(h,1),d.record.name&&s.delete(d.record.name),d.children.forEach(i),d.alias.forEach(i))}}function l(){return n}function c(d){const h=bu(d,n);n.splice(h,0,d),d.record.name&&!ro(d)&&s.set(d.record.name,d)}function f(d,h){let g,v={},A,M;if("name"in d&&d.name){if(g=s.get(d.name),!g)throw zt(ue.MATCHER_NOT_FOUND,{location:d});M=g.record.name,v=te(no(h.params,g.keys.filter(w=>!w.optional).concat(g.parent?g.parent.keys.filter(w=>w.optional):[]).map(w=>w.name)),d.params&&no(d.params,g.keys.map(w=>w.name))),A=g.stringify(v)}else if(d.path!=null)A=d.path,g=n.find(w=>w.re.test(A)),g&&(v=g.parse(A),M=g.record.name);else{if(g=h.name?s.get(h.name):n.find(w=>w.re.test(h.path)),!g)throw zt(ue.MATCHER_NOT_FOUND,{location:d,currentLocation:h});M=g.record.name,v=te({},h.params,d.params),A=g.stringify(v)}const D=[];let y=g;for(;y;)D.unshift(y.record),y=y.parent;return{name:M,path:A,params:v,matched:D,meta:yu(D)}}e.forEach(d=>o(d));function a(){n.length=0,s.clear()}return{addRoute:o,resolve:f,removeRoute:i,clearRoutes:a,getRoutes:l,getRecordMatcher:r}}function no(e,t){const n={};for(const s of t)s in e&&(n[s]=e[s]);return n}function so(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:vu(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function vu(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const s in e.components)t[s]=typeof n=="object"?n[s]:n;return t}function ro(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function yu(e){return e.reduce((t,n)=>te(t,n.meta),{})}function bu(e,t){let n=0,s=t.length;for(;n!==s;){const o=n+s>>1;Fi(e,t[o])<0?s=o:n=o+1}const r=_u(e);return r&&(s=t.lastIndexOf(r,s-1)),s}function _u(e){let t=e;for(;t=t.parent;)if(Bi(t)&&Fi(e,t)===0)return t}function Bi({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function oo(e){const t=Ke(er),n=Ke(tr),s=be(()=>{const c=Y(e.to);return t.resolve(c)}),r=be(()=>{const{matched:c}=s.value,{length:f}=c,a=c[f-1],d=n.matched;if(!a||!d.length)return-1;const h=d.findIndex(qt.bind(null,a));if(h>-1)return h;const g=io(c[f-2]);return f>1&&io(a)===g&&d[d.length-1].path!==g?d.findIndex(qt.bind(null,c[f-2])):h}),o=be(()=>r.value>-1&&Au(n.params,s.value.params)),i=be(()=>r.value>-1&&r.value===n.matched.length-1&&Li(n.params,s.value.params));function l(c={}){if(wu(c)){const f=t[Y(e.replace)?"replace":"push"](Y(e.to)).catch(fn);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>f),f}return Promise.resolve()}return{route:s,href:be(()=>s.value.href),isActive:o,isExactActive:i,navigate:l}}function Su(e){return e.length===1?e[0]:e}const xu=qs({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:oo,setup(e,{slots:t}){const n=Sn(oo(e)),{options:s}=Ke(er),r=be(()=>({[lo(e.activeClass,s.linkActiveClass,"router-link-active")]:n.isActive,[lo(e.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const o=t.default&&Su(t.default(n));return e.custom?o:Xs("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:r.value},o)}}}),Eu=xu;function wu(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function Au(e,t){for(const n in t){const s=t[n],r=e[n];if(typeof s=="string"){if(s!==r)return!1}else if(!We(r)||r.length!==s.length||s.some((o,i)=>o.valueOf()!==r[i].valueOf()))return!1}return!0}function io(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const lo=(e,t,n)=>e??t??n,Cu=qs({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const s=Ke(Ns),r=be(()=>e.route||s.value),o=Ke(Xr,0),i=be(()=>{let f=Y(o);const{matched:a}=r.value;let d;for(;(d=a[f])&&!d.components;)f++;return f}),l=be(()=>r.value.matched[i.value]);Pn(Xr,be(()=>i.value+1)),Pn(tu,l),Pn(Ns,r);const c=On();return on(()=>[c.value,l.value,e.name],([f,a,d],[h,g,v])=>{a&&(a.instances[d]=f,g&&g!==a&&f&&f===h&&(a.leaveGuards.size||(a.leaveGuards=g.leaveGuards),a.updateGuards.size||(a.updateGuards=g.updateGuards))),f&&a&&(!g||!qt(a,g)||!h)&&(a.enterCallbacks[d]||[]).forEach(A=>A(f))},{flush:"post"}),()=>{const f=r.value,a=e.name,d=l.value,h=d&&d.components[a];if(!h)return co(n.default,{Component:h,route:f});const g=d.props[a],v=g?g===!0?f.params:typeof g=="function"?g(f):g:null,M=Xs(h,te({},v,t,{onVnodeUnmounted:D=>{D.component.isUnmounted&&(d.instances[a]=null)},ref:c}));return co(n.default,{Component:M,route:f})||M}}});function co(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const Ru=Cu;function Tu(e){const t=mu(e.routes,e),n=e.parseQuery||Za,s=e.stringifyQuery||Yr,r=e.history,o=Zt(),i=Zt(),l=Zt(),c=_l(bt);let f=bt;Vt&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const a=ps.bind(null,S=>""+S),d=ps.bind(null,Ma),h=ps.bind(null,bn);function g(S,k){let I,F;return ki(S)?(I=t.getRecordMatcher(S),F=k):F=S,t.addRoute(F,I)}function v(S){const k=t.getRecordMatcher(S);k&&t.removeRoute(k)}function A(){return t.getRoutes().map(S=>S.record)}function M(S){return!!t.getRecordMatcher(S)}function D(S,k){if(k=te({},k||c.value),typeof S=="string"){const m=hs(n,S,k.path),b=t.resolve({path:m.path},k),x=r.createHref(m.fullPath);return te(m,b,{params:h(b.params),hash:bn(m.hash),redirectedFrom:void 0,href:x})}let I;if(S.path!=null)I=te({},S,{path:hs(n,S.path,k.path).path});else{const m=te({},S.params);for(const b in m)m[b]==null&&delete m[b];I=te({},S,{params:d(m)}),k.params=d(k.params)}const F=t.resolve(I,k),q=S.hash||"";F.params=a(h(F.params));const u=Ha(s,te({},S,{hash:La(q),path:F.path})),p=r.createHref(u);return te({fullPath:u,hash:q,query:s===Yr?eu(S.query):S.query||{}},F,{redirectedFrom:void 0,href:p})}function y(S){return typeof S=="string"?hs(n,S,c.value.path):te({},S)}function w(S,k){if(f!==S)return zt(ue.NAVIGATION_CANCELLED,{from:k,to:S})}function T(S){return Q(S)}function H(S){return T(te(y(S),{replace:!0}))}function W(S,k){const I=S.matched[S.matched.length-1];if(I&&I.redirect){const{redirect:F}=I;let q=typeof F=="function"?F(S,k):F;return typeof q=="string"&&(q=q.includes("?")||q.includes("#")?q=y(q):{path:q},q.params={}),te({query:S.query,hash:S.hash,params:q.path!=null?{}:S.params},q)}}function Q(S,k){const I=f=D(S),F=c.value,q=S.state,u=S.force,p=S.replace===!0,m=W(I,F);if(m)return Q(te(y(m),{state:typeof m=="object"?te({},q,m.state):q,force:u,replace:p}),k||I);const b=I;b.redirectedFrom=k;let x;return!u&&ja(s,F,I)&&(x=zt(ue.NAVIGATION_DUPLICATED,{to:b,from:F}),qe(F,F,!0,!1)),(x?Promise.resolve(x):J(b,F)).catch(_=>ct(_)?ct(_,ue.NAVIGATION_GUARD_REDIRECT)?_:vt(_):ee(_,b,F)).then(_=>{if(_){if(ct(_,ue.NAVIGATION_GUARD_REDIRECT))return Q(te({replace:p},y(_.to),{state:typeof _.to=="object"?te({},q,_.to.state):q,force:u}),k||b)}else _=L(b,F,!0,p,q);return le(b,F,_),_})}function U(S,k){const I=w(S,k);return I?Promise.reject(I):Promise.resolve()}function G(S){const k=Ft.values().next().value;return k&&typeof k.runWithContext=="function"?k.runWithContext(S):S()}function J(S,k){let I;const[F,q,u]=nu(S,k);I=ms(F.reverse(),"beforeRouteLeave",S,k);for(const m of F)m.leaveGuards.forEach(b=>{I.push(St(b,S,k))});const p=U.bind(null,S,k);return I.push(p),He(I).then(()=>{I=[];for(const m of o.list())I.push(St(m,S,k));return I.push(p),He(I)}).then(()=>{I=ms(q,"beforeRouteUpdate",S,k);for(const m of q)m.updateGuards.forEach(b=>{I.push(St(b,S,k))});return I.push(p),He(I)}).then(()=>{I=[];for(const m of u)if(m.beforeEnter)if(We(m.beforeEnter))for(const b of m.beforeEnter)I.push(St(b,S,k));else I.push(St(m.beforeEnter,S,k));return I.push(p),He(I)}).then(()=>(S.matched.forEach(m=>m.enterCallbacks={}),I=ms(u,"beforeRouteEnter",S,k,G),I.push(p),He(I))).then(()=>{I=[];for(const m of i.list())I.push(St(m,S,k));return I.push(p),He(I)}).catch(m=>ct(m,ue.NAVIGATION_CANCELLED)?m:Promise.reject(m))}function le(S,k,I){l.list().forEach(F=>G(()=>F(S,k,I)))}function L(S,k,I,F,q){const u=w(S,k);if(u)return u;const p=k===bt,m=Vt?history.state:{};I&&(F||p?r.replace(S.fullPath,te({scroll:p&&m&&m.scroll},q)):r.push(S.fullPath,q)),c.value=S,qe(S,k,I,p),vt()}let Z;function me(){Z||(Z=r.listen((S,k,I)=>{if(!wt.listening)return;const F=D(S),q=W(F,wt.currentRoute.value);if(q){Q(te(q,{replace:!0,force:!0}),F).catch(fn);return}f=F;const u=c.value;Vt&&za(Jr(u.fullPath,I.delta),Zn()),J(F,u).catch(p=>ct(p,ue.NAVIGATION_ABORTED|ue.NAVIGATION_CANCELLED)?p:ct(p,ue.NAVIGATION_GUARD_REDIRECT)?(Q(te(y(p.to),{force:!0}),F).then(m=>{ct(m,ue.NAVIGATION_ABORTED|ue.NAVIGATION_DUPLICATED)&&!I.delta&&I.type===Ps.pop&&r.go(-1,!1)}).catch(fn),Promise.reject()):(I.delta&&r.go(-I.delta,!1),ee(p,F,u))).then(p=>{p=p||L(F,u,!1),p&&(I.delta&&!ct(p,ue.NAVIGATION_CANCELLED)?r.go(-I.delta,!1):I.type===Ps.pop&&ct(p,ue.NAVIGATION_ABORTED|ue.NAVIGATION_DUPLICATED)&&r.go(-1,!1)),le(F,u,p)}).catch(fn)}))}let De=Zt(),fe=Zt(),re;function ee(S,k,I){vt(S);const F=fe.list();return F.length?F.forEach(q=>q(S,k,I)):console.error(S),Promise.reject(S)}function ot(){return re&&c.value!==bt?Promise.resolve():new Promise((S,k)=>{De.add([S,k])})}function vt(S){return re||(re=!S,me(),De.list().forEach(([k,I])=>S?I(S):k()),De.reset()),S}function qe(S,k,I,F){const{scrollBehavior:q}=e;if(!Vt||!q)return Promise.resolve();const u=!I&&Qa(Jr(S.fullPath,0))||(F||!I)&&history.state&&history.state.scroll||null;return Bo().then(()=>q(S,k,u)).then(p=>p&&qa(p)).catch(p=>ee(p,S,k))}const Ie=S=>r.go(S);let Mt;const Ft=new Set,wt={currentRoute:c,listening:!0,addRoute:g,removeRoute:v,clearRoutes:t.clearRoutes,hasRoute:M,getRoutes:A,resolve:D,options:e,push:T,replace:H,go:Ie,back:()=>Ie(-1),forward:()=>Ie(1),beforeEach:o.add,beforeResolve:i.add,afterEach:l.add,onError:fe.add,isReady:ot,install(S){S.component("RouterLink",Eu),S.component("RouterView",Ru),S.config.globalProperties.$router=wt,Object.defineProperty(S.config.globalProperties,"$route",{enumerable:!0,get:()=>Y(c)}),Vt&&!Mt&&c.value===bt&&(Mt=!0,T(r.location).catch(F=>{}));const k={};for(const F in bt)Object.defineProperty(k,F,{get:()=>c.value[F],enumerable:!0});S.provide(er,wt),S.provide(tr,ko(k)),S.provide(Ns,c);const I=S.unmount;Ft.add(S),S.unmount=function(){Ft.delete(S),Ft.size<1&&(f=bt,Z&&Z(),Z=null,c.value=bt,Mt=!1,re=!1),I()}}};function He(S){return S.reduce((k,I)=>k.then(()=>G(I)),Promise.resolve())}return wt}function Ou(e){return Ke(tr)}const Pu=()=>Ci(()=>import("./CatalogPage-BVGkKQWg.js"),[]),Iu=()=>Ci(()=>import("./SkillDetailPage-CbIWg9lz.js"),[]);function Nu(e){return Tu({history:iu(),routes:[{path:"/",name:"catalog",component:Pu},{path:"/skills/:skillId",name:"skill-detail",component:Iu,props:!0}],scrollBehavior(){return{top:0}}})}function Lu(e){async function t(n,s={}){var l;const r=new URL(n,window.location.origin);s.query?r.search=s.query.toString():(s.method===void 0||s.method==="GET"||s.method==="DELETE")&&r.searchParams.set("scope",e.getScope());const o=await fetch(r,{method:s.method||"GET",headers:{"x-skillex-token":e.token,...s.body?{"content-type":"application/json"}:{}},body:s.body?JSON.stringify({...s.body,scope:e.getScope()}):void 0}),i=await o.json().catch(()=>({}));if(!o.ok)throw new Error(((l=i.error)==null?void 0:l.message)||`Request failed with ${o.status}`);return i}return{getState(){return t("/api/state")},getCatalog(){return t("/api/catalog")},getSkillDetail(n){return t(`/api/catalog/${encodeURIComponent(n)}`)},getSources(){return t("/api/sources")},installSkill(n,s){return t("/api/install",{method:"POST",body:{skillIds:[n],...s!=null&&s.repo?{repo:s.repo}:{},...s!=null&&s.ref?{ref:s.ref}:{}}})},removeSkill(n){return t("/api/remove",{method:"POST",body:{skillIds:[n]}})},updateSkill(n){return t("/api/update",{method:"POST",body:n?{skillIds:[n]}:{}})},syncSkills(n){return t("/api/sync",{method:"POST",body:n==="all"?{}:{adapter:n}})},addSource(n){return t("/api/sources",{method:"POST",body:n})},removeSource(n){const s=new URLSearchParams;return s.set("scope",e.getScope()),t(`/api/sources/${encodeURIComponent(n)}`,{method:"DELETE",query:s})}}}function ku(e){return Object.values(e||{}).sort((t,n)=>n.syncedAt.localeCompare(t.syncedAt))}function ao(e){return e instanceof Error?e.message:String(e)}const Hi=Symbol("skillex-store");function Du(e,t){const n=Sn({bootstrap:t,scope:t.initialScope,syncAdapter:"all",searchQuery:"",dashboard:null,catalog:null,detail:null,detailLoading:!1,initialized:!1,busyLabel:null,notice:null,toast:{visible:!1,tone:"info",message:""}}),s=Lu({token:t.token,getScope:()=>n.scope});let r=null;function o(){return{token:t.token,scope:n.scope}}function i(y,w){n.notice={message:y,tone:w},n.toast.visible=!0,n.toast.message=y,n.toast.tone=w,r&&clearTimeout(r),r=setTimeout(()=>{n.toast.visible=!1},2600)}async function l(){const[y,w]=await Promise.all([s.getState(),s.getCatalog()]);n.dashboard=y,n.catalog=w}async function c(y){await l(),y&&await h(y)}async function f(y,w,T){n.busyLabel=y;try{await w(),await c(T),i(`${y} complete.`,"success")}catch(H){const W=ao(H);throw n.notice={message:W,tone:"error"},i(W,"error"),H}finally{n.busyLabel=null}}async function a(){n.detail=null,await e.push({name:"catalog",query:o()})}async function d(y){await e.push({name:"skill-detail",params:{skillId:y},query:o()})}async function h(y){n.detailLoading=!0;try{n.detail=await s.getSkillDetail(y)}catch(w){throw n.detail=null,i(ao(w),"error"),w}finally{n.detailLoading=!1}}async function g(y){if(n.initialized){y&&await h(y);return}n.initialized=!0,await l(),y&&await h(y)}async function v(y){if(n.scope===y)return;n.scope=y;const w=typeof e.currentRoute.value.params.skillId=="string"?e.currentRoute.value.params.skillId:null;w?await e.replace({name:"skill-detail",params:{skillId:w},query:o()}):await e.replace({name:"catalog",query:o()}),await c(w)}const A=be(()=>{var T;const y=((T=n.catalog)==null?void 0:T.skills)||[],w=n.searchQuery.trim().toLowerCase();return w?y.filter(H=>[H.id,H.name,H.description,H.author||"",H.source.label||"",H.source.repo,...H.tags,...H.compatibility].join(" ").toLowerCase().includes(w)):y}),M=be(()=>{var w;const y=((w=n.dashboard)==null?void 0:w.adapters.supported)||[];return[{value:"all",label:"All detected"},...y.map(T=>({value:T.id,label:T.label}))]}),D=be(()=>{var y;return ku(((y=n.dashboard)==null?void 0:y.syncHistory)||{})});return{state:n,filteredSkills:A,availableSyncAdapters:M,recentSyncTargets:D,initialize:g,refreshAll:l,async loadSkillDetail(y){await h(y)},clearDetail(){n.detail=null},async navigateHome(){await a()},async navigateToSkill(y){await d(y)},async setScope(y){await v(y)},setSyncAdapter(y){n.syncAdapter=y||"all"},async installSkill(y){var w;await f(`Installed ${y.name}`,()=>s.installSkill(y.id,{repo:y.source.repo,ref:y.source.ref}),((w=n.detail)==null?void 0:w.skill.id)||null)},async removeSkill(y){var T;const w=((T=n.detail)==null?void 0:T.skill.id)||null;await f(`Removed ${y}`,()=>s.removeSkill(y),w===y?null:w),w===y&&(n.detail=null,await a())},async updateSkill(y){var w;await f(y?`Updated ${y}`:"Updated installed skills",()=>s.updateSkill(y),((w=n.detail)==null?void 0:w.skill.id)||null)},async syncNow(){var y;await f("Sync finished",()=>s.syncSkills(n.syncAdapter),((y=n.detail)==null?void 0:y.skill.id)||null)},async addSource(y){var w;await f(`Added ${y.repo}`,()=>s.addSource(y),((w=n.detail)==null?void 0:w.skill.id)||null)},async removeSource(y){var w;await f(`Removed ${y}`,()=>s.removeSource(y),((w=n.detail)==null?void 0:w.skill.id)||null)},setSearchQuery(y){n.searchQuery=y},clearNotice(){n.notice=null}}}function Mu(){const e=Ke(Hi);if(!e)throw new Error("Skillex store was not provided.");return e}function Fu(){const e=window.__SKILLEX_BOOTSTRAP__,t=typeof e=="string"?e==="__SKILLEX_BOOTSTRAP__"?null:JSON.parse(e):e;if(!t||typeof t!="object"||!("token"in t)||!("initialScope"in t))throw new Error("Missing Skillex Web UI bootstrap payload.");return{token:String(t.token),initialScope:t.initialScope==="global"?"global":"local",initialSkillId:t.initialSkillId?String(t.initialSkillId):null}}const Bu={class:"app-shell"},Hu={class:"sidebar"},ju={class:"sidebar-nav"},Vu={key:0,class:"nav-badge"},Uu={style:{padding:"0 10px 8px",display:"flex","flex-wrap":"wrap",gap:"5px"}},Ku={key:0,style:{"font-size":"11px",color:"var(--text-dim)",padding:"2px 0"}},Gu={class:"nav-section-label",style:{"font-size":"9px","margin-bottom":"4px",color:"var(--text-dim)"}},$u={style:{padding:"0 10px 8px",display:"grid",gap:"4px"}},Wu={style:{margin:"0","font-size":"11px","font-weight":"600",color:"var(--text)"}},qu={style:{margin:"2px 0 0","font-size":"10px",color:"var(--text-dim)","font-family":"monospace"}},zu=["onClick"],Qu={key:0,style:{"font-size":"11px",color:"var(--text-dim)",padding:"2px 0"}},Ju={style:{padding:"0 10px 8px",display:"grid",gap:"4px"}},Yu={style:{display:"flex","justify-content":"space-between",gap:"6px"}},Xu={style:{"font-size":"11px","font-weight":"600",color:"var(--text)"}},Zu={style:{"font-size":"10px",color:"var(--text-dim)"}},ef={style:{margin:"2px 0 0","font-size":"10px",color:"var(--text-dim)","font-family":"monospace","word-break":"break-all"}},tf={key:0,style:{"font-size":"11px",color:"var(--text-dim)",padding:"2px 0"}},nf={class:"sidebar-footer"},sf={class:"adapter-badge"},rf={class:"adapter-badge-icon"},of={class:"adapter-badge-info"},lf={class:"adapter-badge-name"},cf={class:"sidebar-meta"},af={style:{"font-family":"monospace"}},uf={class:"main-col"},ff={class:"topbar"},df={class:"search-shell"},pf=["value"],hf={class:"toggle-group"},gf={class:"toggle-group"},mf=["title","onClick"],vf={class:"topbar-actions"},yf=["data-tone"],bf={class:"workspace-layout"},_f=["data-tone"],Sf={class:"toast-content"},xf={class:"toast-icon"},Ef={key:0,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},wf={key:1,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},Af={class:"toast-text"},Cf={key:0,class:"busy-overlay"},Rf={class:"busy-card"},Tf=qs({__name:"App",setup(e){const t=Mu(),n=Ou(),s=On(""),r=On(""),o=On(""),i=be(()=>t.state.dashboard),l=be(()=>t.state.catalog),c=be(()=>t.recentSyncTargets.value),f=[{value:"claude",label:"Claude",icon:"🤖"},{value:"cursor",label:"Cursor",icon:"⚡"},{value:"copilot",label:"Copilot",icon:"🐙"},{value:"cline",label:"Cline",icon:"🔵"},{value:"codex",label:"Codex",icon:"🧠"},{value:"gemini",label:"Gemini",icon:"✨"},{value:"windsurf",label:"Windsurf",icon:"🏄"}],a=be(()=>{const g=t.state.syncAdapter;return f.find(v=>v.value===g)??{value:g,label:g||"Auto",icon:"🔧"}});function d(g){return new Date(g).toLocaleString(void 0,{dateStyle:"medium",timeStyle:"short"})}async function h(){const g=s.value.trim();g&&(await t.addSource({repo:g,ref:r.value.trim()||void 0,label:o.value.trim()||void 0}),s.value="",r.value="",o.value="")}return on(()=>n.query.scope,g=>{(g==="global"||g==="local")&&t.setScope(g)}),zs(async()=>{const g=typeof n.params.skillId=="string"?n.params.skillId:null;await t.initialize(g)}),(g,v)=>{var M,D,y,w,T,H,W,Q;const A=Ql("RouterView");return ye(),Se("div",Bu,[v[30]||(v[30]=R("div",{class:"shell-background"},[R("div",{class:"shell-glow shell-glow-left"}),R("div",{class:"shell-glow shell-glow-right"}),R("div",{class:"shell-grid"})],-1)),R("aside",Hu,[v[19]||(v[19]=R("div",{class:"sidebar-logo"},[R("svg",{width:"18",height:"18",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M20 7l-8-4-8 4m16 0l-8 4m8-4v10l-8 4m0-10L4 7m8 4v10M4 7v10l8 4"})]),tn(" skillex"),R("span",{class:"accent-dot"},".")],-1)),R("nav",ju,[v[13]||(v[13]=R("p",{class:"nav-section-label"},"Explorar",-1)),R("button",{class:xt(["nav-btn",{active:g.$route.name==="catalog"}]),type:"button",onClick:v[0]||(v[0]=U=>Y(t).navigateHome())},[...v[9]||(v[9]=[R("svg",{width:"16",height:"16",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})],-1),tn(" Marketplace ",-1)])],2),R("button",{class:xt(["nav-btn",{active:!1}]),type:"button",onClick:v[1]||(v[1]=U=>Y(t).navigateHome())},[v[10]||(v[10]=R("svg",{width:"16",height:"16",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M5 13l4 4L19 7"})],-1)),v[11]||(v[11]=tn(" Instaladas ",-1)),(((M=i.value)==null?void 0:M.installed.length)??0)>0?(ye(),Se("span",Vu,ve((D=i.value)==null?void 0:D.installed.length),1)):Rt("",!0)]),v[14]||(v[14]=R("p",{class:"nav-section-label"},"Workspace",-1)),v[15]||(v[15]=R("p",{class:"nav-section-label",style:{"font-size":"9px","margin-top":"8px","margin-bottom":"4px",color:"var(--text-dim)"}}," Adapters detectados ",-1)),R("div",Uu,[(ye(!0),Se(ke,null,Rn(((y=i.value)==null?void 0:y.adapters.detected)??[],U=>(ye(),Se("span",{key:U,class:"chip chip-accent",style:{height:"22px","font-size":"10px"}},ve(U),1))),128)),(((w=i.value)==null?void 0:w.adapters.detected.length)??0)===0?(ye(),Se("span",Ku," Nenhum ")):Rt("",!0)]),R("p",Gu," Sources ("+ve(((T=i.value)==null?void 0:T.sources.length)??0)+") ",1),R("form",{style:{padding:"0 10px 8px",display:"grid",gap:"5px"},onSubmit:ga(h,["prevent"])},[Pl(R("input",{"onUpdate:modelValue":v[2]||(v[2]=U=>s.value=U),type:"text",placeholder:"owner/repo",style:{width:"100%",padding:"6px 8px",border:"1px solid rgba(63,63,70,0.5)","border-radius":"8px",background:"rgba(9,9,11,0.6)",color:"#f4f4f5","font-size":"11px",outline:"none"}},null,512),[[da,s.value]]),v[12]||(v[12]=R("button",{class:"button button-primary",type:"submit",style:{"min-height":"28px",padding:"0 10px","font-size":"11px",width:"100%"}}," + Add source ",-1))],32),R("div",$u,[(ye(!0),Se(ke,null,Rn(((H=i.value)==null?void 0:H.sources)??[],U=>(ye(),Se("div",{key:U.repo,style:{display:"flex","align-items":"center","justify-content":"space-between",padding:"6px 8px","border-radius":"8px",background:"rgba(39,39,42,0.4)",border:"1px solid rgba(63,63,70,0.3)"}},[R("div",null,[R("p",Wu,ve(U.label||U.repo),1),R("p",qu,"@"+ve(U.ref),1)]),R("button",{type:"button",onClick:G=>Y(t).removeSource(U.repo),style:{padding:"3px 6px","font-size":"10px",border:"1px solid rgba(248,113,113,0.2)","border-radius":"6px",background:"transparent",color:"var(--danger)",cursor:"pointer"}}," × ",8,zu)]))),128)),(((W=i.value)==null?void 0:W.sources.length)??0)===0?(ye(),Se("p",Qu," Nenhuma source. ")):Rt("",!0)]),v[16]||(v[16]=R("p",{class:"nav-section-label",style:{"font-size":"9px","margin-bottom":"4px",color:"var(--text-dim)"}},"Histórico sync",-1)),R("div",Ju,[(ye(!0),Se(ke,null,Rn(c.value.slice(0,3),U=>(ye(),Se("div",{key:`${U.adapter}-${U.syncedAt}`,style:{padding:"6px 8px","border-radius":"8px",background:"rgba(39,39,42,0.4)",border:"1px solid rgba(63,63,70,0.3)"}},[R("div",Yu,[R("span",Xu,ve(U.adapter),1),R("span",Zu,ve(d(U.syncedAt)),1)]),R("p",ef,ve(U.targetPath),1)]))),128)),c.value.length===0?(ye(),Se("p",tf," Nenhum sync ainda. ")):Rt("",!0)])]),R("div",nf,[R("div",sf,[R("span",rf,ve(a.value.icon),1),R("div",of,[v[17]||(v[17]=R("p",{class:"adapter-badge-label"},"Agente ativo",-1)),R("p",lf,ve(a.value.label),1)]),v[18]||(v[18]=R("span",{class:"adapter-badge-dot"},null,-1))]),R("div",cf,[R("span",af,"v"+ve(((Q=l.value)!=null&&Q.formatVersion,"0.2.4")),1),R("span",null,ve(Y(t).state.scope),1)])])]),R("div",uf,[R("header",ff,[R("div",df,[v[20]||(v[20]=R("svg",{fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})],-1)),R("input",{value:Y(t).state.searchQuery,type:"search",placeholder:"Buscar skills...",onInput:v[3]||(v[3]=U=>Y(t).setSearchQuery(U.target.value))},null,40,pf),v[21]||(v[21]=R("span",{class:"search-kbd"},"⌘K",-1))]),R("div",hf,[R("button",{class:xt(["toggle-btn",{active:Y(t).state.scope==="local"}]),type:"button",onClick:v[4]||(v[4]=U=>Y(t).setScope("local"))}," 📁 Local ",2),R("button",{class:xt(["toggle-btn",{active:Y(t).state.scope==="global"}]),type:"button",onClick:v[5]||(v[5]=U=>Y(t).setScope("global"))}," 🌍 Global ",2)]),v[23]||(v[23]=R("div",{class:"topbar-divider"},null,-1)),R("div",gf,[(ye(),Se(ke,null,Rn(f,U=>R("button",{key:U.value,class:xt(["adapter-toggle-btn",{active:Y(t).state.syncAdapter===U.value}]),title:U.label,type:"button",onClick:G=>Y(t).setSyncAdapter(U.value)},ve(U.icon),11,mf)),64))]),v[24]||(v[24]=R("div",{class:"topbar-divider"},null,-1)),R("div",vf,[R("button",{class:"button button-ghost",type:"button",onClick:v[6]||(v[6]=U=>Y(t).refreshAll())},[...v[22]||(v[22]=[R("svg",{width:"13",height:"13",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),tn(" Refresh ",-1)])]),R("button",{class:"button button-secondary",type:"button",onClick:v[7]||(v[7]=U=>Y(t).updateSkill())}," Update "),R("button",{class:"button button-primary",type:"button",onClick:v[8]||(v[8]=U=>Y(t).syncNow())}," Sync now ")])]),Y(t).state.notice?(ye(),Se("div",{key:0,class:"status-banner","data-tone":Y(t).state.notice.tone},ve(Y(t).state.notice.message),9,yf)):Rt("",!0),R("div",bf,[Oe(A)])]),Oe(Gc,{name:"toast"},{default:Ko(()=>[Y(t).state.toast.visible?(ye(),Se("div",{key:0,class:"toast","data-tone":Y(t).state.toast.tone},[R("div",Sf,[R("div",xf,[Y(t).state.toast.tone==="success"?(ye(),Se("svg",Ef,[...v[25]||(v[25]=[R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2.5",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"},null,-1)])])):(ye(),Se("svg",wf,[...v[26]||(v[26]=[R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"},null,-1)])]))]),R("div",Af,[R("strong",null,ve(Y(t).state.toast.tone==="error"?"Erro":"Concluído"),1),R("span",null,ve(Y(t).state.toast.message),1)])]),v[27]||(v[27]=R("div",{class:"toast-bar"},null,-1))],8,_f)):Rt("",!0)]),_:1}),Y(t).state.busyLabel?(ye(),Se("div",Cf,[R("div",Rf,[v[28]||(v[28]=R("div",{class:"busy-spinner"},null,-1)),R("strong",null,ve(Y(t).state.busyLabel),1),v[29]||(v[29]=R("span",null,"Aguarde...",-1))])])):Rt("",!0)])}}}),Of=Fu(),ji=Nu(),Pf=Du(ji,Of),nr=ya(Tf);nr.provide(Hi,Pf);nr.use(ji);nr.mount("#app");export{ke as F,R as a,tn as b,Se as c,qs as d,Rt as e,Y as f,be as g,On as h,Ac as i,Ou as j,on as k,zs as l,Fs as m,xt as n,ye as o,Rn as r,ve as t,Mu as u,ga as w};
25
+ */let su=()=>location.protocol+"//"+location.host;function Mi(e,t){const{pathname:n,search:s,hash:r}=t,o=e.indexOf("#");if(o>-1){let i=r.includes(e.slice(o))?e.slice(o).length:1,l=r.slice(i);return l[0]!=="/"&&(l="/"+l),zr(l,"")}return zr(n,e)+s+r}function ru(e,t,n,s){let r=[],o=[],i=null;const l=({state:h})=>{const g=Mi(e,location),v=n.value,A=t.value;let M=0;if(h){if(n.value=g,t.value=h,i&&i===v){i=null;return}M=A?h.position-A.position:0}else s(g);r.forEach(D=>{D(n.value,v,{delta:M,type:Ps.pop,direction:M?M>0?gs.forward:gs.back:gs.unknown})})};function c(){i=n.value}function f(h){r.push(h);const g=()=>{const v=r.indexOf(h);v>-1&&r.splice(v,1)};return o.push(g),g}function a(){if(document.visibilityState==="hidden"){const{history:h}=window;if(!h.state)return;h.replaceState(te({},h.state,{scroll:Zn()}),"")}}function d(){for(const h of o)h();o=[],window.removeEventListener("popstate",l),window.removeEventListener("pagehide",a),document.removeEventListener("visibilitychange",a)}return window.addEventListener("popstate",l),window.addEventListener("pagehide",a),document.addEventListener("visibilitychange",a),{pauseListeners:c,listen:f,destroy:d}}function Zr(e,t,n,s=!1,r=!1){return{back:e,current:t,forward:n,replaced:s,position:window.history.length,scroll:r?Zn():null}}function ou(e){const{history:t,location:n}=window,s={value:Mi(e,n)},r={value:t.state};r.value||o(s.value,{back:null,current:s.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function o(c,f,a){const d=e.indexOf("#"),h=d>-1?(n.host&&document.querySelector("base")?e:e.slice(d))+c:su()+e+c;try{t[a?"replaceState":"pushState"](f,"",h),r.value=f}catch(g){console.error(g),n[a?"replace":"assign"](h)}}function i(c,f){o(c,te({},t.state,Zr(r.value.back,c,r.value.forward,!0),f,{position:r.value.position}),!0),s.value=c}function l(c,f){const a=te({},r.value,t.state,{forward:c,scroll:Zn()});o(a.current,a,!0),o(c,te({},Zr(s.value,c,null),{position:a.position+1},f),!1),s.value=c}return{location:s,state:r,push:l,replace:i}}function iu(e){e=Ka(e);const t=ou(e),n=ru(e,t.state,t.location,t.replace);function s(o,i=!0){i||n.pauseListeners(),history.go(o)}const r=te({location:"",base:e,go:s,createHref:$a.bind(null,e)},t,n);return Object.defineProperty(r,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(r,"state",{enumerable:!0,get:()=>t.state.value}),r}let Nt=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e})({});var he=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.ParamRegExp=2]="ParamRegExp",e[e.ParamRegExpEnd=3]="ParamRegExpEnd",e[e.EscapeNext=4]="EscapeNext",e})(he||{});const lu={type:Nt.Static,value:""},cu=/[a-zA-Z0-9_]/;function au(e){if(!e)return[[]];if(e==="/")return[[lu]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(g){throw new Error(`ERR (${n})/"${f}": ${g}`)}let n=he.Static,s=n;const r=[];let o;function i(){o&&r.push(o),o=[]}let l=0,c,f="",a="";function d(){f&&(n===he.Static?o.push({type:Nt.Static,value:f}):n===he.Param||n===he.ParamRegExp||n===he.ParamRegExpEnd?(o.length>1&&(c==="*"||c==="+")&&t(`A repeatable param (${f}) must be alone in its segment. eg: '/:ids+.`),o.push({type:Nt.Param,value:f,regexp:a,repeatable:c==="*"||c==="+",optional:c==="*"||c==="?"})):t("Invalid state to consume buffer"),f="")}function h(){f+=c}for(;l<e.length;){if(c=e[l++],c==="\\"&&n!==he.ParamRegExp){s=n,n=he.EscapeNext;continue}switch(n){case he.Static:c==="/"?(f&&d(),i()):c===":"?(d(),n=he.Param):h();break;case he.EscapeNext:h(),n=s;break;case he.Param:c==="("?n=he.ParamRegExp:cu.test(c)?h():(d(),n=he.Static,c!=="*"&&c!=="?"&&c!=="+"&&l--);break;case he.ParamRegExp:c===")"?a[a.length-1]=="\\"?a=a.slice(0,-1)+c:n=he.ParamRegExpEnd:a+=c;break;case he.ParamRegExpEnd:d(),n=he.Static,c!=="*"&&c!=="?"&&c!=="+"&&l--,a="";break;default:t("Unknown state");break}}return n===he.ParamRegExp&&t(`Unfinished custom RegExp for param "${f}"`),d(),i(),r}const eo="[^/]+?",uu={sensitive:!1,strict:!1,start:!0,end:!0};var Ce=(function(e){return e[e._multiplier=10]="_multiplier",e[e.Root=90]="Root",e[e.Segment=40]="Segment",e[e.SubSegment=30]="SubSegment",e[e.Static=40]="Static",e[e.Dynamic=20]="Dynamic",e[e.BonusCustomRegExp=10]="BonusCustomRegExp",e[e.BonusWildcard=-50]="BonusWildcard",e[e.BonusRepeatable=-20]="BonusRepeatable",e[e.BonusOptional=-8]="BonusOptional",e[e.BonusStrict=.7000000000000001]="BonusStrict",e[e.BonusCaseSensitive=.25]="BonusCaseSensitive",e})(Ce||{});const fu=/[.+*?^${}()[\]/\\]/g;function du(e,t){const n=te({},uu,t),s=[];let r=n.start?"^":"";const o=[];for(const f of e){const a=f.length?[]:[Ce.Root];n.strict&&!f.length&&(r+="/");for(let d=0;d<f.length;d++){const h=f[d];let g=Ce.Segment+(n.sensitive?Ce.BonusCaseSensitive:0);if(h.type===Nt.Static)d||(r+="/"),r+=h.value.replace(fu,"\\$&"),g+=Ce.Static;else if(h.type===Nt.Param){const{value:v,repeatable:A,optional:M,regexp:D}=h;o.push({name:v,repeatable:A,optional:M});const y=D||eo;if(y!==eo){g+=Ce.BonusCustomRegExp;try{`${y}`}catch(T){throw new Error(`Invalid custom RegExp for param "${v}" (${y}): `+T.message)}}let w=A?`((?:${y})(?:/(?:${y}))*)`:`(${y})`;d||(w=M&&f.length<2?`(?:/${w})`:"/"+w),M&&(w+="?"),r+=w,g+=Ce.Dynamic,M&&(g+=Ce.BonusOptional),A&&(g+=Ce.BonusRepeatable),y===".*"&&(g+=Ce.BonusWildcard)}a.push(g)}s.push(a)}if(n.strict&&n.end){const f=s.length-1;s[f][s[f].length-1]+=Ce.BonusStrict}n.strict||(r+="/?"),n.end?r+="$":n.strict&&!r.endsWith("/")&&(r+="(?:/|$)");const i=new RegExp(r,n.sensitive?"":"i");function l(f){const a=f.match(i),d={};if(!a)return null;for(let h=1;h<a.length;h++){const g=a[h]||"",v=o[h-1];d[v.name]=g&&v.repeatable?g.split("/"):g}return d}function c(f){let a="",d=!1;for(const h of e){(!d||!a.endsWith("/"))&&(a+="/"),d=!1;for(const g of h)if(g.type===Nt.Static)a+=g.value;else if(g.type===Nt.Param){const{value:v,repeatable:A,optional:M}=g,D=v in f?f[v]:"";if(We(D)&&!A)throw new Error(`Provided param "${v}" is an array but it is not repeatable (* or + modifiers)`);const y=We(D)?D.join("/"):D;if(!y)if(M)h.length<2&&(a.endsWith("/")?a=a.slice(0,-1):d=!0);else throw new Error(`Missing required param "${v}"`);a+=y}}return a||"/"}return{re:i,score:s,keys:o,parse:l,stringify:c}}function pu(e,t){let n=0;for(;n<e.length&&n<t.length;){const s=t[n]-e[n];if(s)return s;n++}return e.length<t.length?e.length===1&&e[0]===Ce.Static+Ce.Segment?-1:1:e.length>t.length?t.length===1&&t[0]===Ce.Static+Ce.Segment?1:-1:0}function Fi(e,t){let n=0;const s=e.score,r=t.score;for(;n<s.length&&n<r.length;){const o=pu(s[n],r[n]);if(o)return o;n++}if(Math.abs(r.length-s.length)===1){if(to(s))return 1;if(to(r))return-1}return r.length-s.length}function to(e){const t=e[e.length-1];return e.length>0&&t[t.length-1]<0}const hu={strict:!1,end:!0,sensitive:!1};function gu(e,t,n){const s=du(au(e.path),n),r=te(s,{record:e,parent:t,children:[],alias:[]});return t&&!r.record.aliasOf==!t.record.aliasOf&&t.children.push(r),r}function mu(e,t){const n=[],s=new Map;t=qr(hu,t);function r(d){return s.get(d)}function o(d,h,g){const v=!g,A=so(d);A.aliasOf=g&&g.record;const M=qr(t,d),D=[A];if("alias"in d){const T=typeof d.alias=="string"?[d.alias]:d.alias;for(const H of T)D.push(so(te({},A,{components:g?g.record.components:A.components,path:H,aliasOf:g?g.record:A})))}let y,w;for(const T of D){const{path:H}=T;if(h&&H[0]!=="/"){const W=h.record.path,Q=W[W.length-1]==="/"?"":"/";T.path=h.record.path+(H&&Q+H)}if(y=gu(T,h,M),g?g.alias.push(y):(w=w||y,w!==y&&w.alias.push(y),v&&d.name&&!ro(y)&&i(d.name)),Bi(y)&&c(y),A.children){const W=A.children;for(let Q=0;Q<W.length;Q++)o(W[Q],y,g&&g.children[Q])}g=g||y}return w?()=>{i(w)}:fn}function i(d){if(ki(d)){const h=s.get(d);h&&(s.delete(d),n.splice(n.indexOf(h),1),h.children.forEach(i),h.alias.forEach(i))}else{const h=n.indexOf(d);h>-1&&(n.splice(h,1),d.record.name&&s.delete(d.record.name),d.children.forEach(i),d.alias.forEach(i))}}function l(){return n}function c(d){const h=bu(d,n);n.splice(h,0,d),d.record.name&&!ro(d)&&s.set(d.record.name,d)}function f(d,h){let g,v={},A,M;if("name"in d&&d.name){if(g=s.get(d.name),!g)throw zt(ue.MATCHER_NOT_FOUND,{location:d});M=g.record.name,v=te(no(h.params,g.keys.filter(w=>!w.optional).concat(g.parent?g.parent.keys.filter(w=>w.optional):[]).map(w=>w.name)),d.params&&no(d.params,g.keys.map(w=>w.name))),A=g.stringify(v)}else if(d.path!=null)A=d.path,g=n.find(w=>w.re.test(A)),g&&(v=g.parse(A),M=g.record.name);else{if(g=h.name?s.get(h.name):n.find(w=>w.re.test(h.path)),!g)throw zt(ue.MATCHER_NOT_FOUND,{location:d,currentLocation:h});M=g.record.name,v=te({},h.params,d.params),A=g.stringify(v)}const D=[];let y=g;for(;y;)D.unshift(y.record),y=y.parent;return{name:M,path:A,params:v,matched:D,meta:yu(D)}}e.forEach(d=>o(d));function a(){n.length=0,s.clear()}return{addRoute:o,resolve:f,removeRoute:i,clearRoutes:a,getRoutes:l,getRecordMatcher:r}}function no(e,t){const n={};for(const s of t)s in e&&(n[s]=e[s]);return n}function so(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:vu(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function vu(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const s in e.components)t[s]=typeof n=="object"?n[s]:n;return t}function ro(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function yu(e){return e.reduce((t,n)=>te(t,n.meta),{})}function bu(e,t){let n=0,s=t.length;for(;n!==s;){const o=n+s>>1;Fi(e,t[o])<0?s=o:n=o+1}const r=_u(e);return r&&(s=t.lastIndexOf(r,s-1)),s}function _u(e){let t=e;for(;t=t.parent;)if(Bi(t)&&Fi(e,t)===0)return t}function Bi({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function oo(e){const t=Ke(er),n=Ke(tr),s=be(()=>{const c=Y(e.to);return t.resolve(c)}),r=be(()=>{const{matched:c}=s.value,{length:f}=c,a=c[f-1],d=n.matched;if(!a||!d.length)return-1;const h=d.findIndex(qt.bind(null,a));if(h>-1)return h;const g=io(c[f-2]);return f>1&&io(a)===g&&d[d.length-1].path!==g?d.findIndex(qt.bind(null,c[f-2])):h}),o=be(()=>r.value>-1&&Au(n.params,s.value.params)),i=be(()=>r.value>-1&&r.value===n.matched.length-1&&Li(n.params,s.value.params));function l(c={}){if(wu(c)){const f=t[Y(e.replace)?"replace":"push"](Y(e.to)).catch(fn);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>f),f}return Promise.resolve()}return{route:s,href:be(()=>s.value.href),isActive:o,isExactActive:i,navigate:l}}function Su(e){return e.length===1?e[0]:e}const xu=qs({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:oo,setup(e,{slots:t}){const n=Sn(oo(e)),{options:s}=Ke(er),r=be(()=>({[lo(e.activeClass,s.linkActiveClass,"router-link-active")]:n.isActive,[lo(e.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const o=t.default&&Su(t.default(n));return e.custom?o:Xs("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:r.value},o)}}}),Eu=xu;function wu(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function Au(e,t){for(const n in t){const s=t[n],r=e[n];if(typeof s=="string"){if(s!==r)return!1}else if(!We(r)||r.length!==s.length||s.some((o,i)=>o.valueOf()!==r[i].valueOf()))return!1}return!0}function io(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const lo=(e,t,n)=>e??t??n,Cu=qs({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const s=Ke(Ns),r=be(()=>e.route||s.value),o=Ke(Xr,0),i=be(()=>{let f=Y(o);const{matched:a}=r.value;let d;for(;(d=a[f])&&!d.components;)f++;return f}),l=be(()=>r.value.matched[i.value]);Pn(Xr,be(()=>i.value+1)),Pn(tu,l),Pn(Ns,r);const c=On();return on(()=>[c.value,l.value,e.name],([f,a,d],[h,g,v])=>{a&&(a.instances[d]=f,g&&g!==a&&f&&f===h&&(a.leaveGuards.size||(a.leaveGuards=g.leaveGuards),a.updateGuards.size||(a.updateGuards=g.updateGuards))),f&&a&&(!g||!qt(a,g)||!h)&&(a.enterCallbacks[d]||[]).forEach(A=>A(f))},{flush:"post"}),()=>{const f=r.value,a=e.name,d=l.value,h=d&&d.components[a];if(!h)return co(n.default,{Component:h,route:f});const g=d.props[a],v=g?g===!0?f.params:typeof g=="function"?g(f):g:null,M=Xs(h,te({},v,t,{onVnodeUnmounted:D=>{D.component.isUnmounted&&(d.instances[a]=null)},ref:c}));return co(n.default,{Component:M,route:f})||M}}});function co(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const Ru=Cu;function Tu(e){const t=mu(e.routes,e),n=e.parseQuery||Za,s=e.stringifyQuery||Yr,r=e.history,o=Zt(),i=Zt(),l=Zt(),c=_l(bt);let f=bt;Vt&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const a=ps.bind(null,S=>""+S),d=ps.bind(null,Ma),h=ps.bind(null,bn);function g(S,k){let I,F;return ki(S)?(I=t.getRecordMatcher(S),F=k):F=S,t.addRoute(F,I)}function v(S){const k=t.getRecordMatcher(S);k&&t.removeRoute(k)}function A(){return t.getRoutes().map(S=>S.record)}function M(S){return!!t.getRecordMatcher(S)}function D(S,k){if(k=te({},k||c.value),typeof S=="string"){const m=hs(n,S,k.path),b=t.resolve({path:m.path},k),x=r.createHref(m.fullPath);return te(m,b,{params:h(b.params),hash:bn(m.hash),redirectedFrom:void 0,href:x})}let I;if(S.path!=null)I=te({},S,{path:hs(n,S.path,k.path).path});else{const m=te({},S.params);for(const b in m)m[b]==null&&delete m[b];I=te({},S,{params:d(m)}),k.params=d(k.params)}const F=t.resolve(I,k),q=S.hash||"";F.params=a(h(F.params));const u=Ha(s,te({},S,{hash:La(q),path:F.path})),p=r.createHref(u);return te({fullPath:u,hash:q,query:s===Yr?eu(S.query):S.query||{}},F,{redirectedFrom:void 0,href:p})}function y(S){return typeof S=="string"?hs(n,S,c.value.path):te({},S)}function w(S,k){if(f!==S)return zt(ue.NAVIGATION_CANCELLED,{from:k,to:S})}function T(S){return Q(S)}function H(S){return T(te(y(S),{replace:!0}))}function W(S,k){const I=S.matched[S.matched.length-1];if(I&&I.redirect){const{redirect:F}=I;let q=typeof F=="function"?F(S,k):F;return typeof q=="string"&&(q=q.includes("?")||q.includes("#")?q=y(q):{path:q},q.params={}),te({query:S.query,hash:S.hash,params:q.path!=null?{}:S.params},q)}}function Q(S,k){const I=f=D(S),F=c.value,q=S.state,u=S.force,p=S.replace===!0,m=W(I,F);if(m)return Q(te(y(m),{state:typeof m=="object"?te({},q,m.state):q,force:u,replace:p}),k||I);const b=I;b.redirectedFrom=k;let x;return!u&&ja(s,F,I)&&(x=zt(ue.NAVIGATION_DUPLICATED,{to:b,from:F}),qe(F,F,!0,!1)),(x?Promise.resolve(x):J(b,F)).catch(_=>ct(_)?ct(_,ue.NAVIGATION_GUARD_REDIRECT)?_:vt(_):ee(_,b,F)).then(_=>{if(_){if(ct(_,ue.NAVIGATION_GUARD_REDIRECT))return Q(te({replace:p},y(_.to),{state:typeof _.to=="object"?te({},q,_.to.state):q,force:u}),k||b)}else _=L(b,F,!0,p,q);return le(b,F,_),_})}function U(S,k){const I=w(S,k);return I?Promise.reject(I):Promise.resolve()}function G(S){const k=Ft.values().next().value;return k&&typeof k.runWithContext=="function"?k.runWithContext(S):S()}function J(S,k){let I;const[F,q,u]=nu(S,k);I=ms(F.reverse(),"beforeRouteLeave",S,k);for(const m of F)m.leaveGuards.forEach(b=>{I.push(St(b,S,k))});const p=U.bind(null,S,k);return I.push(p),He(I).then(()=>{I=[];for(const m of o.list())I.push(St(m,S,k));return I.push(p),He(I)}).then(()=>{I=ms(q,"beforeRouteUpdate",S,k);for(const m of q)m.updateGuards.forEach(b=>{I.push(St(b,S,k))});return I.push(p),He(I)}).then(()=>{I=[];for(const m of u)if(m.beforeEnter)if(We(m.beforeEnter))for(const b of m.beforeEnter)I.push(St(b,S,k));else I.push(St(m.beforeEnter,S,k));return I.push(p),He(I)}).then(()=>(S.matched.forEach(m=>m.enterCallbacks={}),I=ms(u,"beforeRouteEnter",S,k,G),I.push(p),He(I))).then(()=>{I=[];for(const m of i.list())I.push(St(m,S,k));return I.push(p),He(I)}).catch(m=>ct(m,ue.NAVIGATION_CANCELLED)?m:Promise.reject(m))}function le(S,k,I){l.list().forEach(F=>G(()=>F(S,k,I)))}function L(S,k,I,F,q){const u=w(S,k);if(u)return u;const p=k===bt,m=Vt?history.state:{};I&&(F||p?r.replace(S.fullPath,te({scroll:p&&m&&m.scroll},q)):r.push(S.fullPath,q)),c.value=S,qe(S,k,I,p),vt()}let Z;function me(){Z||(Z=r.listen((S,k,I)=>{if(!wt.listening)return;const F=D(S),q=W(F,wt.currentRoute.value);if(q){Q(te(q,{replace:!0,force:!0}),F).catch(fn);return}f=F;const u=c.value;Vt&&za(Jr(u.fullPath,I.delta),Zn()),J(F,u).catch(p=>ct(p,ue.NAVIGATION_ABORTED|ue.NAVIGATION_CANCELLED)?p:ct(p,ue.NAVIGATION_GUARD_REDIRECT)?(Q(te(y(p.to),{force:!0}),F).then(m=>{ct(m,ue.NAVIGATION_ABORTED|ue.NAVIGATION_DUPLICATED)&&!I.delta&&I.type===Ps.pop&&r.go(-1,!1)}).catch(fn),Promise.reject()):(I.delta&&r.go(-I.delta,!1),ee(p,F,u))).then(p=>{p=p||L(F,u,!1),p&&(I.delta&&!ct(p,ue.NAVIGATION_CANCELLED)?r.go(-I.delta,!1):I.type===Ps.pop&&ct(p,ue.NAVIGATION_ABORTED|ue.NAVIGATION_DUPLICATED)&&r.go(-1,!1)),le(F,u,p)}).catch(fn)}))}let De=Zt(),fe=Zt(),re;function ee(S,k,I){vt(S);const F=fe.list();return F.length?F.forEach(q=>q(S,k,I)):console.error(S),Promise.reject(S)}function ot(){return re&&c.value!==bt?Promise.resolve():new Promise((S,k)=>{De.add([S,k])})}function vt(S){return re||(re=!S,me(),De.list().forEach(([k,I])=>S?I(S):k()),De.reset()),S}function qe(S,k,I,F){const{scrollBehavior:q}=e;if(!Vt||!q)return Promise.resolve();const u=!I&&Qa(Jr(S.fullPath,0))||(F||!I)&&history.state&&history.state.scroll||null;return Bo().then(()=>q(S,k,u)).then(p=>p&&qa(p)).catch(p=>ee(p,S,k))}const Ie=S=>r.go(S);let Mt;const Ft=new Set,wt={currentRoute:c,listening:!0,addRoute:g,removeRoute:v,clearRoutes:t.clearRoutes,hasRoute:M,getRoutes:A,resolve:D,options:e,push:T,replace:H,go:Ie,back:()=>Ie(-1),forward:()=>Ie(1),beforeEach:o.add,beforeResolve:i.add,afterEach:l.add,onError:fe.add,isReady:ot,install(S){S.component("RouterLink",Eu),S.component("RouterView",Ru),S.config.globalProperties.$router=wt,Object.defineProperty(S.config.globalProperties,"$route",{enumerable:!0,get:()=>Y(c)}),Vt&&!Mt&&c.value===bt&&(Mt=!0,T(r.location).catch(F=>{}));const k={};for(const F in bt)Object.defineProperty(k,F,{get:()=>c.value[F],enumerable:!0});S.provide(er,wt),S.provide(tr,ko(k)),S.provide(Ns,c);const I=S.unmount;Ft.add(S),S.unmount=function(){Ft.delete(S),Ft.size<1&&(f=bt,Z&&Z(),Z=null,c.value=bt,Mt=!1,re=!1),I()}}};function He(S){return S.reduce((k,I)=>k.then(()=>G(I)),Promise.resolve())}return wt}function Ou(e){return Ke(tr)}const Pu=()=>Ci(()=>import("./CatalogPage-B_qic36n.js"),[]),Iu=()=>Ci(()=>import("./SkillDetailPage-BJ3onKk4.js"),[]);function Nu(e){return Tu({history:iu(),routes:[{path:"/",name:"catalog",component:Pu},{path:"/skills/:skillId",name:"skill-detail",component:Iu,props:!0}],scrollBehavior(){return{top:0}}})}function Lu(e){async function t(n,s={}){var l;const r=new URL(n,window.location.origin);s.query?r.search=s.query.toString():(s.method===void 0||s.method==="GET"||s.method==="DELETE")&&r.searchParams.set("scope",e.getScope());const o=await fetch(r,{method:s.method||"GET",headers:{"x-skillex-token":e.token,...s.body?{"content-type":"application/json"}:{}},body:s.body?JSON.stringify({...s.body,scope:e.getScope()}):void 0}),i=await o.json().catch(()=>({}));if(!o.ok)throw new Error(((l=i.error)==null?void 0:l.message)||`Request failed with ${o.status}`);return i}return{getState(){return t("/api/state")},getCatalog(){return t("/api/catalog")},getSkillDetail(n){return t(`/api/catalog/${encodeURIComponent(n)}`)},getSources(){return t("/api/sources")},installSkill(n,s){return t("/api/install",{method:"POST",body:{skillIds:[n],...s!=null&&s.repo?{repo:s.repo}:{},...s!=null&&s.ref?{ref:s.ref}:{}}})},removeSkill(n){return t("/api/remove",{method:"POST",body:{skillIds:[n]}})},updateSkill(n){return t("/api/update",{method:"POST",body:n?{skillIds:[n]}:{}})},syncSkills(n){return t("/api/sync",{method:"POST",body:n==="all"?{}:{adapter:n}})},addSource(n){return t("/api/sources",{method:"POST",body:n})},removeSource(n){const s=new URLSearchParams;return s.set("scope",e.getScope()),t(`/api/sources/${encodeURIComponent(n)}`,{method:"DELETE",query:s})}}}function ku(e){return Object.values(e||{}).sort((t,n)=>n.syncedAt.localeCompare(t.syncedAt))}function ao(e){return e instanceof Error?e.message:String(e)}const Hi=Symbol("skillex-store");function Du(e,t){const n=Sn({bootstrap:t,scope:t.initialScope,syncAdapter:"all",searchQuery:"",dashboard:null,catalog:null,detail:null,detailLoading:!1,initialized:!1,busyLabel:null,notice:null,toast:{visible:!1,tone:"info",message:""}}),s=Lu({token:t.token,getScope:()=>n.scope});let r=null;function o(){return{token:t.token,scope:n.scope}}function i(y,w){n.notice={message:y,tone:w},n.toast.visible=!0,n.toast.message=y,n.toast.tone=w,r&&clearTimeout(r),r=setTimeout(()=>{n.toast.visible=!1},2600)}async function l(){const[y,w]=await Promise.all([s.getState(),s.getCatalog()]);n.dashboard=y,n.catalog=w}async function c(y){await l(),y&&await h(y)}async function f(y,w,T){n.busyLabel=y;try{await w(),await c(T),i(`${y} complete.`,"success")}catch(H){const W=ao(H);throw n.notice={message:W,tone:"error"},i(W,"error"),H}finally{n.busyLabel=null}}async function a(){n.detail=null,await e.push({name:"catalog",query:o()})}async function d(y){await e.push({name:"skill-detail",params:{skillId:y},query:o()})}async function h(y){n.detailLoading=!0;try{n.detail=await s.getSkillDetail(y)}catch(w){throw n.detail=null,i(ao(w),"error"),w}finally{n.detailLoading=!1}}async function g(y){if(n.initialized){y&&await h(y);return}n.initialized=!0,await l(),y&&await h(y)}async function v(y){if(n.scope===y)return;n.scope=y;const w=typeof e.currentRoute.value.params.skillId=="string"?e.currentRoute.value.params.skillId:null;w?await e.replace({name:"skill-detail",params:{skillId:w},query:o()}):await e.replace({name:"catalog",query:o()}),await c(w)}const A=be(()=>{var T;const y=((T=n.catalog)==null?void 0:T.skills)||[],w=n.searchQuery.trim().toLowerCase();return w?y.filter(H=>[H.id,H.name,H.description,H.author||"",H.source.label||"",H.source.repo,...H.tags,...H.compatibility].join(" ").toLowerCase().includes(w)):y}),M=be(()=>{var w;const y=((w=n.dashboard)==null?void 0:w.adapters.supported)||[];return[{value:"all",label:"All detected"},...y.map(T=>({value:T.id,label:T.label}))]}),D=be(()=>{var y;return ku(((y=n.dashboard)==null?void 0:y.syncHistory)||{})});return{state:n,filteredSkills:A,availableSyncAdapters:M,recentSyncTargets:D,initialize:g,refreshAll:l,async loadSkillDetail(y){await h(y)},clearDetail(){n.detail=null},async navigateHome(){await a()},async navigateToSkill(y){await d(y)},async setScope(y){await v(y)},setSyncAdapter(y){n.syncAdapter=y||"all"},async installSkill(y){var w;await f(`Installed ${y.name}`,()=>s.installSkill(y.id,{repo:y.source.repo,ref:y.source.ref}),((w=n.detail)==null?void 0:w.skill.id)||null)},async removeSkill(y){var T;const w=((T=n.detail)==null?void 0:T.skill.id)||null;await f(`Removed ${y}`,()=>s.removeSkill(y),w===y?null:w),w===y&&(n.detail=null,await a())},async updateSkill(y){var w;await f(y?`Updated ${y}`:"Updated installed skills",()=>s.updateSkill(y),((w=n.detail)==null?void 0:w.skill.id)||null)},async syncNow(){var y;await f("Sync finished",()=>s.syncSkills(n.syncAdapter),((y=n.detail)==null?void 0:y.skill.id)||null)},async addSource(y){var w;await f(`Added ${y.repo}`,()=>s.addSource(y),((w=n.detail)==null?void 0:w.skill.id)||null)},async removeSource(y){var w;await f(`Removed ${y}`,()=>s.removeSource(y),((w=n.detail)==null?void 0:w.skill.id)||null)},setSearchQuery(y){n.searchQuery=y},clearNotice(){n.notice=null}}}function Mu(){const e=Ke(Hi);if(!e)throw new Error("Skillex store was not provided.");return e}function Fu(){const e=window.__SKILLEX_BOOTSTRAP__,t=typeof e=="string"?e==="__SKILLEX_BOOTSTRAP__"?null:JSON.parse(e):e;if(!t||typeof t!="object"||!("token"in t)||!("initialScope"in t))throw new Error("Missing Skillex Web UI bootstrap payload.");return{token:String(t.token),initialScope:t.initialScope==="global"?"global":"local",initialSkillId:t.initialSkillId?String(t.initialSkillId):null}}const Bu={class:"app-shell"},Hu={class:"sidebar"},ju={class:"sidebar-nav"},Vu={key:0,class:"nav-badge"},Uu={style:{padding:"0 10px 8px",display:"flex","flex-wrap":"wrap",gap:"5px"}},Ku={key:0,style:{"font-size":"11px",color:"var(--text-dim)",padding:"2px 0"}},Gu={class:"nav-section-label",style:{"font-size":"9px","margin-bottom":"4px",color:"var(--text-dim)"}},$u={style:{padding:"0 10px 8px",display:"grid",gap:"4px"}},Wu={style:{margin:"0","font-size":"11px","font-weight":"600",color:"var(--text)"}},qu={style:{margin:"2px 0 0","font-size":"10px",color:"var(--text-dim)","font-family":"monospace"}},zu=["onClick"],Qu={key:0,style:{"font-size":"11px",color:"var(--text-dim)",padding:"2px 0"}},Ju={style:{padding:"0 10px 8px",display:"grid",gap:"4px"}},Yu={style:{display:"flex","justify-content":"space-between",gap:"6px"}},Xu={style:{"font-size":"11px","font-weight":"600",color:"var(--text)"}},Zu={style:{"font-size":"10px",color:"var(--text-dim)"}},ef={style:{margin:"2px 0 0","font-size":"10px",color:"var(--text-dim)","font-family":"monospace","word-break":"break-all"}},tf={key:0,style:{"font-size":"11px",color:"var(--text-dim)",padding:"2px 0"}},nf={class:"sidebar-footer"},sf={class:"adapter-badge"},rf={class:"adapter-badge-icon"},of={class:"adapter-badge-info"},lf={class:"adapter-badge-name"},cf={class:"sidebar-meta"},af={style:{"font-family":"monospace"}},uf={class:"main-col"},ff={class:"topbar"},df={class:"search-shell"},pf=["value"],hf={class:"toggle-group"},gf={class:"toggle-group"},mf=["title","onClick"],vf={class:"topbar-actions"},yf=["data-tone"],bf={class:"workspace-layout"},_f=["data-tone"],Sf={class:"toast-content"},xf={class:"toast-icon"},Ef={key:0,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},wf={key:1,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},Af={class:"toast-text"},Cf={key:0,class:"busy-overlay"},Rf={class:"busy-card"},Tf=qs({__name:"App",setup(e){const t=Mu(),n=Ou(),s=On(""),r=On(""),o=On(""),i=be(()=>t.state.dashboard),l=be(()=>t.state.catalog),c=be(()=>t.recentSyncTargets.value),f=[{value:"claude",label:"Claude",icon:"🤖"},{value:"cursor",label:"Cursor",icon:"⚡"},{value:"copilot",label:"Copilot",icon:"🐙"},{value:"cline",label:"Cline",icon:"🔵"},{value:"codex",label:"Codex",icon:"🧠"},{value:"gemini",label:"Gemini",icon:"✨"},{value:"windsurf",label:"Windsurf",icon:"🏄"}],a=be(()=>{const g=t.state.syncAdapter;return f.find(v=>v.value===g)??{value:g,label:g||"Auto",icon:"🔧"}});function d(g){return new Date(g).toLocaleString(void 0,{dateStyle:"medium",timeStyle:"short"})}async function h(){const g=s.value.trim();g&&(await t.addSource({repo:g,ref:r.value.trim()||void 0,label:o.value.trim()||void 0}),s.value="",r.value="",o.value="")}return on(()=>n.query.scope,g=>{(g==="global"||g==="local")&&t.setScope(g)}),zs(async()=>{const g=typeof n.params.skillId=="string"?n.params.skillId:null;await t.initialize(g)}),(g,v)=>{var M,D,y,w,T,H,W,Q;const A=Ql("RouterView");return ye(),Se("div",Bu,[v[30]||(v[30]=R("div",{class:"shell-background"},[R("div",{class:"shell-glow shell-glow-left"}),R("div",{class:"shell-glow shell-glow-right"}),R("div",{class:"shell-grid"})],-1)),R("aside",Hu,[v[19]||(v[19]=R("div",{class:"sidebar-logo"},[R("svg",{width:"18",height:"18",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M20 7l-8-4-8 4m16 0l-8 4m8-4v10l-8 4m0-10L4 7m8 4v10M4 7v10l8 4"})]),tn(" skillex"),R("span",{class:"accent-dot"},".")],-1)),R("nav",ju,[v[13]||(v[13]=R("p",{class:"nav-section-label"},"Explorar",-1)),R("button",{class:xt(["nav-btn",{active:g.$route.name==="catalog"}]),type:"button",onClick:v[0]||(v[0]=U=>Y(t).navigateHome())},[...v[9]||(v[9]=[R("svg",{width:"16",height:"16",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})],-1),tn(" Marketplace ",-1)])],2),R("button",{class:xt(["nav-btn",{active:!1}]),type:"button",onClick:v[1]||(v[1]=U=>Y(t).navigateHome())},[v[10]||(v[10]=R("svg",{width:"16",height:"16",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M5 13l4 4L19 7"})],-1)),v[11]||(v[11]=tn(" Instaladas ",-1)),(((M=i.value)==null?void 0:M.installed.length)??0)>0?(ye(),Se("span",Vu,ve((D=i.value)==null?void 0:D.installed.length),1)):Rt("",!0)]),v[14]||(v[14]=R("p",{class:"nav-section-label"},"Workspace",-1)),v[15]||(v[15]=R("p",{class:"nav-section-label",style:{"font-size":"9px","margin-top":"8px","margin-bottom":"4px",color:"var(--text-dim)"}}," Adapters detectados ",-1)),R("div",Uu,[(ye(!0),Se(ke,null,Rn(((y=i.value)==null?void 0:y.adapters.detected)??[],U=>(ye(),Se("span",{key:U,class:"chip chip-accent",style:{height:"22px","font-size":"10px"}},ve(U),1))),128)),(((w=i.value)==null?void 0:w.adapters.detected.length)??0)===0?(ye(),Se("span",Ku," Nenhum ")):Rt("",!0)]),R("p",Gu," Sources ("+ve(((T=i.value)==null?void 0:T.sources.length)??0)+") ",1),R("form",{style:{padding:"0 10px 8px",display:"grid",gap:"5px"},onSubmit:ga(h,["prevent"])},[Pl(R("input",{"onUpdate:modelValue":v[2]||(v[2]=U=>s.value=U),type:"text",placeholder:"owner/repo",style:{width:"100%",padding:"6px 8px",border:"1px solid rgba(63,63,70,0.5)","border-radius":"8px",background:"rgba(9,9,11,0.6)",color:"#f4f4f5","font-size":"11px",outline:"none"}},null,512),[[da,s.value]]),v[12]||(v[12]=R("button",{class:"button button-primary",type:"submit",style:{"min-height":"28px",padding:"0 10px","font-size":"11px",width:"100%"}}," + Add source ",-1))],32),R("div",$u,[(ye(!0),Se(ke,null,Rn(((H=i.value)==null?void 0:H.sources)??[],U=>(ye(),Se("div",{key:U.repo,style:{display:"flex","align-items":"center","justify-content":"space-between",padding:"6px 8px","border-radius":"8px",background:"rgba(39,39,42,0.4)",border:"1px solid rgba(63,63,70,0.3)"}},[R("div",null,[R("p",Wu,ve(U.label||U.repo),1),R("p",qu,"@"+ve(U.ref),1)]),R("button",{type:"button",onClick:G=>Y(t).removeSource(U.repo),style:{padding:"3px 6px","font-size":"10px",border:"1px solid rgba(248,113,113,0.2)","border-radius":"6px",background:"transparent",color:"var(--danger)",cursor:"pointer"}}," × ",8,zu)]))),128)),(((W=i.value)==null?void 0:W.sources.length)??0)===0?(ye(),Se("p",Qu," No sources. ")):Rt("",!0)]),v[16]||(v[16]=R("p",{class:"nav-section-label",style:{"font-size":"9px","margin-bottom":"4px",color:"var(--text-dim)"}},"Sync history",-1)),R("div",Ju,[(ye(!0),Se(ke,null,Rn(c.value.slice(0,3),U=>(ye(),Se("div",{key:`${U.adapter}-${U.syncedAt}`,style:{padding:"6px 8px","border-radius":"8px",background:"rgba(39,39,42,0.4)",border:"1px solid rgba(63,63,70,0.3)"}},[R("div",Yu,[R("span",Xu,ve(U.adapter),1),R("span",Zu,ve(d(U.syncedAt)),1)]),R("p",ef,ve(U.targetPath),1)]))),128)),c.value.length===0?(ye(),Se("p",tf," Nenhum sync ainda. ")):Rt("",!0)])]),R("div",nf,[R("div",sf,[R("span",rf,ve(a.value.icon),1),R("div",of,[v[17]||(v[17]=R("p",{class:"adapter-badge-label"},"Agente ativo",-1)),R("p",lf,ve(a.value.label),1)]),v[18]||(v[18]=R("span",{class:"adapter-badge-dot"},null,-1))]),R("div",cf,[R("span",af,"v"+ve(((Q=l.value)!=null&&Q.formatVersion,"0.2.4")),1),R("span",null,ve(Y(t).state.scope),1)])])]),R("div",uf,[R("header",ff,[R("div",df,[v[20]||(v[20]=R("svg",{fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})],-1)),R("input",{value:Y(t).state.searchQuery,type:"search",placeholder:"Buscar skills...",onInput:v[3]||(v[3]=U=>Y(t).setSearchQuery(U.target.value))},null,40,pf),v[21]||(v[21]=R("span",{class:"search-kbd"},"⌘K",-1))]),R("div",hf,[R("button",{class:xt(["toggle-btn",{active:Y(t).state.scope==="local"}]),type:"button",onClick:v[4]||(v[4]=U=>Y(t).setScope("local"))}," 📁 Local ",2),R("button",{class:xt(["toggle-btn",{active:Y(t).state.scope==="global"}]),type:"button",onClick:v[5]||(v[5]=U=>Y(t).setScope("global"))}," 🌍 Global ",2)]),v[23]||(v[23]=R("div",{class:"topbar-divider"},null,-1)),R("div",gf,[(ye(),Se(ke,null,Rn(f,U=>R("button",{key:U.value,class:xt(["adapter-toggle-btn",{active:Y(t).state.syncAdapter===U.value}]),title:U.label,type:"button",onClick:G=>Y(t).setSyncAdapter(U.value)},ve(U.icon),11,mf)),64))]),v[24]||(v[24]=R("div",{class:"topbar-divider"},null,-1)),R("div",vf,[R("button",{class:"button button-ghost",type:"button",onClick:v[6]||(v[6]=U=>Y(t).refreshAll())},[...v[22]||(v[22]=[R("svg",{width:"13",height:"13",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),tn(" Refresh ",-1)])]),R("button",{class:"button button-secondary",type:"button",onClick:v[7]||(v[7]=U=>Y(t).updateSkill())}," Update "),R("button",{class:"button button-primary",type:"button",onClick:v[8]||(v[8]=U=>Y(t).syncNow())}," Sync now ")])]),Y(t).state.notice?(ye(),Se("div",{key:0,class:"status-banner","data-tone":Y(t).state.notice.tone},ve(Y(t).state.notice.message),9,yf)):Rt("",!0),R("div",bf,[Oe(A)])]),Oe(Gc,{name:"toast"},{default:Ko(()=>[Y(t).state.toast.visible?(ye(),Se("div",{key:0,class:"toast","data-tone":Y(t).state.toast.tone},[R("div",Sf,[R("div",xf,[Y(t).state.toast.tone==="success"?(ye(),Se("svg",Ef,[...v[25]||(v[25]=[R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2.5",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"},null,-1)])])):(ye(),Se("svg",wf,[...v[26]||(v[26]=[R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"},null,-1)])]))]),R("div",Af,[R("strong",null,ve(Y(t).state.toast.tone==="error"?"Error":"Done"),1),R("span",null,ve(Y(t).state.toast.message),1)])]),v[27]||(v[27]=R("div",{class:"toast-bar"},null,-1))],8,_f)):Rt("",!0)]),_:1}),Y(t).state.busyLabel?(ye(),Se("div",Cf,[R("div",Rf,[v[28]||(v[28]=R("div",{class:"busy-spinner"},null,-1)),R("strong",null,ve(Y(t).state.busyLabel),1),v[29]||(v[29]=R("span",null,"Aguarde...",-1))])])):Rt("",!0)])}}}),Of=Fu(),ji=Nu(),Pf=Du(ji,Of),nr=ya(Tf);nr.provide(Hi,Pf);nr.use(ji);nr.mount("#app");export{ke as F,R as a,tn as b,Se as c,qs as d,Rt as e,Y as f,be as g,On as h,Ac as i,Ou as j,on as k,zs as l,Fs as m,xt as n,ye as o,Rn as r,ve as t,Mu as u,ga as w};
@@ -0,0 +1 @@
1
+ *,*:before,*:after{box-sizing:border-box}html,body,#app{margin:0;height:100%;min-height:100%}button,input,select{font:inherit}a{color:inherit;text-decoration:none}:root{--bg: #1a1a1f;--bg-panel: rgba(30, 30, 36, .8);--bg-elevated: #242429;--bg-hover: rgba(52, 52, 60, .65);--line: rgba(80, 80, 92, .55);--line-strong: rgba(105, 105, 118, .75);--text: #f0f0f3;--text-muted: #9898a8;--text-dim: #70707e;--accent: #10b981;--accent-hover: #34d399;--accent-soft: rgba(16, 185, 129, .12);--accent-ring: rgba(16, 185, 129, .25);--danger: #f87171;--danger-soft: rgba(248, 113, 113, .1);--danger-ring: rgba(239, 68, 68, .25);--warn: #fbbf24;--warn-soft: rgba(251, 191, 36, .1);--radius-xl: 18px;--radius-lg: 14px;--radius-md: 10px;--radius-sm: 8px;--shadow: 0 8px 32px rgba(0, 0, 0, .5);--shadow-soft: 0 4px 16px rgba(0, 0, 0, .3);font-family:Inter,Segoe UI,system-ui,-apple-system,sans-serif;color-scheme:dark}body{background:var(--bg);color:var(--text);overflow:hidden;height:100vh}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;background-image:radial-gradient(circle,rgba(255,255,255,.035) 1px,transparent 1px);background-size:24px 24px;pointer-events:none;z-index:0}.app-shell{position:relative;display:flex;height:100vh;overflow:hidden;z-index:1}.shell-background{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0}.shell-glow{position:absolute;border-radius:50%;filter:blur(1px)}.shell-glow-left{width:600px;height:600px;top:-150px;left:-150px;background:radial-gradient(circle,rgba(16,185,129,.07) 0%,transparent 70%)}.shell-glow-right{width:500px;height:500px;bottom:-100px;right:-100px;background:radial-gradient(circle,rgba(99,102,241,.05) 0%,transparent 70%)}.shell-grid{display:none}.sidebar{width:232px;flex-shrink:0;display:flex;flex-direction:column;background:#18181b80;border-right:1px solid var(--line);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);z-index:2;overflow-y:auto}.sidebar-logo{height:56px;display:flex;align-items:center;padding:0 20px;border-bottom:1px solid var(--line);gap:8px;font-size:1rem;font-weight:700;color:#fff;letter-spacing:-.02em;flex-shrink:0}.sidebar-logo svg{color:var(--accent);filter:drop-shadow(0 0 6px rgba(16,185,129,.5))}.sidebar-logo .accent-dot{color:var(--accent)}.sidebar-nav{padding:12px;display:flex;flex-direction:column;gap:2px;flex:1}.nav-section-label{font-size:10px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--text-dim);padding:0 10px;margin:12px 0 4px}.nav-section-label:first-child{margin-top:4px}.nav-btn{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:var(--radius-md);border:1px solid transparent;background:transparent;color:var(--text-muted);font-size:.875rem;font-weight:500;cursor:pointer;width:100%;text-align:left;transition:background .15s,color .15s,border-color .15s}.nav-btn svg{flex-shrink:0;opacity:.7}.nav-btn:hover{background:var(--bg-hover);color:var(--text)}.nav-btn:hover svg{opacity:1}.nav-btn.active{background:var(--bg-elevated);color:#fff;border-color:var(--line-strong)}.nav-btn.active svg{opacity:1}.nav-badge{margin-left:auto;background:var(--accent-soft);border:1px solid rgba(16,185,129,.25);color:var(--accent);font-size:10px;font-weight:700;padding:1px 6px;border-radius:999px;font-variant-numeric:tabular-nums}.sidebar-footer{padding:12px;border-top:1px solid var(--line);flex-shrink:0}.adapter-badge{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--radius-md);background:#27272a80;border:1px solid rgba(63,63,70,.4)}.adapter-badge-icon{font-size:1.25rem;line-height:1}.adapter-badge-info{flex:1;min-width:0}.adapter-badge-label{font-size:10px;color:var(--text-dim);line-height:1;margin-bottom:3px}.adapter-badge-name{font-size:.8rem;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.adapter-badge-dot{width:6px;height:6px;border-radius:50%;background:var(--accent);flex-shrink:0;box-shadow:0 0 6px #10b98199;animation:pulse-dot 2s ease-in-out infinite}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.5}}.sidebar-meta{display:flex;justify-content:space-between;padding:8px 12px 0;font-size:11px;color:var(--text-dim)}.main-col{flex:1;min-width:0;display:flex;flex-direction:column;overflow:hidden;position:relative;z-index:1}.topbar{height:56px;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 24px;border-bottom:1px solid var(--line);background:#09090bbf;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);z-index:10}.search-shell{position:relative;flex:1;max-width:340px}.search-shell svg{position:absolute;left:10px;top:50%;transform:translateY(-50%);width:14px;height:14px;color:var(--text-dim);pointer-events:none;transition:color .15s}.search-shell:focus-within svg{color:var(--accent)}.search-shell input{width:100%;padding:7px 36px 7px 32px;border:1px solid rgba(63,63,70,.5);border-radius:var(--radius-md);background:#18181b99;color:var(--text);font-size:.875rem;outline:none;transition:border-color .15s,box-shadow .15s}.search-shell input::placeholder{color:var(--text-dim)}.search-shell input:focus{border-color:#10b98166;box-shadow:0 0 0 3px var(--accent-ring)}.search-kbd{position:absolute;right:8px;top:50%;transform:translateY(-50%);font-size:10px;font-family:monospace;color:var(--text-dim);background:var(--bg-elevated);border:1px solid var(--line-strong);padding:1px 5px;border-radius:5px;pointer-events:none}.toggle-group{display:flex;align-items:center;background:var(--bg-elevated);border:1px solid rgba(63,63,70,.5);border-radius:var(--radius-md);padding:3px;gap:2px}.toggle-btn{padding:5px 10px;border-radius:var(--radius-sm);border:none;background:transparent;color:var(--text-muted);font-size:.75rem;font-weight:500;cursor:pointer;transition:background .15s,color .15s;white-space:nowrap}.toggle-btn:hover{color:var(--text)}.toggle-btn.active{background:#3f3f46cc;color:#fff;box-shadow:var(--shadow-soft)}.adapter-toggle-btn{width:30px;height:30px;padding:0;display:flex;align-items:center;justify-content:center;font-size:1rem;border-radius:var(--radius-sm);border:none;background:transparent;cursor:pointer;transition:background .15s,opacity .15s;opacity:.45}.adapter-toggle-btn:hover{opacity:.8;background:var(--bg-hover)}.adapter-toggle-btn.active{background:#3f3f46cc;opacity:1}.topbar-divider{width:1px;height:20px;background:var(--line);flex-shrink:0}.topbar-actions{display:flex;align-items:center;gap:6px}.status-banner{padding:10px 24px;font-size:.8rem;background:var(--accent-soft);border-bottom:1px solid rgba(16,185,129,.2);color:var(--accent-hover)}.status-banner[data-tone=error]{background:var(--danger-soft);border-color:#f8717133;color:var(--danger)}.status-banner[data-tone=info]{background:#6366f114;border-color:#6366f133;color:#a5b4fc}.workspace-layout{flex:1;overflow-y:auto;padding:24px}.panel{background:#18181b8c;border:1px solid var(--line);border-radius:var(--radius-xl);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.panel-body{padding:20px}.panel-head{padding:20px 20px 0;display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:16px}.panel-head-title{display:grid;gap:4px}.eyebrow{font-size:10px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--accent)}.panel-head h2{margin:0;font-size:1.2rem;font-weight:700;letter-spacing:-.03em;color:#fff}.panel-head p{margin:0;font-size:.825rem;color:var(--text-muted);line-height:1.5}.section-label{font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--text-dim)}.stat-grid,.hero-metrics,.catalog-overview,.detail-metadata-grid{display:grid;gap:10px;padding:0 20px 20px}.hero-metrics,.catalog-overview{grid-template-columns:repeat(auto-fit,minmax(100px,1fr))}.stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.detail-metadata-grid{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));padding:0 20px 20px}.stat-card,.overview-card,.hero-metric,.metadata-card{padding:12px 14px;border-radius:var(--radius-lg);background:#27272a73;border:1px solid rgba(63,63,70,.35)}.stat-card span,.overview-card span,.hero-metric span,.metadata-card span{display:block;font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--text-dim);margin-bottom:6px}.stat-card strong,.overview-card strong,.hero-metric strong,.metadata-card strong{display:block;font-size:1.05rem;font-weight:700;color:var(--text);letter-spacing:-.02em;word-break:break-all}.path-value{font-size:.72rem!important;font-family:JetBrains Mono,Fira Code,monospace;word-break:break-all;opacity:.8}.button,.link-button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:34px;padding:0 14px;border:1px solid transparent;border-radius:var(--radius-md);cursor:pointer;font-size:.8rem;font-weight:600;transition:background .15s,border-color .15s,box-shadow .15s,transform .12s,color .15s}.button:active{transform:scale(.97)}.button:disabled{opacity:.5;cursor:not-allowed;transform:none}.button-primary{background:var(--accent);color:#030712;box-shadow:0 0 14px #10b98133}.button-primary:hover:not(:disabled){background:var(--accent-hover);box-shadow:0 0 20px #10b98159}.button-secondary{background:#3f3f4673;border-color:#3f3f4699;color:var(--text)}.button-secondary:hover:not(:disabled){background:#3f3f46b3}.button-ghost,.link-button{background:transparent;border-color:#3f3f4680;color:var(--text-muted)}.button-ghost:hover:not(:disabled),.link-button:hover{background:var(--bg-hover);color:var(--text);border-color:var(--line-strong)}.button-danger{background:var(--danger-soft);border-color:#f8717133;color:var(--danger)}.button-danger:hover:not(:disabled){background:#f871712e}.button-icon{width:32px;min-height:32px;padding:0;border-radius:var(--radius-md)}.action-cluster{display:flex;align-items:center;gap:8px}.action-row{display:flex;gap:6px;flex-wrap:wrap;align-items:center}.chip{display:inline-flex;align-items:center;height:26px;padding:0 10px;border-radius:999px;border:1px solid rgba(63,63,70,.45);background:#27272a8c;font-size:.75rem;font-weight:600;color:var(--text-muted)}.chip-accent{background:var(--accent-soft);border-color:#10b98133;color:var(--accent)}.chip-row,.tag-block{display:flex;flex-wrap:wrap;gap:6px}.chip-section{padding:0 20px 20px;display:grid;gap:8px}.tag-block{padding:0 20px}.tag-block-compat{padding-bottom:20px}.source-form{display:grid;gap:8px;padding:0 20px 16px}.source-form input,.search-shell-standalone input{width:100%;padding:8px 12px;border:1px solid rgba(63,63,70,.5);border-radius:var(--radius-md);background:#09090b99;color:var(--text);font-size:.8rem;outline:none;transition:border-color .15s,box-shadow .15s}.source-form input::placeholder{color:var(--text-dim);font-size:.8rem}.source-form input:focus{border-color:#10b98159;box-shadow:0 0 0 3px var(--accent-ring)}.source-list,.sync-list{display:grid;gap:6px;padding:0 20px 20px}.source-item{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--radius-md);background:#27272a66;border:1px solid rgba(63,63,70,.35)}.source-item strong{font-size:.825rem;color:var(--text)}.source-item p{margin:3px 0 0;font-size:.75rem;color:var(--text-dim);font-family:monospace}.sync-item{padding:10px 12px;border-radius:var(--radius-md);background:#27272a66;border:1px solid rgba(63,63,70,.35);display:grid;gap:4px}.sync-item-head{display:flex;justify-content:space-between;gap:8px;align-items:baseline}.sync-item strong{font-size:.825rem;color:var(--text)}.sync-item p{margin:0;font-size:.72rem;color:var(--text-dim);font-family:monospace;word-break:break-all}.sync-item-head span{font-size:.7rem;color:var(--text-dim);white-space:nowrap}.muted-copy{font-size:.8rem;color:var(--text-dim);padding:0 20px 16px}.page-column{display:grid;gap:16px}.category-pills{display:flex;flex-wrap:wrap;gap:8px;padding:0 20px 20px}.category-pill{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;border-radius:999px;border:1px solid rgba(63,63,70,.45);background:#18181b99;color:var(--text-muted);font-size:.78rem;font-weight:600;cursor:pointer;transition:background .15s,border-color .15s,color .15s}.category-pill:hover{color:var(--text);border-color:var(--line-strong)}.category-pill.active{background:var(--accent-soft);border-color:#10b98159;color:var(--accent)}.category-pill-count{font-size:10px;opacity:.6}.catalog-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px;padding:0 20px 20px}.skill-card{position:relative;display:flex;flex-direction:column;border:1px solid rgba(63,63,70,.45);border-radius:var(--radius-xl);background:#18181ba6;cursor:pointer;overflow:hidden;transition:border-color .2s,box-shadow .2s,transform .2s}.skill-card:hover{border-color:#10b98138;box-shadow:0 0 0 1px #10b9811f,0 8px 28px #10b98112,0 2px 8px #0006;transform:translateY(-2px)}.skill-card.is-installed{border-color:#10b9814d;box-shadow:0 0 0 1px #10b9811f}.skill-card.is-installed:hover{box-shadow:0 0 0 1px #10b98159,0 8px 28px #10b9811a}.skill-card.is-installed:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(135deg,rgba(16,185,129,.04) 0%,transparent 60%);pointer-events:none;z-index:0}.skill-card-accent{display:none}.skill-card-body{padding:18px;flex:1;display:flex;flex-direction:column;gap:12px;position:relative;z-index:1}.skill-card-icon-row{display:flex;justify-content:space-between;align-items:flex-start}.skill-icon-wrap{position:relative;width:48px;height:48px;border-radius:14px;border:1px solid rgba(63,63,70,.4);display:flex;align-items:center;justify-content:center;font-size:1.5rem;flex-shrink:0}.icon-bg-workflow{background:linear-gradient(135deg,#14532d,#052e16);border-color:#22c55e33}.icon-bg-testing{background:linear-gradient(135deg,#1e3a5f,#0c1a2e);border-color:#3b82f633}.icon-bg-devops{background:linear-gradient(135deg,#0e3a4a,#042f3e);border-color:#06b6d433}.icon-bg-tools{background:linear-gradient(135deg,#3b1c6a,#1e0e3a);border-color:#8b5cf633}.icon-bg-security{background:linear-gradient(135deg,#4a1818,#2d0c0c);border-color:#ef444433}.icon-bg-default{background:linear-gradient(135deg,#27272a,#18181b);border-color:#71717a33}.skill-installed-dot{position:absolute;top:-4px;right:-4px;width:16px;height:16px;border-radius:50%;background:var(--accent);border:2px solid #09090b;display:flex;align-items:center;justify-content:center;box-shadow:0 0 6px #10b98180}.skill-installed-dot svg{width:9px;height:9px;color:#030712}.skill-card-meta{display:flex;flex-direction:column;align-items:flex-end;gap:5px}.verified-badge{display:inline-flex;align-items:center;gap:4px;padding:2px 7px;border-radius:5px;font-size:9px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;background:var(--accent-soft);border:1px solid rgba(16,185,129,.2);color:var(--accent)}.downloads-count{display:flex;align-items:center;gap:4px;font-size:11px;color:var(--text-dim)}.downloads-count svg{width:12px;height:12px}.skill-card-head{display:flex;align-items:baseline;gap:8px}.skill-card-head h3{margin:0;font-size:.975rem;font-weight:700;letter-spacing:-.02em;color:#fff;transition:color .15s;line-height:1.2}.skill-card:hover .skill-card-head h3{color:var(--accent)}.version-badge{font-size:11px;font-family:JetBrains Mono,monospace;color:var(--text-dim);white-space:nowrap}.skill-description{margin:0;font-size:.8rem;color:var(--text-muted);line-height:1.55;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.tag-block{padding:0;gap:5px}.skill-tag{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:6px;border:1px solid;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.06em}.tag-git{background:#22c55e14;color:#86efac;border-color:#22c55e2e}.tag-test{background:#3b82f614;color:#93c5fd;border-color:#3b82f62e}.tag-docker{background:#06b6d414;color:#67e8f9;border-color:#06b6d42e}.tag-security{background:#ef444414;color:#fca5a5;border-color:#ef44442e}.tag-react{background:#38bdf814;color:#7dd3fc;border-color:#38bdf82e}.tag-python{background:#facc1514;color:#fde68a;border-color:#facc152e}.tag-default{background:#71717a1f;color:#a1a1aa;border-color:#71717a33}.skill-card-footer{display:flex;align-items:center;justify-content:space-between;padding:10px 18px;border-top:1px solid rgba(63,63,70,.35);position:relative;z-index:1}.skill-card.is-installed .skill-card-footer{background:#10b98108}.skill-author{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--text-dim)}.skill-author img{width:16px;height:16px;border-radius:50%;background:var(--bg-elevated)}.skill-card-actions{display:flex;align-items:center;gap:6px}.installed-label{display:flex;align-items:center;gap:5px;font-size:11px;font-weight:600;color:var(--accent)}.installed-label:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent);display:inline-block}.remove-btn{padding:5px;border-radius:var(--radius-sm);border:1px solid transparent;background:transparent;color:var(--text-dim);cursor:pointer;transition:color .15s,background .15s,border-color .15s;display:flex;align-items:center;justify-content:center}.remove-btn svg{width:14px;height:14px}.remove-btn:hover{color:var(--danger);background:var(--danger-soft);border-color:#f8717133}.meta-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.meta-grid .section-label{display:block;margin-bottom:3px}.meta-grid strong{font-size:.78rem;color:var(--text)}.tag-block-compat{margin-top:4px}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:56px 24px;border:1px dashed rgba(63,63,70,.5);border-radius:var(--radius-xl);text-align:center;gap:8px}.empty-state strong{color:var(--text);font-size:.95rem}.empty-state p{color:var(--text-muted);font-size:.825rem;margin:0}.error-card{padding:16px 20px;border-radius:var(--radius-lg);border:1px solid rgba(248,113,113,.2);background:var(--danger-soft);display:grid;gap:6px}.error-card strong{color:var(--danger);font-size:.875rem}.error-card p{margin:0;font-size:.8rem;color:var(--text-muted)}.detail-topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 20px 0}.detail-hero{padding:0 20px 20px;display:flex;justify-content:space-between;gap:20px;align-items:flex-start}.detail-hero h2{margin:6px 0 0;font-size:1.4rem;font-weight:700;letter-spacing:-.03em;color:#fff}.detail-description{margin:8px 0 0;font-size:.85rem;color:var(--text-muted);line-height:1.6;max-width:60ch}.detail-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end;align-items:flex-start;padding-top:8px}.detail-chip-sections{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;padding:0 20px 20px}.markdown-body{padding:0 20px 20px;max-width:78ch;line-height:1.7;color:var(--text-muted);font-size:.875rem}.markdown-body :is(h1,h2,h3,h4){color:var(--text);letter-spacing:-.03em}.markdown-body h1{font-size:1.6rem;margin:0 0 1rem}.markdown-body h2{font-size:1.25rem;margin:1.6rem 0 .6rem}.markdown-body h3{font-size:1.05rem;margin:1.2rem 0 .4rem}.markdown-body pre,.markdown-body code{font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-size:.82em}.markdown-body pre{overflow-x:auto;padding:14px 16px;border-radius:var(--radius-lg);background:#00000080;border:1px solid var(--line);color:#d4d4d8}.markdown-body :not(pre)>code{background:#3f3f4666;border:1px solid var(--line);padding:1px 5px;border-radius:4px;color:var(--accent)}.markdown-body table{width:100%;border-collapse:collapse;margin:1rem 0;font-size:.875rem}.markdown-body th,.markdown-body td{padding:10px 12px;border-bottom:1px solid var(--line);text-align:left}.markdown-body th{color:var(--text);font-weight:600}.toast{position:fixed;right:20px;bottom:20px;min-width:260px;max-width:340px;border-radius:var(--radius-lg);background:var(--bg-elevated);border:1px solid var(--line-strong);box-shadow:0 8px 32px #00000080,0 0 0 1px #ffffff0a;overflow:hidden;z-index:60}.toast-content{display:flex;align-items:flex-start;gap:10px;padding:14px 16px}.toast-icon svg{width:16px;height:16px}.toast[data-tone=success] .toast-icon svg{color:var(--accent)}.toast[data-tone=error] .toast-icon svg{color:var(--danger)}.toast[data-tone=info] .toast-icon svg{color:#a5b4fc}.toast-text{flex:1}.toast-text strong{display:block;font-size:.8rem;color:var(--text);margin-bottom:2px}.toast-text span{font-size:.775rem;color:var(--text-muted)}.toast-bar{height:2px;animation:toast-progress 2.6s linear forwards}.toast[data-tone=success] .toast-bar{background:var(--accent)}.toast[data-tone=error] .toast-bar{background:var(--danger)}.toast[data-tone=info] .toast-bar{background:#818cf8}@keyframes toast-progress{0%{width:100%}to{width:0%}}.toast-enter-active,.toast-leave-active{transition:all .2s cubic-bezier(.16,1,.3,1)}.toast-enter-from,.toast-leave-to{opacity:0;transform:translate(16px) scale(.96)}.busy-overlay{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;background:#09090bb3;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:50}.busy-card{display:grid;gap:10px;justify-items:center;padding:24px 32px;border-radius:var(--radius-xl);background:var(--bg-elevated);border:1px solid var(--line-strong);box-shadow:var(--shadow)}.busy-card strong{font-size:.9rem;color:var(--text)}.busy-card span{font-size:.8rem;color:var(--text-muted)}.busy-spinner{width:32px;height:32px;border-radius:50%;border:2px solid rgba(16,185,129,.15);border-top-color:var(--accent);animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#3f3f4699;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#52525bcc}@media(max-width:900px){.sidebar{width:200px}}@media(max-width:680px){.sidebar{display:none}.detail-hero,.detail-topbar{flex-direction:column;align-items:stretch}.detail-actions{justify-content:stretch}.detail-chip-sections,.catalog-grid{grid-template-columns:1fr}}
@@ -4,8 +4,8 @@
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>Skillex UI</title>
7
- <script type="module" crossorigin src="/assets/index-DXrW27jF.js"></script>
8
- <link rel="stylesheet" crossorigin href="/assets/index-K8hfZs7_.css">
7
+ <script type="module" crossorigin src="/assets/index-DN-z--cR.js"></script>
8
+ <link rel="stylesheet" crossorigin href="/assets/index-UBECch6X.css">
9
9
  </head>
10
10
  <body>
11
11
  <div id="app" data-app-root="skillex-web-ui"></div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "skillex",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "description": "CLI to list, install, and synchronize AI agent skills from GitHub-hosted catalogs.",
5
5
  "type": "module",
6
6
  "repository": {
@@ -1 +0,0 @@
1
- import{d as b,j as g,u as h,k as f,l as w,c as e,a as t,f as r,b as d,t as i,e as u,F as v,m as x,r as m,g as y,o}from"./index-DXrW27jF.js";const C={class:"page-column"},S={class:"panel"},_={class:"detail-topbar"},I={key:0,class:"detail-hero"},M={class:"detail-description"},B={class:"detail-actions"},H={key:0,class:"empty-state panel"},L={class:"panel"},V={class:"detail-metadata-grid"},j={class:"metadata-card"},z={style:{"font-family":"monospace","font-size":"0.82rem"}},D={class:"metadata-card"},N={class:"metadata-card"},$={style:{"font-family":"monospace"}},T={class:"metadata-card"},E={class:"detail-chip-sections"},A={class:"chip-row"},F={key:0,style:{"font-size":"0.8rem",color:"var(--text-dim)"}},R={class:"chip-row"},K={key:0,style:{"font-size":"0.8rem",color:"var(--text-dim)"}},P={class:"panel"},U={key:0,class:"error-card",style:{margin:"0 20px 20px"}},q=["innerHTML"],Q=b({__name:"SkillDetailPage",setup(G){const k=g(),a=h(),p=y(()=>typeof k.params.skillId=="string"?k.params.skillId:""),s=y(()=>a.state.detail);async function c(){p.value&&await a.loadSkillDetail(p.value)}return f(p,()=>void c()),w(()=>void c()),(J,l)=>(o(),e("section",C,[t("div",S,[t("div",_,[t("button",{class:"button button-ghost",type:"button",onClick:l[0]||(l[0]=n=>r(a).navigateHome())},[...l[5]||(l[5]=[t("svg",{width:"13",height:"13",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 19l-7-7 7-7"})],-1),d(" Catálogo ",-1)])]),l[6]||(l[6]=t("p",{class:"section-label"},"Detalhe da skill",-1))]),s.value?(o(),e("div",I,[t("div",null,[l[7]||(l[7]=t("p",{class:"eyebrow"},"Skill",-1)),t("h2",null,i(s.value.skill.name),1),t("p",M,i(s.value.skill.description),1)]),t("div",B,[t("button",{class:"button button-secondary",type:"button",onClick:l[1]||(l[1]=n=>r(a).updateSkill(s.value.skill.id))},[...l[8]||(l[8]=[t("svg",{width:"13",height:"13",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),d(" Update ",-1)])]),t("button",{class:"button button-ghost",type:"button",onClick:l[2]||(l[2]=n=>r(a).syncNow())},"Sync"),s.value.skill.installed?(o(),e("button",{key:1,class:"button button-danger",type:"button",onClick:l[4]||(l[4]=n=>r(a).removeSkill(s.value.skill.id))},[...l[10]||(l[10]=[t("svg",{width:"13",height:"13",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1),d(" Remover ",-1)])])):(o(),e("button",{key:0,class:"button button-primary",type:"button",onClick:l[3]||(l[3]=n=>r(a).installSkill(s.value.skill))},[...l[9]||(l[9]=[t("svg",{width:"13",height:"13",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2.5",d:"M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4"})],-1),d(" Instalar ",-1)])]))])])):u("",!0)]),r(a).state.detailLoading?(o(),e("div",H,[...l[11]||(l[11]=[t("div",{style:{width:"28px",height:"28px","border-radius":"50%",border:"2px solid rgba(16,185,129,0.15)","border-top-color":"var(--accent)",animation:"spin 700ms linear infinite"}},null,-1),t("strong",null,"Carregando detalhes...",-1)])])):s.value?(o(),e(v,{key:1},[t("div",L,[t("div",V,[t("article",j,[l[12]||(l[12]=t("span",null,"Skill ID",-1)),t("strong",z,i(s.value.skill.id),1)]),t("article",D,[l[13]||(l[13]=t("span",null,"Source",-1)),t("strong",null,i(s.value.skill.source.label||s.value.skill.source.repo),1)]),t("article",N,[l[14]||(l[14]=t("span",null,"Versão",-1)),t("strong",$,"v"+i(s.value.skill.version),1)]),t("article",T,[l[15]||(l[15]=t("span",null,"Instalada",-1)),t("strong",{style:x(s.value.skill.installed?"color:var(--accent)":"color:var(--text-muted)")},i(s.value.skill.installed?"✓ Sim":"Não"),5)])]),t("div",E,[t("div",null,[l[16]||(l[16]=t("p",{class:"section-label",style:{margin:"0 0 8px",display:"block"}},"Tags",-1)),t("div",A,[(o(!0),e(v,null,m(s.value.skill.tags,n=>(o(),e("span",{key:n,class:"chip"},i(n),1))),128)),s.value.skill.tags.length===0?(o(),e("span",F,"—")):u("",!0)])]),t("div",null,[l[17]||(l[17]=t("p",{class:"section-label",style:{margin:"0 0 8px",display:"block"}},"Compatibilidade",-1)),t("div",R,[(o(!0),e(v,null,m(s.value.skill.compatibility,n=>(o(),e("span",{key:n,class:"chip chip-accent"},i(n),1))),128)),s.value.skill.compatibility.length===0?(o(),e("span",K,"—")):u("",!0)])])])]),t("div",P,[l[19]||(l[19]=t("div",{class:"panel-head"},[t("div",{class:"panel-head-title"},[t("p",{class:"eyebrow"},"Instruções"),t("h2",null,"SKILL.md"),t("p",null,"Conteúdo renderizado pelo backend.")])],-1)),s.value.instructionsError?(o(),e("div",U,[l[18]||(l[18]=t("strong",null,"Instruções indisponíveis",-1)),t("p",null,i(s.value.instructionsError),1)])):(o(),e("article",{key:1,class:"markdown-body",innerHTML:s.value.instructionsHtml},null,8,q))])],64)):u("",!0)]))}});export{Q as default};
@@ -1 +0,0 @@
1
- *,*:before,*:after{box-sizing:border-box}html,body,#app{margin:0;height:100%;min-height:100%}button,input,select{font:inherit}a{color:inherit;text-decoration:none}:root{--bg: #09090b;--bg-panel: rgba(24, 24, 27, .7);--bg-elevated: #18181b;--bg-hover: rgba(39, 39, 42, .6);--line: rgba(63, 63, 70, .5);--line-strong: rgba(82, 82, 91, .7);--text: #f4f4f5;--text-muted: #71717a;--text-dim: #52525b;--accent: #10b981;--accent-hover: #34d399;--accent-soft: rgba(16, 185, 129, .12);--accent-ring: rgba(16, 185, 129, .25);--danger: #f87171;--danger-soft: rgba(248, 113, 113, .1);--danger-ring: rgba(239, 68, 68, .25);--warn: #fbbf24;--warn-soft: rgba(251, 191, 36, .1);--radius-xl: 18px;--radius-lg: 14px;--radius-md: 10px;--radius-sm: 8px;--shadow: 0 8px 32px rgba(0, 0, 0, .5);--shadow-soft: 0 4px 16px rgba(0, 0, 0, .3);font-family:Inter,Segoe UI,system-ui,-apple-system,sans-serif;color-scheme:dark}body{background:var(--bg);color:var(--text);overflow:hidden;height:100vh}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;background-image:radial-gradient(circle,rgba(255,255,255,.035) 1px,transparent 1px);background-size:24px 24px;pointer-events:none;z-index:0}.app-shell{position:relative;display:flex;height:100vh;overflow:hidden;z-index:1}.shell-background{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0}.shell-glow{position:absolute;border-radius:50%;filter:blur(1px)}.shell-glow-left{width:600px;height:600px;top:-150px;left:-150px;background:radial-gradient(circle,rgba(16,185,129,.07) 0%,transparent 70%)}.shell-glow-right{width:500px;height:500px;bottom:-100px;right:-100px;background:radial-gradient(circle,rgba(99,102,241,.05) 0%,transparent 70%)}.shell-grid{display:none}.sidebar{width:232px;flex-shrink:0;display:flex;flex-direction:column;background:#18181b80;border-right:1px solid var(--line);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);z-index:2;overflow-y:auto}.sidebar-logo{height:56px;display:flex;align-items:center;padding:0 20px;border-bottom:1px solid var(--line);gap:8px;font-size:1rem;font-weight:700;color:#fff;letter-spacing:-.02em;flex-shrink:0}.sidebar-logo svg{color:var(--accent);filter:drop-shadow(0 0 6px rgba(16,185,129,.5))}.sidebar-logo .accent-dot{color:var(--accent)}.sidebar-nav{padding:12px;display:flex;flex-direction:column;gap:2px;flex:1}.nav-section-label{font-size:10px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--text-dim);padding:0 10px;margin:12px 0 4px}.nav-section-label:first-child{margin-top:4px}.nav-btn{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:var(--radius-md);border:1px solid transparent;background:transparent;color:var(--text-muted);font-size:.875rem;font-weight:500;cursor:pointer;width:100%;text-align:left;transition:background .15s,color .15s,border-color .15s}.nav-btn svg{flex-shrink:0;opacity:.7}.nav-btn:hover{background:var(--bg-hover);color:var(--text)}.nav-btn:hover svg{opacity:1}.nav-btn.active{background:var(--bg-elevated);color:#fff;border-color:var(--line-strong)}.nav-btn.active svg{opacity:1}.nav-badge{margin-left:auto;background:var(--accent-soft);border:1px solid rgba(16,185,129,.25);color:var(--accent);font-size:10px;font-weight:700;padding:1px 6px;border-radius:999px;font-variant-numeric:tabular-nums}.sidebar-footer{padding:12px;border-top:1px solid var(--line);flex-shrink:0}.adapter-badge{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--radius-md);background:#27272a80;border:1px solid rgba(63,63,70,.4)}.adapter-badge-icon{font-size:1.25rem;line-height:1}.adapter-badge-info{flex:1;min-width:0}.adapter-badge-label{font-size:10px;color:var(--text-dim);line-height:1;margin-bottom:3px}.adapter-badge-name{font-size:.8rem;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.adapter-badge-dot{width:6px;height:6px;border-radius:50%;background:var(--accent);flex-shrink:0;box-shadow:0 0 6px #10b98199;animation:pulse-dot 2s ease-in-out infinite}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.5}}.sidebar-meta{display:flex;justify-content:space-between;padding:8px 12px 0;font-size:11px;color:var(--text-dim)}.main-col{flex:1;min-width:0;display:flex;flex-direction:column;overflow:hidden;position:relative;z-index:1}.topbar{height:56px;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 24px;border-bottom:1px solid var(--line);background:#09090bbf;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);z-index:10}.search-shell{position:relative;flex:1;max-width:340px}.search-shell svg{position:absolute;left:10px;top:50%;transform:translateY(-50%);width:14px;height:14px;color:var(--text-dim);pointer-events:none;transition:color .15s}.search-shell:focus-within svg{color:var(--accent)}.search-shell input{width:100%;padding:7px 36px 7px 32px;border:1px solid rgba(63,63,70,.5);border-radius:var(--radius-md);background:#18181b99;color:var(--text);font-size:.875rem;outline:none;transition:border-color .15s,box-shadow .15s}.search-shell input::placeholder{color:var(--text-dim)}.search-shell input:focus{border-color:#10b98166;box-shadow:0 0 0 3px var(--accent-ring)}.search-kbd{position:absolute;right:8px;top:50%;transform:translateY(-50%);font-size:10px;font-family:monospace;color:var(--text-dim);background:var(--bg-elevated);border:1px solid var(--line-strong);padding:1px 5px;border-radius:5px;pointer-events:none}.toggle-group{display:flex;align-items:center;background:var(--bg-elevated);border:1px solid rgba(63,63,70,.5);border-radius:var(--radius-md);padding:3px;gap:2px}.toggle-btn{padding:5px 10px;border-radius:var(--radius-sm);border:none;background:transparent;color:var(--text-muted);font-size:.75rem;font-weight:500;cursor:pointer;transition:background .15s,color .15s;white-space:nowrap}.toggle-btn:hover{color:var(--text)}.toggle-btn.active{background:#3f3f46cc;color:#fff;box-shadow:var(--shadow-soft)}.adapter-toggle-btn{width:30px;height:30px;padding:0;display:flex;align-items:center;justify-content:center;font-size:1rem;border-radius:var(--radius-sm);border:none;background:transparent;cursor:pointer;transition:background .15s,opacity .15s;opacity:.45}.adapter-toggle-btn:hover{opacity:.8;background:var(--bg-hover)}.adapter-toggle-btn.active{background:#3f3f46cc;opacity:1}.topbar-divider{width:1px;height:20px;background:var(--line);flex-shrink:0}.topbar-actions{display:flex;align-items:center;gap:6px}.status-banner{padding:10px 24px;font-size:.8rem;background:var(--accent-soft);border-bottom:1px solid rgba(16,185,129,.2);color:var(--accent-hover)}.status-banner[data-tone=error]{background:var(--danger-soft);border-color:#f8717133;color:var(--danger)}.status-banner[data-tone=info]{background:#6366f114;border-color:#6366f133;color:#a5b4fc}.workspace-layout{flex:1;overflow-y:auto;padding:24px}.panel{background:#18181b8c;border:1px solid var(--line);border-radius:var(--radius-xl);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.panel-body{padding:20px}.panel-head{padding:20px 20px 0;display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:16px}.panel-head-title{display:grid;gap:4px}.eyebrow{font-size:10px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--accent)}.panel-head h2{margin:0;font-size:1.2rem;font-weight:700;letter-spacing:-.03em;color:#fff}.panel-head p{margin:0;font-size:.825rem;color:var(--text-muted);line-height:1.5}.section-label{font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--text-dim)}.stat-grid,.hero-metrics,.catalog-overview,.detail-metadata-grid{display:grid;gap:10px;padding:0 20px 20px}.hero-metrics,.catalog-overview{grid-template-columns:repeat(auto-fit,minmax(100px,1fr))}.stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.detail-metadata-grid{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));padding:0 20px 20px}.stat-card,.overview-card,.hero-metric,.metadata-card{padding:12px 14px;border-radius:var(--radius-lg);background:#27272a73;border:1px solid rgba(63,63,70,.35)}.stat-card span,.overview-card span,.hero-metric span,.metadata-card span{display:block;font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--text-dim);margin-bottom:6px}.stat-card strong,.overview-card strong,.hero-metric strong,.metadata-card strong{display:block;font-size:1.05rem;font-weight:700;color:var(--text);letter-spacing:-.02em;word-break:break-all}.path-value{font-size:.72rem!important;font-family:JetBrains Mono,Fira Code,monospace;word-break:break-all;opacity:.8}.button,.link-button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:34px;padding:0 14px;border:1px solid transparent;border-radius:var(--radius-md);cursor:pointer;font-size:.8rem;font-weight:600;transition:background .15s,border-color .15s,box-shadow .15s,transform .12s,color .15s}.button:active{transform:scale(.97)}.button:disabled{opacity:.5;cursor:not-allowed;transform:none}.button-primary{background:var(--accent);color:#030712;box-shadow:0 0 14px #10b98133}.button-primary:hover:not(:disabled){background:var(--accent-hover);box-shadow:0 0 20px #10b98159}.button-secondary{background:#3f3f4673;border-color:#3f3f4699;color:var(--text)}.button-secondary:hover:not(:disabled){background:#3f3f46b3}.button-ghost,.link-button{background:transparent;border-color:#3f3f4680;color:var(--text-muted)}.button-ghost:hover:not(:disabled),.link-button:hover{background:var(--bg-hover);color:var(--text);border-color:var(--line-strong)}.button-danger{background:var(--danger-soft);border-color:#f8717133;color:var(--danger)}.button-danger:hover:not(:disabled){background:#f871712e}.button-icon{width:32px;min-height:32px;padding:0;border-radius:var(--radius-md)}.action-cluster{display:flex;align-items:center;gap:8px}.action-row{display:flex;gap:6px;flex-wrap:wrap;align-items:center}.chip{display:inline-flex;align-items:center;height:26px;padding:0 10px;border-radius:999px;border:1px solid rgba(63,63,70,.45);background:#27272a8c;font-size:.75rem;font-weight:600;color:var(--text-muted)}.chip-accent{background:var(--accent-soft);border-color:#10b98133;color:var(--accent)}.chip-row,.tag-block{display:flex;flex-wrap:wrap;gap:6px}.chip-section{padding:0 20px 20px;display:grid;gap:8px}.tag-block{padding:0 20px}.tag-block-compat{padding-bottom:20px}.source-form{display:grid;gap:8px;padding:0 20px 16px}.source-form input,.search-shell-standalone input{width:100%;padding:8px 12px;border:1px solid rgba(63,63,70,.5);border-radius:var(--radius-md);background:#09090b99;color:var(--text);font-size:.8rem;outline:none;transition:border-color .15s,box-shadow .15s}.source-form input::placeholder{color:var(--text-dim);font-size:.8rem}.source-form input:focus{border-color:#10b98159;box-shadow:0 0 0 3px var(--accent-ring)}.source-list,.sync-list{display:grid;gap:6px;padding:0 20px 20px}.source-item{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--radius-md);background:#27272a66;border:1px solid rgba(63,63,70,.35)}.source-item strong{font-size:.825rem;color:var(--text)}.source-item p{margin:3px 0 0;font-size:.75rem;color:var(--text-dim);font-family:monospace}.sync-item{padding:10px 12px;border-radius:var(--radius-md);background:#27272a66;border:1px solid rgba(63,63,70,.35);display:grid;gap:4px}.sync-item-head{display:flex;justify-content:space-between;gap:8px;align-items:baseline}.sync-item strong{font-size:.825rem;color:var(--text)}.sync-item p{margin:0;font-size:.72rem;color:var(--text-dim);font-family:monospace;word-break:break-all}.sync-item-head span{font-size:.7rem;color:var(--text-dim);white-space:nowrap}.muted-copy{font-size:.8rem;color:var(--text-dim);padding:0 20px 16px}.page-column{display:grid;gap:16px}.category-pills{display:flex;flex-wrap:wrap;gap:8px;padding:0 20px 20px}.category-pill{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;border-radius:999px;border:1px solid rgba(63,63,70,.45);background:#18181b99;color:var(--text-muted);font-size:.78rem;font-weight:600;cursor:pointer;transition:background .15s,border-color .15s,color .15s}.category-pill:hover{color:var(--text);border-color:var(--line-strong)}.category-pill.active{background:var(--accent-soft);border-color:#10b98159;color:var(--accent)}.category-pill-count{font-size:10px;opacity:.6}.catalog-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px;padding:0 20px 20px}.skill-card{position:relative;display:flex;flex-direction:column;border:1px solid rgba(63,63,70,.45);border-radius:var(--radius-xl);background:#18181ba6;cursor:pointer;overflow:hidden;transition:border-color .2s,box-shadow .2s,transform .2s}.skill-card:hover{border-color:#10b98138;box-shadow:0 0 0 1px #10b9811f,0 8px 28px #10b98112,0 2px 8px #0006;transform:translateY(-2px)}.skill-card.is-installed{border-color:#10b9814d;box-shadow:0 0 0 1px #10b9811f}.skill-card.is-installed:hover{box-shadow:0 0 0 1px #10b98159,0 8px 28px #10b9811a}.skill-card.is-installed:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(135deg,rgba(16,185,129,.04) 0%,transparent 60%);pointer-events:none;z-index:0}.skill-card-accent{display:none}.skill-card-body{padding:18px;flex:1;display:flex;flex-direction:column;gap:12px;position:relative;z-index:1}.skill-card-icon-row{display:flex;justify-content:space-between;align-items:flex-start}.skill-icon-wrap{position:relative;width:48px;height:48px;border-radius:14px;border:1px solid rgba(63,63,70,.4);display:flex;align-items:center;justify-content:center;font-size:1.5rem;flex-shrink:0}.icon-bg-workflow{background:linear-gradient(135deg,#14532d,#052e16);border-color:#22c55e33}.icon-bg-testing{background:linear-gradient(135deg,#1e3a5f,#0c1a2e);border-color:#3b82f633}.icon-bg-devops{background:linear-gradient(135deg,#0e3a4a,#042f3e);border-color:#06b6d433}.icon-bg-tools{background:linear-gradient(135deg,#3b1c6a,#1e0e3a);border-color:#8b5cf633}.icon-bg-security{background:linear-gradient(135deg,#4a1818,#2d0c0c);border-color:#ef444433}.icon-bg-default{background:linear-gradient(135deg,#27272a,#18181b);border-color:#71717a33}.skill-installed-dot{position:absolute;top:-4px;right:-4px;width:16px;height:16px;border-radius:50%;background:var(--accent);border:2px solid #09090b;display:flex;align-items:center;justify-content:center;box-shadow:0 0 6px #10b98180}.skill-installed-dot svg{width:9px;height:9px;color:#030712}.skill-card-meta{display:flex;flex-direction:column;align-items:flex-end;gap:5px}.verified-badge{display:inline-flex;align-items:center;gap:4px;padding:2px 7px;border-radius:5px;font-size:9px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;background:var(--accent-soft);border:1px solid rgba(16,185,129,.2);color:var(--accent)}.downloads-count{display:flex;align-items:center;gap:4px;font-size:11px;color:var(--text-dim)}.downloads-count svg{width:12px;height:12px}.skill-card-head{display:flex;align-items:baseline;gap:8px}.skill-card-head h3{margin:0;font-size:.975rem;font-weight:700;letter-spacing:-.02em;color:#fff;transition:color .15s;line-height:1.2}.skill-card:hover .skill-card-head h3{color:var(--accent)}.version-badge{font-size:11px;font-family:JetBrains Mono,monospace;color:var(--text-dim);white-space:nowrap}.skill-description{margin:0;font-size:.8rem;color:var(--text-muted);line-height:1.55;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.tag-block{padding:0;gap:5px}.skill-tag{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:6px;border:1px solid;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.06em}.tag-git{background:#22c55e14;color:#86efac;border-color:#22c55e2e}.tag-test{background:#3b82f614;color:#93c5fd;border-color:#3b82f62e}.tag-docker{background:#06b6d414;color:#67e8f9;border-color:#06b6d42e}.tag-security{background:#ef444414;color:#fca5a5;border-color:#ef44442e}.tag-react{background:#38bdf814;color:#7dd3fc;border-color:#38bdf82e}.tag-python{background:#facc1514;color:#fde68a;border-color:#facc152e}.tag-default{background:#71717a1f;color:#a1a1aa;border-color:#71717a33}.skill-card-footer{display:flex;align-items:center;justify-content:space-between;padding:10px 18px;border-top:1px solid rgba(63,63,70,.35);position:relative;z-index:1}.skill-card.is-installed .skill-card-footer{background:#10b98108}.skill-author{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--text-dim)}.skill-author img{width:16px;height:16px;border-radius:50%;background:var(--bg-elevated)}.skill-card-actions{display:flex;align-items:center;gap:6px}.installed-label{display:flex;align-items:center;gap:5px;font-size:11px;font-weight:600;color:var(--accent)}.installed-label:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent);display:inline-block}.remove-btn{padding:5px;border-radius:var(--radius-sm);border:1px solid transparent;background:transparent;color:var(--text-dim);cursor:pointer;transition:color .15s,background .15s,border-color .15s;display:flex;align-items:center;justify-content:center}.remove-btn svg{width:14px;height:14px}.remove-btn:hover{color:var(--danger);background:var(--danger-soft);border-color:#f8717133}.meta-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.meta-grid .section-label{display:block;margin-bottom:3px}.meta-grid strong{font-size:.78rem;color:var(--text)}.tag-block-compat{margin-top:4px}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:56px 24px;border:1px dashed rgba(63,63,70,.5);border-radius:var(--radius-xl);text-align:center;gap:8px}.empty-state strong{color:var(--text);font-size:.95rem}.empty-state p{color:var(--text-muted);font-size:.825rem;margin:0}.error-card{padding:16px 20px;border-radius:var(--radius-lg);border:1px solid rgba(248,113,113,.2);background:var(--danger-soft);display:grid;gap:6px}.error-card strong{color:var(--danger);font-size:.875rem}.error-card p{margin:0;font-size:.8rem;color:var(--text-muted)}.detail-topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 20px 0}.detail-hero{padding:0 20px 20px;display:flex;justify-content:space-between;gap:20px;align-items:flex-start}.detail-hero h2{margin:6px 0 0;font-size:1.4rem;font-weight:700;letter-spacing:-.03em;color:#fff}.detail-description{margin:8px 0 0;font-size:.85rem;color:var(--text-muted);line-height:1.6;max-width:60ch}.detail-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end;align-items:flex-start;padding-top:8px}.detail-chip-sections{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;padding:0 20px 20px}.markdown-body{padding:0 20px 20px;max-width:78ch;line-height:1.7;color:var(--text-muted);font-size:.875rem}.markdown-body :is(h1,h2,h3,h4){color:var(--text);letter-spacing:-.03em}.markdown-body h1{font-size:1.6rem;margin:0 0 1rem}.markdown-body h2{font-size:1.25rem;margin:1.6rem 0 .6rem}.markdown-body h3{font-size:1.05rem;margin:1.2rem 0 .4rem}.markdown-body pre,.markdown-body code{font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-size:.82em}.markdown-body pre{overflow-x:auto;padding:14px 16px;border-radius:var(--radius-lg);background:#00000080;border:1px solid var(--line);color:#d4d4d8}.markdown-body :not(pre)>code{background:#3f3f4666;border:1px solid var(--line);padding:1px 5px;border-radius:4px;color:var(--accent)}.markdown-body table{width:100%;border-collapse:collapse;margin:1rem 0;font-size:.875rem}.markdown-body th,.markdown-body td{padding:10px 12px;border-bottom:1px solid var(--line);text-align:left}.markdown-body th{color:var(--text);font-weight:600}.toast{position:fixed;right:20px;bottom:20px;min-width:260px;max-width:340px;border-radius:var(--radius-lg);background:var(--bg-elevated);border:1px solid var(--line-strong);box-shadow:0 8px 32px #00000080,0 0 0 1px #ffffff0a;overflow:hidden;z-index:60}.toast-content{display:flex;align-items:flex-start;gap:10px;padding:14px 16px}.toast-icon svg{width:16px;height:16px}.toast[data-tone=success] .toast-icon svg{color:var(--accent)}.toast[data-tone=error] .toast-icon svg{color:var(--danger)}.toast[data-tone=info] .toast-icon svg{color:#a5b4fc}.toast-text{flex:1}.toast-text strong{display:block;font-size:.8rem;color:var(--text);margin-bottom:2px}.toast-text span{font-size:.775rem;color:var(--text-muted)}.toast-bar{height:2px;animation:toast-progress 2.6s linear forwards}.toast[data-tone=success] .toast-bar{background:var(--accent)}.toast[data-tone=error] .toast-bar{background:var(--danger)}.toast[data-tone=info] .toast-bar{background:#818cf8}@keyframes toast-progress{0%{width:100%}to{width:0%}}.toast-enter-active,.toast-leave-active{transition:all .2s cubic-bezier(.16,1,.3,1)}.toast-enter-from,.toast-leave-to{opacity:0;transform:translate(16px) scale(.96)}.busy-overlay{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;background:#09090bb3;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:50}.busy-card{display:grid;gap:10px;justify-items:center;padding:24px 32px;border-radius:var(--radius-xl);background:var(--bg-elevated);border:1px solid var(--line-strong);box-shadow:var(--shadow)}.busy-card strong{font-size:.9rem;color:var(--text)}.busy-card span{font-size:.8rem;color:var(--text-muted)}.busy-spinner{width:32px;height:32px;border-radius:50%;border:2px solid rgba(16,185,129,.15);border-top-color:var(--accent);animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#3f3f4699;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#52525bcc}@media(max-width:900px){.sidebar{width:200px}}@media(max-width:680px){.sidebar{display:none}.detail-hero,.detail-topbar{flex-direction:column;align-items:stretch}.detail-actions{justify-content:stretch}.detail-chip-sections,.catalog-grid{grid-template-columns:1fr}}