From aa477a553b3c8507a42e0fdcf43e7a45e978f5c8 Mon Sep 17 00:00:00 2001 From: Alejandro Martinez Date: Thu, 12 Feb 2026 14:37:40 +0100 Subject: [PATCH] Add author auth, forking, tags, and stats tracking Introduce token-based author authentication (register/verify API), skill forking with EditGate protection, tag metadata on skills, and download/push stats. Enhanced push scripts with token auth and per-skill filtering. Updated UI with stats, tags, and author info on skill cards. --- .astro/types.d.ts | 1 - .claude/skills/commit-pro.md | 15 - .claude/skills/example-skill.md | 9 +- .gitignore | 3 +- data/skills/commit-pro.md | 15 - data/skills/example-skill.md | 2 + data/stats.json | 7 + dist/client/_astro/DeleteButton.CHpgpUL1.js | 1 + dist/client/_astro/DeleteButton.CyEek_0f.js | 1 - dist/client/_astro/EditGate.mFTQzSOo.js | 1 + dist/client/_astro/SkillEditor.CYIrd0Il.js | 65 --- dist/client/_astro/SkillEditor.DYeR1V3X.js | 66 +++ dist/client/_astro/SkillSearch.A7FO5axR.js | 1 + dist/client/_astro/SkillSearch.DXmAyDfU.js | 1 - dist/client/_astro/_slug_.CExMWyw3.css | 1 - dist/client/_astro/_slug_.DRpcPMTm.css | 1 + dist/client/_astro/client.BOmCbIK_.js | 1 - dist/client/_astro/client.BnTlSu1B.js | 1 + .../runtime-core.esm-bundler.D9KZBfyO.js | 15 - .../runtime-dom.esm-bundler.A7MyAQcw.js | 19 + .../runtime-dom.esm-bundler.ALO2-icn.js | 5 - dist/client/favicon.svg | 21 + dist/server/_@astrojs-ssr-adapter.mjs | 2 +- ...mjs => _@astrojs-ssr-adapter_BeL8VyJ8.mjs} | 4 +- .../_plugin-vue_export-helper_B1lnwsE2.mjs | 24 - .../_plugin-vue_export-helper_CEgY73aA.mjs | 24 + ...> astro-designed-error-pages_DSexancP.mjs} | 4 +- ...erver_B-2LxKLH.mjs => server_CF97kUu8.mjs} | 4 +- ...odels_DPfuEi7q.mjs => models_BK7lP4G3.mjs} | 143 +++++- .../{node_WXNYuHqd.mjs => node_HH9e2ntY.mjs} | 10 +- ...{sharp_CRCimLOL.mjs => sharp_D9uxjd11.mjs} | 4 +- ...kills_COWfD5oy.mjs => skills_BacVQUiS.mjs} | 14 +- dist/server/chunks/stats_CaDi9y9J.mjs | 46 ++ dist/server/chunks/sync_BEq_wzpT.mjs | 309 +++++++++++++ dist/server/chunks/sync_B_Og9xl3.mjs | 71 --- dist/server/chunks/tokens_CAzj9Aj8.mjs | 55 +++ dist/server/entry.mjs | 60 +-- dist/server/manifest_BJPuFUv4.mjs | 101 ---- dist/server/manifest_Bz0Ba_R4.mjs | 101 ++++ dist/server/pages/_image.astro.mjs | 2 +- dist/server/pages/_slug_.astro.mjs | 252 +++++++++- dist/server/pages/_slug_/edit.astro.mjs | 15 +- dist/server/pages/_slug_/gi.astro.mjs | 40 ++ dist/server/pages/_slug_/i.astro.mjs | 40 ++ dist/server/pages/api/auth/register.astro.mjs | 55 +++ dist/server/pages/api/auth/verify.astro.mjs | 40 ++ dist/server/pages/api/skills.astro.mjs | 18 +- dist/server/pages/api/skills/_slug_.astro.mjs | 54 ++- dist/server/pages/api/sync.astro.mjs | 2 +- dist/server/pages/api/sync/project.astro.mjs | 2 +- dist/server/pages/gi.astro.mjs | 7 +- dist/server/pages/gp.astro.mjs | 2 +- dist/server/pages/i.astro.mjs | 2 +- dist/server/pages/index.astro.mjs | 297 +++++++++++- dist/server/pages/new.astro.mjs | 22 +- dist/server/pages/p.astro.mjs | 7 +- package-lock.json | 1 - public/favicon.svg | 21 + src/components/DeleteButton.vue | 164 ++++++- src/components/EditGate.vue | 143 ++++++ src/components/SkillCard.astro | 52 ++- src/components/SkillEditor.vue | 212 ++++++++- src/components/SkillSearch.vue | 431 +++++++++++++++++- src/layouts/Base.astro | 15 +- src/lib/skills.ts | 18 + src/lib/stats.ts | 59 +++ src/lib/sync.ts | 279 +++++++++++- src/lib/tokens.ts | 70 +++ src/pages/[slug].astro | 199 +++++--- src/pages/[slug]/edit.astro | 9 +- src/pages/[slug]/gi.ts | 36 ++ src/pages/[slug]/i.ts | 36 ++ src/pages/api/auth/register.ts | 50 ++ src/pages/api/auth/verify.ts | 35 ++ src/pages/api/skills/[slug].ts | 58 ++- src/pages/api/skills/index.ts | 18 + src/pages/gi.ts | 9 +- src/pages/index.astro | 218 +++++++-- src/pages/new.astro | 51 ++- src/pages/p.ts | 9 +- 80 files changed, 3618 insertions(+), 660 deletions(-) delete mode 100644 .claude/skills/commit-pro.md delete mode 100644 data/skills/commit-pro.md create mode 100644 data/stats.json create mode 100644 dist/client/_astro/DeleteButton.CHpgpUL1.js delete mode 100644 dist/client/_astro/DeleteButton.CyEek_0f.js create mode 100644 dist/client/_astro/EditGate.mFTQzSOo.js delete mode 100644 dist/client/_astro/SkillEditor.CYIrd0Il.js create mode 100644 dist/client/_astro/SkillEditor.DYeR1V3X.js create mode 100644 dist/client/_astro/SkillSearch.A7FO5axR.js delete mode 100644 dist/client/_astro/SkillSearch.DXmAyDfU.js delete mode 100644 dist/client/_astro/_slug_.CExMWyw3.css create mode 100644 dist/client/_astro/_slug_.DRpcPMTm.css delete mode 100644 dist/client/_astro/client.BOmCbIK_.js create mode 100644 dist/client/_astro/client.BnTlSu1B.js delete mode 100644 dist/client/_astro/runtime-core.esm-bundler.D9KZBfyO.js create mode 100644 dist/client/_astro/runtime-dom.esm-bundler.A7MyAQcw.js delete mode 100644 dist/client/_astro/runtime-dom.esm-bundler.ALO2-icn.js create mode 100644 dist/client/favicon.svg rename dist/server/chunks/{_@astrojs-ssr-adapter_DIu76Dvd.mjs => _@astrojs-ssr-adapter_BeL8VyJ8.mjs} (99%) delete mode 100644 dist/server/chunks/_plugin-vue_export-helper_B1lnwsE2.mjs create mode 100644 dist/server/chunks/_plugin-vue_export-helper_CEgY73aA.mjs rename dist/server/chunks/{astro-designed-error-pages_B_BAqCrl.mjs => astro-designed-error-pages_DSexancP.mjs} (99%) rename dist/server/chunks/astro/{server_B-2LxKLH.mjs => server_CF97kUu8.mjs} (99%) rename dist/server/chunks/{models_DPfuEi7q.mjs => models_BK7lP4G3.mjs} (61%) rename dist/server/chunks/{node_WXNYuHqd.mjs => node_HH9e2ntY.mjs} (99%) rename dist/server/chunks/{sharp_CRCimLOL.mjs => sharp_D9uxjd11.mjs} (96%) rename dist/server/chunks/{skills_COWfD5oy.mjs => skills_BacVQUiS.mjs} (84%) create mode 100644 dist/server/chunks/stats_CaDi9y9J.mjs create mode 100644 dist/server/chunks/sync_BEq_wzpT.mjs delete mode 100644 dist/server/chunks/sync_B_Og9xl3.mjs create mode 100644 dist/server/chunks/tokens_CAzj9Aj8.mjs delete mode 100644 dist/server/manifest_BJPuFUv4.mjs create mode 100644 dist/server/manifest_Bz0Ba_R4.mjs create mode 100644 dist/server/pages/_slug_/gi.astro.mjs create mode 100644 dist/server/pages/_slug_/i.astro.mjs create mode 100644 dist/server/pages/api/auth/register.astro.mjs create mode 100644 dist/server/pages/api/auth/verify.astro.mjs create mode 100644 public/favicon.svg create mode 100644 src/components/EditGate.vue create mode 100644 src/lib/stats.ts create mode 100644 src/lib/tokens.ts create mode 100644 src/pages/[slug]/gi.ts create mode 100644 src/pages/[slug]/i.ts create mode 100644 src/pages/api/auth/register.ts create mode 100644 src/pages/api/auth/verify.ts diff --git a/.astro/types.d.ts b/.astro/types.d.ts index 03d7cc4..f964fe0 100644 --- a/.astro/types.d.ts +++ b/.astro/types.d.ts @@ -1,2 +1 @@ /// -/// \ No newline at end of file diff --git a/.claude/skills/commit-pro.md b/.claude/skills/commit-pro.md deleted file mode 100644 index adb4d41..0000000 --- a/.claude/skills/commit-pro.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -name: "Commit Pro" -description: "Generates clean, conventional commit messages from staged changes." -allowedTools: - - Bash ---- - -# Commit Pro - -When the user asks you to commit, follow these steps: - -1. Run `git diff --cached` to see staged changes -2. Analyze the changes and determine the type: feat, fix, refactor, docs, test, chore -3. Write a concise commit message in conventional commit format -4. Ask the user to confirm before committing diff --git a/.claude/skills/example-skill.md b/.claude/skills/example-skill.md index 509a5cc..b890194 100644 --- a/.claude/skills/example-skill.md +++ b/.claude/skills/example-skill.md @@ -1,10 +1,7 @@ --- -name: "Example Skill" -description: "A sample skill that demonstrates the expected format for Claude Code skills." -allowedTools: - - Read - - Edit - - Write +name: example-skill +description: A sample skill that demonstrates the expected format for Claude Code skills. +allowed-tools: Read, Edit, Write --- # Example Skill diff --git a/.gitignore b/.gitignore index 40b878d..8317421 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -node_modules/ \ No newline at end of file +node_modules/ +data/tokens.json \ No newline at end of file diff --git a/data/skills/commit-pro.md b/data/skills/commit-pro.md deleted file mode 100644 index adb4d41..0000000 --- a/data/skills/commit-pro.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -name: "Commit Pro" -description: "Generates clean, conventional commit messages from staged changes." -allowedTools: - - Bash ---- - -# Commit Pro - -When the user asks you to commit, follow these steps: - -1. Run `git diff --cached` to see staged changes -2. Analyze the changes and determine the type: feat, fix, refactor, docs, test, chore -3. Write a concise commit message in conventional commit format -4. Ask the user to confirm before committing diff --git a/data/skills/example-skill.md b/data/skills/example-skill.md index b890194..7b96fd9 100644 --- a/data/skills/example-skill.md +++ b/data/skills/example-skill.md @@ -1,4 +1,6 @@ --- +author: Alejandro Martinez +author-email: amartinez2@certinia.com name: example-skill description: A sample skill that demonstrates the expected format for Claude Code skills. allowed-tools: Read, Edit, Write diff --git a/data/stats.json b/data/stats.json new file mode 100644 index 0000000..5755e1e --- /dev/null +++ b/data/stats.json @@ -0,0 +1,7 @@ +{ + "example-skill": { + "downloads": 0, + "pushes": 1, + "lastPushedAt": "2026-02-12T13:27:13.727Z" + } +} \ No newline at end of file diff --git a/dist/client/_astro/DeleteButton.CHpgpUL1.js b/dist/client/_astro/DeleteButton.CHpgpUL1.js new file mode 100644 index 0000000..1a64360 --- /dev/null +++ b/dist/client/_astro/DeleteButton.CHpgpUL1.js @@ -0,0 +1 @@ +import{c as m,a as o,d as v,t as h,l as C,g as x,w as D,v as T,b as k,T as E,h as S,i as d,m as B,o as c}from"./runtime-dom.esm-bundler.A7MyAQcw.js";import{_ as j}from"./_plugin-vue_export-helper.DlAUqK2U.js";const M=S({__name:"DeleteButton",props:{slug:{},authorEmail:{},authorName:{},authorHasToken:{type:Boolean}},setup(p,{expose:t}){t();const a=p,e=d(!1),u=d(!1),n=d(""),r=d(""),b=d();async function w(){if(a.authorEmail&&a.authorHasToken){const l=localStorage.getItem("skillshere-token")||"";if(l)try{if((await fetch("/api/auth/verify",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:a.authorEmail,token:l})})).ok){f(l);return}}catch{}u.value=!0,r.value="",n.value="",B(()=>b.value?.focus())}else f("")}async function _(){r.value="",e.value=!0;try{const l=await fetch("/api/auth/verify",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:a.authorEmail,token:n.value})});if(!l.ok){const s=await l.json();r.value=s.error||"Invalid token",e.value=!1;return}}catch{r.value="Could not verify token",e.value=!1;return}localStorage.setItem("skillshere-token",n.value),f(n.value)}async function f(l){if(!confirm(`Delete "${a.slug}"? This cannot be undone.`)){e.value=!1;return}e.value=!0,r.value="";try{const s={};l&&(s.Authorization=`Bearer ${l}`);const i=await fetch(`/api/skills/${a.slug}`,{method:"DELETE",headers:s});if(i.status===403){const y=await i.json();r.value=y.error||"Permission denied",u.value=!0,e.value=!1;return}if(!i.ok&&i.status!==204){const y=await i.json().catch(()=>({error:"Failed to delete"}));throw new Error(y.error||"Failed to delete")}window.location.href="/"}catch(s){r.value=s instanceof Error?s.message:"Failed to delete skill.",e.value=!1}}const g={props:a,deleting:e,showModal:u,token:n,error:r,tokenInput:b,handleClick:w,verifyAndDelete:_,doDelete:f};return Object.defineProperty(g,"__isScriptSetup",{enumerable:!1,value:!0}),g}}),N={class:"inline-flex"},P=["disabled"],I={class:"w-full max-w-md rounded-2xl border border-white/[0.08] bg-[var(--color-surface-200)] p-6 shadow-2xl"},O={class:"text-sm text-gray-500 mb-4"},V={class:"text-gray-300"},L={key:0,class:"mt-2 text-sm text-red-400"},z={class:"mt-4 flex items-center gap-3"},A=["disabled"],F={key:0,class:"h-4 w-4 animate-spin",fill:"none",viewBox:"0 0 24 24"};function H(p,t,a,e,u,n){return c(),m("div",N,[o("button",{onClick:e.handleClick,disabled:e.deleting,class:"inline-flex items-center gap-1.5 rounded-lg border border-red-500/20 bg-red-500/5 px-3.5 py-2 text-sm font-medium text-red-400 hover:bg-red-500/10 hover:border-red-500/30 disabled:opacity-50 active:scale-[0.97] transition-all"},[t[3]||(t[3]=o("svg",{class:"h-3.5 w-3.5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor","stroke-width":"2"},[o("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m14.74 9-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 0 1-2.244 2.077H8.084a2.25 2.25 0 0 1-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 0 0-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 0 1 3.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 0 0-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 0 0-7.5 0"})],-1)),v(" "+h(e.deleting?"Deleting...":"Delete"),1)],8,P),(c(),C(E,{to:"body"},[e.showModal?(c(),m("div",{key:0,class:"fixed inset-0 z-50 flex items-center justify-center bg-black/60 backdrop-blur-sm",onClick:t[2]||(t[2]=x(r=>e.showModal=!1,["self"]))},[o("div",I,[t[7]||(t[7]=o("h3",{class:"text-lg font-semibold text-red-400 mb-1"},"Delete Skill",-1)),o("p",O,[t[4]||(t[4]=v(" This skill is owned by ",-1)),o("strong",V,h(a.authorName||a.authorEmail),1),t[5]||(t[5]=v(". Enter your token to delete it. ",-1))]),o("form",{onSubmit:x(e.verifyAndDelete,["prevent"])},[D(o("input",{ref:"tokenInput","onUpdate:modelValue":t[0]||(t[0]=r=>e.token=r),type:"password",placeholder:"Paste your author token...",class:"w-full rounded-xl border border-white/[0.06] bg-[var(--color-surface-100)] px-4 py-2.5 text-sm text-white placeholder-gray-600 font-mono focus:border-red-500/50 focus:outline-none focus:ring-1 focus:ring-red-500/20 transition-all"},null,512),[[T,e.token]]),e.error?(c(),m("p",L,h(e.error),1)):k("",!0),o("div",z,[o("button",{type:"submit",disabled:e.deleting||!e.token,class:"inline-flex items-center gap-2 rounded-xl bg-red-500 px-5 py-2 text-sm font-semibold text-white hover:bg-red-600 disabled:opacity-50 active:scale-[0.97] transition-all"},[e.deleting?(c(),m("svg",F,[...t[6]||(t[6]=[o("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"},null,-1),o("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"},null,-1)])])):k("",!0),v(" "+h(e.deleting?"Deleting...":"Delete Permanently"),1)],8,A),o("button",{type:"button",onClick:t[1]||(t[1]=r=>e.showModal=!1),class:"ml-auto text-sm text-gray-600 hover:text-gray-300 transition-colors"}," Cancel ")])],32)])])):k("",!0)]))])}const U=j(M,[["render",H]]);export{U as default}; diff --git a/dist/client/_astro/DeleteButton.CyEek_0f.js b/dist/client/_astro/DeleteButton.CyEek_0f.js deleted file mode 100644 index 9028c9b..0000000 --- a/dist/client/_astro/DeleteButton.CyEek_0f.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as i}from"./_plugin-vue_export-helper.DlAUqK2U.js";import{c as d,a as l,b as c,t as u,e as m,f as p,o as f}from"./runtime-core.esm-bundler.D9KZBfyO.js";const _=m({__name:"DeleteButton",props:{slug:{}},setup(n,{expose:t}){t();const o=n,e=p(!1);async function a(){if(confirm(`Delete "${o.slug}"? This cannot be undone.`)){e.value=!0;try{const s=await fetch(`/api/skills/${o.slug}`,{method:"DELETE"});if(!s.ok&&s.status!==204)throw new Error("Failed to delete");window.location.href="/"}catch{alert("Failed to delete skill."),e.value=!1}}}const r={props:o,deleting:e,handleDelete:a};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),b=["disabled"];function g(n,t,o,e,a,r){return f(),d("button",{onClick:e.handleDelete,disabled:e.deleting,class:"inline-flex items-center gap-1.5 rounded-lg border border-red-500/20 bg-red-500/5 px-3.5 py-2 text-sm font-medium text-red-400 hover:bg-red-500/10 hover:border-red-500/30 disabled:opacity-50 active:scale-[0.97] transition-all"},[t[0]||(t[0]=l("svg",{class:"h-3.5 w-3.5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor","stroke-width":"2"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m14.74 9-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 0 1-2.244 2.077H8.084a2.25 2.25 0 0 1-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 0 0-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 0 1 3.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 0 0-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 0 0-7.5 0"})],-1)),c(" "+u(e.deleting?"Deleting...":"Delete"),1)],8,b)}const v=i(_,[["render",g]]);export{v as default}; diff --git a/dist/client/_astro/EditGate.mFTQzSOo.js b/dist/client/_astro/EditGate.mFTQzSOo.js new file mode 100644 index 0000000..7e336d1 --- /dev/null +++ b/dist/client/_astro/EditGate.mFTQzSOo.js @@ -0,0 +1 @@ +import{c as d,a as o,d as u,l as b,g as p,t as f,w as C,v as _,b as m,T as S,F as T,h as E,i,m as M,o as c}from"./runtime-dom.esm-bundler.A7MyAQcw.js";import{_ as V}from"./_plugin-vue_export-helper.DlAUqK2U.js";const B=E({__name:"EditGate",props:{slug:{},authorEmail:{},authorName:{},authorHasToken:{type:Boolean}},setup(h,{expose:e}){e();const r=h,t=i(!1),s=i(""),a=i(""),n=i(!1),v=i();async function x(){if(!r.authorEmail||!r.authorHasToken){window.location.href=`/${r.slug}/edit`;return}const l=localStorage.getItem("skillshere-token")||"";if(l)try{if((await fetch("/api/auth/verify",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:r.authorEmail,token:l})})).ok){localStorage.setItem("skillshere-token",l),window.location.href=`/${r.slug}/edit`;return}}catch{}t.value=!0,a.value="",s.value="",M(()=>v.value?.focus())}async function g(){n.value=!0,a.value="";try{const l=await fetch("/api/auth/verify",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:r.authorEmail,token:s.value})});if(!l.ok){const y=await l.json();a.value=y.error||"Invalid token";return}localStorage.setItem("skillshere-token",s.value),window.location.href=`/${r.slug}/edit`}catch{a.value="Could not verify token"}finally{n.value=!1}}function w(){t.value=!1,window.location.href=`/new?from=${encodeURIComponent(r.slug)}`}const k={props:r,showModal:t,token:s,error:a,verifying:n,tokenInput:v,handleClick:x,verify:g,forkSkill:w};return Object.defineProperty(k,"__isScriptSetup",{enumerable:!1,value:!0}),k}}),I={class:"w-full max-w-md rounded-2xl border border-white/[0.08] bg-[var(--color-surface-200)] p-6 shadow-2xl"},N={class:"text-sm text-gray-500 mb-4"},j={class:"text-gray-300"},O={key:0,class:"mt-2 text-sm text-red-400"},A={class:"mt-4 flex items-center gap-3"},H=["disabled"],P={key:0,class:"h-4 w-4 animate-spin",fill:"none",viewBox:"0 0 24 24"};function F(h,e,r,t,s,a){return c(),d(T,null,[o("button",{onClick:t.handleClick,class:"inline-flex items-center gap-1.5 rounded-lg border border-white/[0.08] bg-surface-200 px-3.5 py-2 text-sm font-medium text-gray-300 hover:border-white/[0.15] hover:text-white transition-all"},[...e[3]||(e[3]=[o("svg",{class:"h-3.5 w-3.5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor","stroke-width":"2"},[o("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m16.862 4.487 1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L10.582 16.07a4.5 4.5 0 0 1-1.897 1.13L6 18l.8-2.685a4.5 4.5 0 0 1 1.13-1.897l8.932-8.931Zm0 0L19.5 7.125M18 14v4.75A2.25 2.25 0 0 1 15.75 21H5.25A2.25 2.25 0 0 1 3 18.75V8.25A2.25 2.25 0 0 1 5.25 6H10"})],-1),u(" Edit ",-1)])]),(c(),b(S,{to:"body"},[t.showModal?(c(),d("div",{key:0,class:"fixed inset-0 z-50 flex items-center justify-center bg-black/60 backdrop-blur-sm",onClick:e[2]||(e[2]=p(n=>t.showModal=!1,["self"]))},[o("div",I,[e[7]||(e[7]=o("h3",{class:"text-lg font-semibold text-white mb-1"},"Author Verification",-1)),o("p",N,[e[4]||(e[4]=u(" This skill is owned by ",-1)),o("strong",j,f(r.authorName||r.authorEmail),1),e[5]||(e[5]=u(". Enter your token to edit. ",-1))]),o("form",{onSubmit:p(t.verify,["prevent"])},[C(o("input",{ref:"tokenInput","onUpdate:modelValue":e[0]||(e[0]=n=>t.token=n),type:"password",placeholder:"Paste your author token...",class:"w-full rounded-xl border border-white/[0.06] bg-[var(--color-surface-100)] px-4 py-2.5 text-sm text-white placeholder-gray-600 font-mono focus:border-[var(--color-accent-500)]/50 focus:outline-none focus:ring-1 focus:ring-[var(--color-accent-500)]/20 transition-all"},null,512),[[_,t.token]]),t.error?(c(),d("p",O,f(t.error),1)):m("",!0),o("div",A,[o("button",{type:"submit",disabled:t.verifying||!t.token,class:"inline-flex items-center gap-2 rounded-xl bg-[var(--color-accent-500)] px-5 py-2 text-sm font-semibold text-white shadow-lg shadow-[var(--color-accent-500)]/20 hover:bg-[var(--color-accent-600)] disabled:opacity-50 active:scale-[0.97] transition-all"},[t.verifying?(c(),d("svg",P,[...e[6]||(e[6]=[o("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"},null,-1),o("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"},null,-1)])])):m("",!0),u(" "+f(t.verifying?"Verifying...":"Continue to Edit"),1)],8,H),o("button",{type:"button",onClick:t.forkSkill,class:"text-sm text-[var(--color-accent-400)] hover:text-[var(--color-accent-300)] transition-colors"}," Fork instead "),o("button",{type:"button",onClick:e[1]||(e[1]=n=>t.showModal=!1),class:"ml-auto text-sm text-gray-600 hover:text-gray-300 transition-colors"}," Cancel ")])],32)])])):m("",!0)]))],64)}const D=V(B,[["render",F]]);export{D as default}; diff --git a/dist/client/_astro/SkillEditor.CYIrd0Il.js b/dist/client/_astro/SkillEditor.CYIrd0Il.js deleted file mode 100644 index c025102..0000000 --- a/dist/client/_astro/SkillEditor.CYIrd0Il.js +++ /dev/null @@ -1,65 +0,0 @@ -import{v as H,a as Y,b as de,w as Me}from"./runtime-dom.esm-bundler.ALO2-icn.js";import{_ as qe}from"./_plugin-vue_export-helper.DlAUqK2U.js";import{c as C,a as p,w as $,b as Q,t as O,F as ge,r as fe,d as ke,e as De,f as y,g as He,h as Oe,o as P,n as Ze}from"./runtime-core.esm-bundler.D9KZBfyO.js";function ne(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var E=ne();function Se(s){E=s}var L={exec:()=>null};function g(s,e=""){let r=typeof s=="string"?s:s.source,n={replace:(t,i)=>{let l=typeof i=="string"?i:i.source;return l=l.replace(w.caret,"$1"),r=r.replace(t,l),n},getRegex:()=>new RegExp(r,e)};return n}var Ne=(()=>{try{return!!new RegExp("(?<=1)(?/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,unescapeTest:/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:s=>new RegExp(`^( {0,3}${s})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:s=>new RegExp(`^ {0,${Math.min(3,s-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:s=>new RegExp(`^ {0,${Math.min(3,s-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:s=>new RegExp(`^ {0,${Math.min(3,s-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:s=>new RegExp(`^ {0,${Math.min(3,s-1)}}#`),htmlBeginRegex:s=>new RegExp(`^ {0,${Math.min(3,s-1)}}<(?:[a-z].*>|!--)`,"i"),blockquoteBeginRegex:s=>new RegExp(`^ {0,${Math.min(3,s-1)}}>`)},je=/^(?:[ \t]*(?:\n|$))+/,Ve=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,Ue=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,V=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,Qe=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,se=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,Re=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,Te=g(Re).replace(/bull/g,se).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),Fe=g(Re).replace(/bull/g,se).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),le=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,Ge=/^[^\n]+/,ie=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,Je=g(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",ie).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),We=g(/^(bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,se).getRegex(),X="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",ae=/|$))/,Xe=g("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",ae).replace("tag",X).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),$e=g(le).replace("hr",V).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",X).getRegex(),Ke=g(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",$e).getRegex(),oe={blockquote:Ke,code:Ve,def:Je,fences:Ue,heading:Qe,hr:V,html:Xe,lheading:Te,list:We,newline:je,paragraph:$e,table:L,text:Ge},xe=g("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",V).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",X).getRegex(),Ye={...oe,lheading:Fe,table:xe,paragraph:g(le).replace("hr",V).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",xe).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",X).getRegex()},et={...oe,html:g(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",ae).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:L,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:g(le).replace("hr",V).replace("heading",` *#{1,6} *[^ -]`).replace("lheading",Te).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},tt=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,rt=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,Ae=/^( {2,}|\\)\n(?!\s*$)/,nt=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\`+)[^`]+\k(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",Ne?"(?`+)[^`]+\k(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),Pe=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,pt=g(Pe,"u").replace(/punct/g,K).getRegex(),ut=g(Pe,"u").replace(/punct/g,Ie).getRegex(),Le="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",ht=g(Le,"gu").replace(/notPunctSpace/g,ze).replace(/punctSpace/g,ce).replace(/punct/g,K).getRegex(),dt=g(Le,"gu").replace(/notPunctSpace/g,it).replace(/punctSpace/g,lt).replace(/punct/g,Ie).getRegex(),gt=g("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,ze).replace(/punctSpace/g,ce).replace(/punct/g,K).getRegex(),ft=g(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,Ce).getRegex(),kt="^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)",xt=g(kt,"gu").replace(/notPunctSpace/g,ot).replace(/punctSpace/g,at).replace(/punct/g,Ce).getRegex(),bt=g(/\\(punct)/,"gu").replace(/punct/g,K).getRegex(),mt=g(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),wt=g(ae).replace("(?:-->|$)","-->").getRegex(),yt=g("^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",wt).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),G=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+[^`]*?`+(?!`)|[^\[\]\\`])*?/,vt=g(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/).replace("label",G).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),Be=g(/^!?\[(label)\]\[(ref)\]/).replace("label",G).replace("ref",ie).getRegex(),Ee=g(/^!?\[(ref)\](?:\[\])?/).replace("ref",ie).getRegex(),St=g("reflink|nolink(?!\\()","g").replace("reflink",Be).replace("nolink",Ee).getRegex(),be=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,pe={_backpedal:L,anyPunctuation:bt,autolink:mt,blockSkip:ct,br:Ae,code:rt,del:L,delLDelim:L,delRDelim:L,emStrongLDelim:pt,emStrongRDelimAst:ht,emStrongRDelimUnd:gt,escape:tt,link:vt,nolink:Ee,punctuation:st,reflink:Be,reflinkSearch:St,tag:yt,text:nt,url:L},Rt={...pe,link:g(/^!?\[(label)\]\((.*?)\)/).replace("label",G).getRegex(),reflink:g(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",G).getRegex()},ee={...pe,emStrongRDelimAst:dt,emStrongLDelim:ut,delLDelim:ft,delRDelim:xt,url:g(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",be).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:g(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\":">",'"':""","'":"'"},me=s=>$t[s];function A(s,e){if(e){if(w.escapeTest.test(s))return s.replace(w.escapeReplace,me)}else if(w.escapeTestNoEncode.test(s))return s.replace(w.escapeReplaceNoEncode,me);return s}function we(s){try{s=encodeURI(s).replace(w.percentDecode,"%")}catch{return null}return s}function ye(s,e){let r=s.replace(w.findPipe,(i,l,o)=>{let a=!1,u=l;for(;--u>=0&&o[u]==="\\";)a=!a;return a?"|":" |"}),n=r.split(w.splitPipe),t=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),e)if(n.length>e)n.splice(e);else for(;n.length0?-2:-1}function zt(s,e=0){let r=e,n="";for(let t of s)if(t===" "){let i=4-r%4;n+=" ".repeat(i),r+=i}else n+=t,r++;return n}function ve(s,e,r,n,t){let i=e.href,l=e.title||null,o=s[1].replace(t.other.outputLinkReplace,"$1");n.state.inLink=!0;let a={type:s[0].charAt(0)==="!"?"image":"link",raw:r,href:i,title:l,text:o,tokens:n.inlineTokens(o)};return n.state.inLink=!1,a}function It(s,e,r){let n=s.match(r.other.indentCodeCompensation);if(n===null)return e;let t=n[1];return e.split(` -`).map(i=>{let l=i.match(r.other.beginningSpace);if(l===null)return i;let[o]=l;return o.length>=t.length?i.slice(t.length):i}).join(` -`)}var J=class{options;rules;lexer;constructor(s){this.options=s||E}space(s){let e=this.rules.block.newline.exec(s);if(e&&e[0].length>0)return{type:"space",raw:e[0]}}code(s){let e=this.rules.block.code.exec(s);if(e){let r=e[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:e[0],codeBlockStyle:"indented",text:this.options.pedantic?r:N(r,` -`)}}}fences(s){let e=this.rules.block.fences.exec(s);if(e){let r=e[0],n=It(r,e[3]||"",this.rules);return{type:"code",raw:r,lang:e[2]?e[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):e[2],text:n}}}heading(s){let e=this.rules.block.heading.exec(s);if(e){let r=e[2].trim();if(this.rules.other.endingHash.test(r)){let n=N(r,"#");(this.options.pedantic||!n||this.rules.other.endingSpaceChar.test(n))&&(r=n.trim())}return{type:"heading",raw:e[0],depth:e[1].length,text:r,tokens:this.lexer.inline(r)}}}hr(s){let e=this.rules.block.hr.exec(s);if(e)return{type:"hr",raw:N(e[0],` -`)}}blockquote(s){let e=this.rules.block.blockquote.exec(s);if(e){let r=N(e[0],` -`).split(` -`),n="",t="",i=[];for(;r.length>0;){let l=!1,o=[],a;for(a=0;a1,t={type:"list",raw:"",ordered:n,start:n?+r.slice(0,-1):"",loose:!1,items:[]};r=n?`\\d{1,9}\\${r.slice(-1)}`:`\\${r}`,this.options.pedantic&&(r=n?r:"[*+-]");let i=this.rules.other.listItemRegex(r),l=!1;for(;s;){let a=!1,u="",c="";if(!(e=i.exec(s))||this.rules.block.hr.test(s))break;u=e[0],s=s.substring(u.length);let d=zt(e[2].split(` -`,1)[0],e[1].length),h=s.split(` -`,1)[0],x=!d.trim(),k=0;if(this.options.pedantic?(k=2,c=d.trimStart()):x?k=e[1].length+1:(k=d.search(this.rules.other.nonSpaceChar),k=k>4?1:k,c=d.slice(k),k+=e[1].length),x&&this.rules.other.blankLine.test(h)&&(u+=h+` -`,s=s.substring(h.length+1),a=!0),!a){let v=this.rules.other.nextBulletRegex(k),_=this.rules.other.hrRegex(k),T=this.rules.other.fencesBeginRegex(k),U=this.rules.other.headingBeginRegex(k),M=this.rules.other.htmlBeginRegex(k),q=this.rules.other.blockquoteBeginRegex(k);for(;s;){let z=s.split(` -`,1)[0],I;if(h=z,this.options.pedantic?(h=h.replace(this.rules.other.listReplaceNesting," "),I=h):I=h.replace(this.rules.other.tabCharGlobal," "),T.test(h)||U.test(h)||M.test(h)||q.test(h)||v.test(h)||_.test(h))break;if(I.search(this.rules.other.nonSpaceChar)>=k||!h.trim())c+=` -`+I.slice(k);else{if(x||d.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||T.test(d)||U.test(d)||_.test(d))break;c+=` -`+h}x=!h.trim(),u+=z+` -`,s=s.substring(z.length+1),d=I.slice(k)}}t.loose||(l?t.loose=!0:this.rules.other.doubleBlankLine.test(u)&&(l=!0)),t.items.push({type:"list_item",raw:u,task:!!this.options.gfm&&this.rules.other.listIsTask.test(c),loose:!1,text:c,tokens:[]}),t.raw+=u}let o=t.items.at(-1);if(o)o.raw=o.raw.trimEnd(),o.text=o.text.trimEnd();else return;t.raw=t.raw.trimEnd();for(let a of t.items){if(this.lexer.state.top=!1,a.tokens=this.lexer.blockTokens(a.text,[]),a.task){if(a.text=a.text.replace(this.rules.other.listReplaceTask,""),a.tokens[0]?.type==="text"||a.tokens[0]?.type==="paragraph"){a.tokens[0].raw=a.tokens[0].raw.replace(this.rules.other.listReplaceTask,""),a.tokens[0].text=a.tokens[0].text.replace(this.rules.other.listReplaceTask,"");for(let c=this.lexer.inlineQueue.length-1;c>=0;c--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[c].src)){this.lexer.inlineQueue[c].src=this.lexer.inlineQueue[c].src.replace(this.rules.other.listReplaceTask,"");break}}let u=this.rules.other.listTaskCheckbox.exec(a.raw);if(u){let c={type:"checkbox",raw:u[0]+" ",checked:u[0]!=="[ ]"};a.checked=c.checked,t.loose?a.tokens[0]&&["paragraph","text"].includes(a.tokens[0].type)&&"tokens"in a.tokens[0]&&a.tokens[0].tokens?(a.tokens[0].raw=c.raw+a.tokens[0].raw,a.tokens[0].text=c.raw+a.tokens[0].text,a.tokens[0].tokens.unshift(c)):a.tokens.unshift({type:"paragraph",raw:c.raw,text:c.raw,tokens:[c]}):a.tokens.unshift(c)}}if(!t.loose){let u=a.tokens.filter(d=>d.type==="space"),c=u.length>0&&u.some(d=>this.rules.other.anyLine.test(d.raw));t.loose=c}}if(t.loose)for(let a of t.items){a.loose=!0;for(let u of a.tokens)u.type==="text"&&(u.type="paragraph")}return t}}html(s){let e=this.rules.block.html.exec(s);if(e)return{type:"html",block:!0,raw:e[0],pre:e[1]==="pre"||e[1]==="script"||e[1]==="style",text:e[0]}}def(s){let e=this.rules.block.def.exec(s);if(e){let r=e[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal," "),n=e[2]?e[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",t=e[3]?e[3].substring(1,e[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):e[3];return{type:"def",tag:r,raw:e[0],href:n,title:t}}}table(s){let e=this.rules.block.table.exec(s);if(!e||!this.rules.other.tableDelimiter.test(e[2]))return;let r=ye(e[1]),n=e[2].replace(this.rules.other.tableAlignChars,"").split("|"),t=e[3]?.trim()?e[3].replace(this.rules.other.tableRowBlankLine,"").split(` -`):[],i={type:"table",raw:e[0],header:[],align:[],rows:[]};if(r.length===n.length){for(let l of n)this.rules.other.tableAlignRight.test(l)?i.align.push("right"):this.rules.other.tableAlignCenter.test(l)?i.align.push("center"):this.rules.other.tableAlignLeft.test(l)?i.align.push("left"):i.align.push(null);for(let l=0;l({text:o,tokens:this.lexer.inline(o),header:!1,align:i.align[a]})));return i}}lheading(s){let e=this.rules.block.lheading.exec(s);if(e)return{type:"heading",raw:e[0],depth:e[2].charAt(0)==="="?1:2,text:e[1],tokens:this.lexer.inline(e[1])}}paragraph(s){let e=this.rules.block.paragraph.exec(s);if(e){let r=e[1].charAt(e[1].length-1)===` -`?e[1].slice(0,-1):e[1];return{type:"paragraph",raw:e[0],text:r,tokens:this.lexer.inline(r)}}}text(s){let e=this.rules.block.text.exec(s);if(e)return{type:"text",raw:e[0],text:e[0],tokens:this.lexer.inline(e[0])}}escape(s){let e=this.rules.inline.escape.exec(s);if(e)return{type:"escape",raw:e[0],text:e[1]}}tag(s){let e=this.rules.inline.tag.exec(s);if(e)return!this.lexer.state.inLink&&this.rules.other.startATag.test(e[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:e[0]}}link(s){let e=this.rules.inline.link.exec(s);if(e){let r=e[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(r)){if(!this.rules.other.endAngleBracket.test(r))return;let i=N(r.slice(0,-1),"\\");if((r.length-i.length)%2===0)return}else{let i=At(e[2],"()");if(i===-2)return;if(i>-1){let l=(e[0].indexOf("!")===0?5:4)+e[1].length+i;e[2]=e[2].substring(0,i),e[0]=e[0].substring(0,l).trim(),e[3]=""}}let n=e[2],t="";if(this.options.pedantic){let i=this.rules.other.pedanticHrefTitle.exec(n);i&&(n=i[1],t=i[3])}else t=e[3]?e[3].slice(1,-1):"";return n=n.trim(),this.rules.other.startAngleBracket.test(n)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(r)?n=n.slice(1):n=n.slice(1,-1)),ve(e,{href:n&&n.replace(this.rules.inline.anyPunctuation,"$1"),title:t&&t.replace(this.rules.inline.anyPunctuation,"$1")},e[0],this.lexer,this.rules)}}reflink(s,e){let r;if((r=this.rules.inline.reflink.exec(s))||(r=this.rules.inline.nolink.exec(s))){let n=(r[2]||r[1]).replace(this.rules.other.multipleSpaceGlobal," "),t=e[n.toLowerCase()];if(!t){let i=r[0].charAt(0);return{type:"text",raw:i,text:i}}return ve(r,t,r[0],this.lexer,this.rules)}}emStrong(s,e,r=""){let n=this.rules.inline.emStrongLDelim.exec(s);if(!(!n||n[3]&&r.match(this.rules.other.unicodeAlphaNumeric))&&(!(n[1]||n[2])||!r||this.rules.inline.punctuation.exec(r))){let t=[...n[0]].length-1,i,l,o=t,a=0,u=n[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(u.lastIndex=0,e=e.slice(-1*s.length+t);(n=u.exec(e))!=null;){if(i=n[1]||n[2]||n[3]||n[4]||n[5]||n[6],!i)continue;if(l=[...i].length,n[3]||n[4]){o+=l;continue}else if((n[5]||n[6])&&t%3&&!((t+l)%3)){a+=l;continue}if(o-=l,o>0)continue;l=Math.min(l,l+o+a);let c=[...n[0]][0].length,d=s.slice(0,t+n.index+c+l);if(Math.min(t,l)%2){let x=d.slice(1,-1);return{type:"em",raw:d,text:x,tokens:this.lexer.inlineTokens(x)}}let h=d.slice(2,-2);return{type:"strong",raw:d,text:h,tokens:this.lexer.inlineTokens(h)}}}}codespan(s){let e=this.rules.inline.code.exec(s);if(e){let r=e[2].replace(this.rules.other.newLineCharGlobal," "),n=this.rules.other.nonSpaceChar.test(r),t=this.rules.other.startingSpaceChar.test(r)&&this.rules.other.endingSpaceChar.test(r);return n&&t&&(r=r.substring(1,r.length-1)),{type:"codespan",raw:e[0],text:r}}}br(s){let e=this.rules.inline.br.exec(s);if(e)return{type:"br",raw:e[0]}}del(s,e,r=""){let n=this.rules.inline.delLDelim.exec(s);if(n&&(!n[1]||!r||this.rules.inline.punctuation.exec(r))){let t=[...n[0]].length-1,i,l,o=t,a=this.rules.inline.delRDelim;for(a.lastIndex=0,e=e.slice(-1*s.length+t);(n=a.exec(e))!=null;){if(i=n[1]||n[2]||n[3]||n[4]||n[5]||n[6],!i||(l=[...i].length,l!==t))continue;if(n[3]||n[4]){o+=l;continue}if(o-=l,o>0)continue;l=Math.min(l,l+o);let u=[...n[0]][0].length,c=s.slice(0,t+n.index+u+l),d=c.slice(t,-t);return{type:"del",raw:c,text:d,tokens:this.lexer.inlineTokens(d)}}}}autolink(s){let e=this.rules.inline.autolink.exec(s);if(e){let r,n;return e[2]==="@"?(r=e[1],n="mailto:"+r):(r=e[1],n=r),{type:"link",raw:e[0],text:r,href:n,tokens:[{type:"text",raw:r,text:r}]}}}url(s){let e;if(e=this.rules.inline.url.exec(s)){let r,n;if(e[2]==="@")r=e[0],n="mailto:"+r;else{let t;do t=e[0],e[0]=this.rules.inline._backpedal.exec(e[0])?.[0]??"";while(t!==e[0]);r=e[0],e[1]==="www."?n="http://"+e[0]:n=e[0]}return{type:"link",raw:e[0],text:r,href:n,tokens:[{type:"text",raw:r,text:r}]}}}inlineText(s){let e=this.rules.inline.text.exec(s);if(e){let r=this.lexer.state.inRawBlock;return{type:"text",raw:e[0],text:e[0],escaped:r}}}},S=class te{tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||E,this.options.tokenizer=this.options.tokenizer||new J,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let r={other:w,block:F.normal,inline:Z.normal};this.options.pedantic?(r.block=F.pedantic,r.inline=Z.pedantic):this.options.gfm&&(r.block=F.gfm,this.options.breaks?r.inline=Z.breaks:r.inline=Z.gfm),this.tokenizer.rules=r}static get rules(){return{block:F,inline:Z}}static lex(e,r){return new te(r).lex(e)}static lexInline(e,r){return new te(r).inlineTokens(e)}lex(e){e=e.replace(w.carriageReturn,` -`),this.blockTokens(e,this.tokens);for(let r=0;r(t=l.call({lexer:this},e,r))?(e=e.substring(t.raw.length),r.push(t),!0):!1))continue;if(t=this.tokenizer.space(e)){e=e.substring(t.raw.length);let l=r.at(-1);t.raw.length===1&&l!==void 0?l.raw+=` -`:r.push(t);continue}if(t=this.tokenizer.code(e)){e=e.substring(t.raw.length);let l=r.at(-1);l?.type==="paragraph"||l?.type==="text"?(l.raw+=(l.raw.endsWith(` -`)?"":` -`)+t.raw,l.text+=` -`+t.text,this.inlineQueue.at(-1).src=l.text):r.push(t);continue}if(t=this.tokenizer.fences(e)){e=e.substring(t.raw.length),r.push(t);continue}if(t=this.tokenizer.heading(e)){e=e.substring(t.raw.length),r.push(t);continue}if(t=this.tokenizer.hr(e)){e=e.substring(t.raw.length),r.push(t);continue}if(t=this.tokenizer.blockquote(e)){e=e.substring(t.raw.length),r.push(t);continue}if(t=this.tokenizer.list(e)){e=e.substring(t.raw.length),r.push(t);continue}if(t=this.tokenizer.html(e)){e=e.substring(t.raw.length),r.push(t);continue}if(t=this.tokenizer.def(e)){e=e.substring(t.raw.length);let l=r.at(-1);l?.type==="paragraph"||l?.type==="text"?(l.raw+=(l.raw.endsWith(` -`)?"":` -`)+t.raw,l.text+=` -`+t.raw,this.inlineQueue.at(-1).src=l.text):this.tokens.links[t.tag]||(this.tokens.links[t.tag]={href:t.href,title:t.title},r.push(t));continue}if(t=this.tokenizer.table(e)){e=e.substring(t.raw.length),r.push(t);continue}if(t=this.tokenizer.lheading(e)){e=e.substring(t.raw.length),r.push(t);continue}let i=e;if(this.options.extensions?.startBlock){let l=1/0,o=e.slice(1),a;this.options.extensions.startBlock.forEach(u=>{a=u.call({lexer:this},o),typeof a=="number"&&a>=0&&(l=Math.min(l,a))}),l<1/0&&l>=0&&(i=e.substring(0,l+1))}if(this.state.top&&(t=this.tokenizer.paragraph(i))){let l=r.at(-1);n&&l?.type==="paragraph"?(l.raw+=(l.raw.endsWith(` -`)?"":` -`)+t.raw,l.text+=` -`+t.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=l.text):r.push(t),n=i.length!==e.length,e=e.substring(t.raw.length);continue}if(t=this.tokenizer.text(e)){e=e.substring(t.raw.length);let l=r.at(-1);l?.type==="text"?(l.raw+=(l.raw.endsWith(` -`)?"":` -`)+t.raw,l.text+=` -`+t.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=l.text):r.push(t);continue}if(e){let l="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(l);break}else throw new Error(l)}}return this.state.top=!0,r}inline(e,r=[]){return this.inlineQueue.push({src:e,tokens:r}),r}inlineTokens(e,r=[]){let n=e,t=null;if(this.tokens.links){let a=Object.keys(this.tokens.links);if(a.length>0)for(;(t=this.tokenizer.rules.inline.reflinkSearch.exec(n))!=null;)a.includes(t[0].slice(t[0].lastIndexOf("[")+1,-1))&&(n=n.slice(0,t.index)+"["+"a".repeat(t[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(t=this.tokenizer.rules.inline.anyPunctuation.exec(n))!=null;)n=n.slice(0,t.index)+"++"+n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let i;for(;(t=this.tokenizer.rules.inline.blockSkip.exec(n))!=null;)i=t[2]?t[2].length:0,n=n.slice(0,t.index+i)+"["+"a".repeat(t[0].length-i-2)+"]"+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);n=this.options.hooks?.emStrongMask?.call({lexer:this},n)??n;let l=!1,o="";for(;e;){l||(o=""),l=!1;let a;if(this.options.extensions?.inline?.some(c=>(a=c.call({lexer:this},e,r))?(e=e.substring(a.raw.length),r.push(a),!0):!1))continue;if(a=this.tokenizer.escape(e)){e=e.substring(a.raw.length),r.push(a);continue}if(a=this.tokenizer.tag(e)){e=e.substring(a.raw.length),r.push(a);continue}if(a=this.tokenizer.link(e)){e=e.substring(a.raw.length),r.push(a);continue}if(a=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(a.raw.length);let c=r.at(-1);a.type==="text"&&c?.type==="text"?(c.raw+=a.raw,c.text+=a.text):r.push(a);continue}if(a=this.tokenizer.emStrong(e,n,o)){e=e.substring(a.raw.length),r.push(a);continue}if(a=this.tokenizer.codespan(e)){e=e.substring(a.raw.length),r.push(a);continue}if(a=this.tokenizer.br(e)){e=e.substring(a.raw.length),r.push(a);continue}if(a=this.tokenizer.del(e,n,o)){e=e.substring(a.raw.length),r.push(a);continue}if(a=this.tokenizer.autolink(e)){e=e.substring(a.raw.length),r.push(a);continue}if(!this.state.inLink&&(a=this.tokenizer.url(e))){e=e.substring(a.raw.length),r.push(a);continue}let u=e;if(this.options.extensions?.startInline){let c=1/0,d=e.slice(1),h;this.options.extensions.startInline.forEach(x=>{h=x.call({lexer:this},d),typeof h=="number"&&h>=0&&(c=Math.min(c,h))}),c<1/0&&c>=0&&(u=e.substring(0,c+1))}if(a=this.tokenizer.inlineText(u)){e=e.substring(a.raw.length),a.raw.slice(-1)!=="_"&&(o=a.raw.slice(-1)),l=!0;let c=r.at(-1);c?.type==="text"?(c.raw+=a.raw,c.text+=a.text):r.push(a);continue}if(e){let c="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(c);break}else throw new Error(c)}}return r}},W=class{options;parser;constructor(s){this.options=s||E}space(s){return""}code({text:s,lang:e,escaped:r}){let n=(e||"").match(w.notSpaceStart)?.[0],t=s.replace(w.endingNewline,"")+` -`;return n?'
'+(r?t:A(t,!0))+`
-`:"
"+(r?t:A(t,!0))+`
-`}blockquote({tokens:s}){return`
-${this.parser.parse(s)}
-`}html({text:s}){return s}def(s){return""}heading({tokens:s,depth:e}){return`${this.parser.parseInline(s)} -`}hr(s){return`
-`}list(s){let e=s.ordered,r=s.start,n="";for(let l=0;l -`+n+" -`}listitem(s){return`
  • ${this.parser.parse(s.tokens)}
  • -`}checkbox({checked:s}){return" '}paragraph({tokens:s}){return`

    ${this.parser.parseInline(s)}

    -`}table(s){let e="",r="";for(let t=0;t${n}`),` - -`+e+` -`+n+`
    -`}tablerow({text:s}){return` -${s} -`}tablecell(s){let e=this.parser.parseInline(s.tokens),r=s.header?"th":"td";return(s.align?`<${r} align="${s.align}">`:`<${r}>`)+e+` -`}strong({tokens:s}){return`${this.parser.parseInline(s)}`}em({tokens:s}){return`${this.parser.parseInline(s)}`}codespan({text:s}){return`${A(s,!0)}`}br(s){return"
    "}del({tokens:s}){return`${this.parser.parseInline(s)}`}link({href:s,title:e,tokens:r}){let n=this.parser.parseInline(r),t=we(s);if(t===null)return n;s=t;let i='
    ",i}image({href:s,title:e,text:r,tokens:n}){n&&(r=this.parser.parseInline(n,this.parser.textRenderer));let t=we(s);if(t===null)return A(r);s=t;let i=`${r}{let l=t[i].flat(1/0);r=r.concat(this.walkTokens(l,e))}):t.tokens&&(r=r.concat(this.walkTokens(t.tokens,e)))}}return r}use(...s){let e=this.defaults.extensions||{renderers:{},childTokens:{}};return s.forEach(r=>{let n={...r};if(n.async=this.defaults.async||n.async||!1,r.extensions&&(r.extensions.forEach(t=>{if(!t.name)throw new Error("extension name required");if("renderer"in t){let i=e.renderers[t.name];i?e.renderers[t.name]=function(...l){let o=t.renderer.apply(this,l);return o===!1&&(o=i.apply(this,l)),o}:e.renderers[t.name]=t.renderer}if("tokenizer"in t){if(!t.level||t.level!=="block"&&t.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let i=e[t.level];i?i.unshift(t.tokenizer):e[t.level]=[t.tokenizer],t.start&&(t.level==="block"?e.startBlock?e.startBlock.push(t.start):e.startBlock=[t.start]:t.level==="inline"&&(e.startInline?e.startInline.push(t.start):e.startInline=[t.start]))}"childTokens"in t&&t.childTokens&&(e.childTokens[t.name]=t.childTokens)}),n.extensions=e),r.renderer){let t=this.defaults.renderer||new W(this.defaults);for(let i in r.renderer){if(!(i in t))throw new Error(`renderer '${i}' does not exist`);if(["options","parser"].includes(i))continue;let l=i,o=r.renderer[l],a=t[l];t[l]=(...u)=>{let c=o.apply(t,u);return c===!1&&(c=a.apply(t,u)),c||""}}n.renderer=t}if(r.tokenizer){let t=this.defaults.tokenizer||new J(this.defaults);for(let i in r.tokenizer){if(!(i in t))throw new Error(`tokenizer '${i}' does not exist`);if(["options","rules","lexer"].includes(i))continue;let l=i,o=r.tokenizer[l],a=t[l];t[l]=(...u)=>{let c=o.apply(t,u);return c===!1&&(c=a.apply(t,u)),c}}n.tokenizer=t}if(r.hooks){let t=this.defaults.hooks||new j;for(let i in r.hooks){if(!(i in t))throw new Error(`hook '${i}' does not exist`);if(["options","block"].includes(i))continue;let l=i,o=r.hooks[l],a=t[l];j.passThroughHooks.has(i)?t[l]=u=>{if(this.defaults.async&&j.passThroughHooksRespectAsync.has(i))return(async()=>{let d=await o.call(t,u);return a.call(t,d)})();let c=o.call(t,u);return a.call(t,c)}:t[l]=(...u)=>{if(this.defaults.async)return(async()=>{let d=await o.apply(t,u);return d===!1&&(d=await a.apply(t,u)),d})();let c=o.apply(t,u);return c===!1&&(c=a.apply(t,u)),c}}n.hooks=t}if(r.walkTokens){let t=this.defaults.walkTokens,i=r.walkTokens;n.walkTokens=function(l){let o=[];return o.push(i.call(this,l)),t&&(o=o.concat(t.call(this,l))),o}}this.defaults={...this.defaults,...n}}),this}setOptions(s){return this.defaults={...this.defaults,...s},this}lexer(s,e){return S.lex(s,e??this.defaults)}parser(s,e){return R.parse(s,e??this.defaults)}parseMarkdown(s){return(e,r)=>{let n={...r},t={...this.defaults,...n},i=this.onError(!!t.silent,!!t.async);if(this.defaults.async===!0&&n.async===!1)return i(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof e>"u"||e===null)return i(new Error("marked(): input parameter is undefined or null"));if(typeof e!="string")return i(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected"));if(t.hooks&&(t.hooks.options=t,t.hooks.block=s),t.async)return(async()=>{let l=t.hooks?await t.hooks.preprocess(e):e,o=await(t.hooks?await t.hooks.provideLexer():s?S.lex:S.lexInline)(l,t),a=t.hooks?await t.hooks.processAllTokens(o):o;t.walkTokens&&await Promise.all(this.walkTokens(a,t.walkTokens));let u=await(t.hooks?await t.hooks.provideParser():s?R.parse:R.parseInline)(a,t);return t.hooks?await t.hooks.postprocess(u):u})().catch(i);try{t.hooks&&(e=t.hooks.preprocess(e));let l=(t.hooks?t.hooks.provideLexer():s?S.lex:S.lexInline)(e,t);t.hooks&&(l=t.hooks.processAllTokens(l)),t.walkTokens&&this.walkTokens(l,t.walkTokens);let o=(t.hooks?t.hooks.provideParser():s?R.parse:R.parseInline)(l,t);return t.hooks&&(o=t.hooks.postprocess(o)),o}catch(l){return i(l)}}}onError(s,e){return r=>{if(r.message+=` -Please report this to https://github.com/markedjs/marked.`,s){let n="

    An error occurred:

    "+A(r.message+"",!0)+"
    ";return e?Promise.resolve(n):n}if(e)return Promise.reject(r);throw r}}},B=new Ct;function f(s,e){return B.parse(s,e)}f.options=f.setOptions=function(s){return B.setOptions(s),f.defaults=B.defaults,Se(f.defaults),f};f.getDefaults=ne;f.defaults=E;f.use=function(...s){return B.use(...s),f.defaults=B.defaults,Se(f.defaults),f};f.walkTokens=function(s,e){return B.walkTokens(s,e)};f.parseInline=B.parseInline;f.Parser=R;f.parser=R.parse;f.Renderer=W;f.TextRenderer=ue;f.Lexer=S;f.lexer=S.lex;f.Tokenizer=J;f.Hooks=j;f.parse=f;f.options;f.setOptions;f.use;f.walkTokens;f.parseInline;R.parse;S.lex;const Pt=De({__name:"SkillEditor",props:{mode:{},slug:{},initialName:{},initialDescription:{},initialAllowedTools:{},initialArgumentHint:{},initialModel:{},initialUserInvocable:{type:Boolean},initialDisableModelInvocation:{type:Boolean},initialContext:{},initialAgent:{},initialHooks:{},initialBody:{},availableTools:{},availableModels:{}},setup(s,{expose:e}){e();const r=s,n=r.availableTools??["Bash","Read","Write","Edit","Glob","Grep","WebFetch","WebSearch","Task","NotebookEdit"],t=r.availableModels??[{id:"claude-opus-4-6",display_name:"Claude Opus 4.6"},{id:"claude-sonnet-4-5-20250929",display_name:"Claude Sonnet 4.5"},{id:"claude-haiku-4-5-20251001",display_name:"Claude Haiku 4.5"}],i=y(r.initialName||""),l=y(r.initialDescription||""),o=y(r.initialArgumentHint||""),a=y(r.initialModel||""),u=y(r.initialUserInvocable??!0),c=y(r.initialDisableModelInvocation??!1),d=y(r.initialContext||""),h=y(r.initialAgent||""),x=y(r.initialHooks||""),k=y(r.initialBody||""),v=y(!1),_=y(""),T=y(new Set(r.initialAllowedTools?r.initialAllowedTools.split(",").map(b=>b.trim()).filter(Boolean):[]));function U(b){T.value.has(b)?T.value.delete(b):T.value.add(b),T.value=new Set(T.value)}const M=Oe(()=>r.mode==="edit"&&r.slug?r.slug:i.value.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,64)||"my-skill");let q=y(""),z;He(k,b=>{clearTimeout(z),z=setTimeout(async()=>{q.value=await f(b||"")},300)},{immediate:!0});function I(){const b=[...T.value],m=["---"];if(m.push(`name: ${i.value}`),l.value&&m.push(`description: ${l.value}`),o.value&&m.push(`argument-hint: ${o.value}`),b.length>0&&m.push(`allowed-tools: ${b.join(", ")}`),a.value&&m.push(`model: ${a.value}`),u.value===!1&&m.push("user-invocable: false"),c.value&&m.push("disable-model-invocation: true"),d.value&&m.push(`context: ${d.value}`),h.value&&m.push(`agent: ${h.value}`),x.value.trim())try{const D=JSON.parse(x.value.trim());m.push(`hooks: ${JSON.stringify(D)}`)}catch{}return m.push("---"),m.join(` -`)+` - -`+k.value.trim()+` -`}async function _e(){v.value=!0,_.value="";try{const b=I();if(r.mode==="create"){const m=await fetch("/api/skills",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({slug:M.value,content:b})});if(!m.ok){const D=await m.json();throw new Error(D.error||"Failed to create skill")}window.location.href=`/${M.value}`}else{const m=await fetch(`/api/skills/${r.slug}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:b})});if(!m.ok){const D=await m.json();throw new Error(D.error||"Failed to update skill")}window.location.href=`/${r.slug}`}}catch(b){_.value=b instanceof Error?b.message:"Something went wrong"}finally{v.value=!1}}const he={props:r,AVAILABLE_TOOLS:n,AVAILABLE_MODELS:t,name:i,description:l,argumentHint:o,model:a,userInvocable:u,disableModelInvocation:c,context:d,agent:h,hooksJson:x,body:k,saving:v,error:_,selectedTools:T,toggleTool:U,computedSlug:M,get previewHtml(){return q},set previewHtml(b){q=b},get debounceTimer(){return z},set debounceTimer(b){z=b},buildContent:I,save:_e};return Object.defineProperty(he,"__isScriptSetup",{enumerable:!1,value:!0}),he}}),Lt={class:"grid gap-4 sm:grid-cols-2"},Bt={class:"mt-1.5 text-xs text-gray-600"},Et={class:"text-gray-500 font-mono"},_t={class:"flex flex-wrap gap-1.5 rounded-xl border border-white/[0.06] bg-[var(--color-surface-100)] px-3 py-2.5 min-h-[42px]"},Mt=["onClick"],qt={class:"grid gap-4 sm:grid-cols-3"},Dt=["value"],Ht={class:"flex flex-wrap gap-6"},Ot={class:"flex items-center gap-2.5 cursor-pointer group"},Zt={class:"flex items-center gap-2.5 cursor-pointer group"},Nt={class:"group"},jt={class:"mt-3"},Vt={class:"grid gap-4 lg:grid-cols-2"},Ut=["innerHTML"],Qt={class:"flex items-center gap-4 pt-2"},Ft=["disabled"],Gt={key:0,class:"h-4 w-4 animate-spin",fill:"none",viewBox:"0 0 24 24"},Jt={key:0,class:"text-sm text-red-400"};function Wt(s,e,r,n,t,i){return P(),C("form",{onSubmit:Me(n.save,["prevent"]),class:"space-y-6"},[p("div",Lt,[p("div",null,[e[11]||(e[11]=p("label",{class:"block text-xs font-medium uppercase tracking-wider text-gray-500 mb-1.5"},"Name",-1)),$(p("input",{"onUpdate:modelValue":e[0]||(e[0]=l=>n.name=l),type:"text",required:"",placeholder:"My Awesome Skill",class:"w-full rounded-xl border border-white/[0.06] bg-[var(--color-surface-100)] px-4 py-2.5 text-sm text-white placeholder-gray-600 focus:border-[var(--color-accent-500)]/50 focus:outline-none focus:ring-1 focus:ring-[var(--color-accent-500)]/20 transition-all"},null,512),[[H,n.name]]),p("p",Bt,[e[10]||(e[10]=Q(" Slug: ",-1)),p("code",Et,O(n.computedSlug),1)])]),p("div",null,[e[12]||(e[12]=p("label",{class:"block text-xs font-medium uppercase tracking-wider text-gray-500 mb-1.5"},"Description",-1)),$(p("input",{"onUpdate:modelValue":e[1]||(e[1]=l=>n.description=l),type:"text",placeholder:"Brief description of what this skill does",class:"w-full rounded-xl border border-white/[0.06] bg-[var(--color-surface-100)] px-4 py-2.5 text-sm text-white placeholder-gray-600 focus:border-[var(--color-accent-500)]/50 focus:outline-none focus:ring-1 focus:ring-[var(--color-accent-500)]/20 transition-all"},null,512),[[H,n.description]])])]),p("div",null,[e[13]||(e[13]=p("label",{class:"block text-xs font-medium uppercase tracking-wider text-gray-500 mb-1.5"},"Allowed Tools",-1)),p("div",_t,[(P(!0),C(ge,null,fe(n.AVAILABLE_TOOLS,l=>(P(),C("button",{key:l,type:"button",onClick:o=>n.toggleTool(l),class:Ze(["rounded-md px-2.5 py-1 text-xs font-medium transition-all",n.selectedTools.has(l)?"bg-[var(--color-accent-500)] text-white shadow-sm":"bg-white/[0.04] border border-white/[0.06] text-gray-500 hover:text-gray-300 hover:bg-white/[0.08]"])},O(l),11,Mt))),128))])]),p("div",qt,[p("div",null,[e[15]||(e[15]=p("label",{class:"block text-xs font-medium uppercase tracking-wider text-gray-500 mb-1.5"},"Model",-1)),$(p("select",{"onUpdate:modelValue":e[2]||(e[2]=l=>n.model=l),class:"w-full rounded-xl border border-white/[0.06] bg-[var(--color-surface-100)] px-4 py-2.5 text-sm text-white focus:border-[var(--color-accent-500)]/50 focus:outline-none focus:ring-1 focus:ring-[var(--color-accent-500)]/20 transition-all"},[e[14]||(e[14]=p("option",{value:""},"Default",-1)),(P(!0),C(ge,null,fe(n.AVAILABLE_MODELS,l=>(P(),C("option",{key:l.id,value:l.id},O(l.display_name),9,Dt))),128))],512),[[Y,n.model]])]),p("div",null,[e[16]||(e[16]=p("label",{class:"block text-xs font-medium uppercase tracking-wider text-gray-500 mb-1.5"},"Argument Hint",-1)),$(p("input",{"onUpdate:modelValue":e[3]||(e[3]=l=>n.argumentHint=l),type:"text",placeholder:"e.g. ",class:"w-full rounded-xl border border-white/[0.06] bg-[var(--color-surface-100)] px-4 py-2.5 text-sm text-white placeholder-gray-600 focus:border-[var(--color-accent-500)]/50 focus:outline-none focus:ring-1 focus:ring-[var(--color-accent-500)]/20 transition-all"},null,512),[[H,n.argumentHint]])]),p("div",null,[e[18]||(e[18]=p("label",{class:"block text-xs font-medium uppercase tracking-wider text-gray-500 mb-1.5"},"Agent",-1)),$(p("select",{"onUpdate:modelValue":e[4]||(e[4]=l=>n.agent=l),class:"w-full rounded-xl border border-white/[0.06] bg-[var(--color-surface-100)] px-4 py-2.5 text-sm text-white focus:border-[var(--color-accent-500)]/50 focus:outline-none focus:ring-1 focus:ring-[var(--color-accent-500)]/20 transition-all"},[...e[17]||(e[17]=[p("option",{value:""},"general-purpose (default)",-1),p("option",{value:"Explore"},"Explore",-1),p("option",{value:"Plan"},"Plan",-1)])],512),[[Y,n.agent]])])]),p("div",Ht,[p("label",Ot,[$(p("input",{type:"checkbox","onUpdate:modelValue":e[5]||(e[5]=l=>n.userInvocable=l),class:"sr-only peer"},null,512),[[de,n.userInvocable]]),e[19]||(e[19]=p("div",{class:"h-5 w-9 rounded-full bg-white/[0.06] border border-white/[0.06] peer-checked:bg-[var(--color-accent-500)] peer-checked:border-[var(--color-accent-500)] relative transition-all after:content-[''] after:absolute after:top-0.5 after:left-0.5 after:h-4 after:w-4 after:rounded-full after:bg-gray-400 after:transition-all peer-checked:after:translate-x-4 peer-checked:after:bg-white"},null,-1)),e[20]||(e[20]=p("span",{class:"text-xs text-gray-500 group-hover:text-gray-300 transition-colors"},[Q("User Invocable "),p("span",{class:"text-gray-600"},"(show in /menu)")],-1))]),p("label",Zt,[$(p("input",{type:"checkbox","onUpdate:modelValue":e[6]||(e[6]=l=>n.disableModelInvocation=l),class:"sr-only peer"},null,512),[[de,n.disableModelInvocation]]),e[21]||(e[21]=p("div",{class:"h-5 w-9 rounded-full bg-white/[0.06] border border-white/[0.06] peer-checked:bg-[var(--color-accent-500)] peer-checked:border-[var(--color-accent-500)] relative transition-all after:content-[''] after:absolute after:top-0.5 after:left-0.5 after:h-4 after:w-4 after:rounded-full after:bg-gray-400 after:transition-all peer-checked:after:translate-x-4 peer-checked:after:bg-white"},null,-1)),e[22]||(e[22]=p("span",{class:"text-xs text-gray-500 group-hover:text-gray-300 transition-colors"},[Q("Disable Model Invocation "),p("span",{class:"text-gray-600"},"(manual only)")],-1))])]),p("div",null,[e[24]||(e[24]=p("label",{class:"block text-xs font-medium uppercase tracking-wider text-gray-500 mb-1.5"},"Context",-1)),$(p("select",{"onUpdate:modelValue":e[7]||(e[7]=l=>n.context=l),class:"w-full rounded-xl border border-white/[0.06] bg-[var(--color-surface-100)] px-4 py-2.5 text-sm text-white focus:border-[var(--color-accent-500)]/50 focus:outline-none focus:ring-1 focus:ring-[var(--color-accent-500)]/20 transition-all"},[...e[23]||(e[23]=[p("option",{value:""},"Inline (default)",-1),p("option",{value:"fork"},"Fork (run in subagent)",-1)])],512),[[Y,n.context]]),e[25]||(e[25]=p("p",{class:"mt-1.5 text-xs text-gray-600"},"Fork runs the skill in an isolated subagent context",-1))]),p("details",Nt,[e[27]||(e[27]=p("summary",{class:"text-xs font-medium uppercase tracking-wider text-gray-500 cursor-pointer hover:text-gray-400 transition-colors"},"Hooks (advanced)",-1)),p("div",jt,[$(p("textarea",{"onUpdate:modelValue":e[8]||(e[8]=l=>n.hooksJson=l),rows:"4",placeholder:'{ "preToolExecution": [{ "matcher": "Bash", "hooks": [{ "type": "command", "command": "echo pre" }] }] }',class:"w-full rounded-xl border border-white/[0.06] bg-[var(--color-surface-100)] px-4 py-3 font-mono text-xs text-white placeholder-gray-700 focus:border-[var(--color-accent-500)]/50 focus:outline-none focus:ring-1 focus:ring-[var(--color-accent-500)]/20 transition-all resize-y"},null,512),[[H,n.hooksJson]]),e[26]||(e[26]=p("p",{class:"mt-1.5 text-xs text-gray-600"},"JSON object. Leave empty to omit.",-1))])]),p("div",Vt,[p("div",null,[e[28]||(e[28]=p("label",{class:"block text-xs font-medium uppercase tracking-wider text-gray-500 mb-1.5"},"Skill Body",-1)),$(p("textarea",{"onUpdate:modelValue":e[9]||(e[9]=l=>n.body=l),rows:"20",placeholder:`# My Skill - -Instructions for Claude...`,class:"w-full rounded-xl border border-white/[0.06] bg-[var(--color-surface-100)] px-4 py-3 font-mono text-sm text-white placeholder-gray-600 focus:border-[var(--color-accent-500)]/50 focus:outline-none focus:ring-1 focus:ring-[var(--color-accent-500)]/20 transition-all resize-y leading-relaxed"},null,512),[[H,n.body]])]),p("div",null,[e[29]||(e[29]=p("p",{class:"block text-xs font-medium uppercase tracking-wider text-gray-500 mb-1.5"},"Preview",-1)),p("div",{class:"skill-prose rounded-xl border border-white/[0.06] bg-[var(--color-surface-100)] p-5 min-h-[20rem] overflow-auto",innerHTML:n.previewHtml},null,8,Ut)])]),p("div",Qt,[p("button",{type:"submit",disabled:n.saving,class:"inline-flex items-center gap-2 rounded-xl bg-[var(--color-accent-500)] px-6 py-2.5 text-sm font-semibold text-white shadow-lg shadow-[var(--color-accent-500)]/20 hover:bg-[var(--color-accent-600)] hover:shadow-[var(--color-accent-500)]/30 disabled:opacity-50 active:scale-[0.97] transition-all"},[n.saving?(P(),C("svg",Gt,[...e[30]||(e[30]=[p("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"},null,-1),p("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"},null,-1)])])):ke("",!0),Q(" "+O(n.saving?"Saving...":r.mode==="create"?"Create Skill":"Save Changes"),1)],8,Ft),e[31]||(e[31]=p("a",{href:"/",class:"text-sm text-gray-600 hover:text-gray-300 transition-colors"},"Cancel",-1)),n.error?(P(),C("p",Jt,O(n.error),1)):ke("",!0)])],32)}const er=qe(Pt,[["render",Wt]]);export{er as default}; diff --git a/dist/client/_astro/SkillEditor.DYeR1V3X.js b/dist/client/_astro/SkillEditor.DYeR1V3X.js new file mode 100644 index 0000000..a1296d3 --- /dev/null +++ b/dist/client/_astro/SkillEditor.DYeR1V3X.js @@ -0,0 +1,66 @@ +import{c as v,a as o,w as A,v as P,b as q,d as M,n as j,t as L,F as te,r as re,e as ge,f as Le,g as fe,h as lt,i as m,j as it,k as Q,o as S}from"./runtime-dom.esm-bundler.A7MyAQcw.js";import{_ as at}from"./_plugin-vue_export-helper.DlAUqK2U.js";function me(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var H=me();function _e(s){H=s}var D={exec:()=>null};function f(s,e=""){let t=typeof s=="string"?s:s.source,n={replace:(r,i)=>{let l=typeof i=="string"?i:i.source;return l=l.replace(T.caret,"$1"),t=t.replace(r,l),n},getRegex:()=>new RegExp(t,e)};return n}var ot=(()=>{try{return!!new RegExp("(?<=1)(?/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^
    /i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,unescapeTest:/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:s=>new RegExp(`^( {0,3}${s})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:s=>new RegExp(`^ {0,${Math.min(3,s-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:s=>new RegExp(`^ {0,${Math.min(3,s-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:s=>new RegExp(`^ {0,${Math.min(3,s-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:s=>new RegExp(`^ {0,${Math.min(3,s-1)}}#`),htmlBeginRegex:s=>new RegExp(`^ {0,${Math.min(3,s-1)}}<(?:[a-z].*>|!--)`,"i"),blockquoteBeginRegex:s=>new RegExp(`^ {0,${Math.min(3,s-1)}}>`)},ct=/^(?:[ \t]*(?:\n|$))+/,ut=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,pt=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,X=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,ht=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,we=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,qe=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,De=f(qe).replace(/bull/g,we).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),dt=f(qe).replace(/bull/g,we).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),ye=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,gt=/^[^\n]+/,ve=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,ft=f(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",ve).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),kt=f(/^(bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,we).getRegex(),ae="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",Se=/|$))/,xt=f("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",Se).replace("tag",ae).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),Ne=f(ye).replace("hr",X).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",ae).getRegex(),bt=f(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",Ne).getRegex(),Te={blockquote:bt,code:ut,def:ft,fences:pt,heading:ht,hr:X,html:xt,lheading:De,list:kt,newline:ct,paragraph:Ne,table:D,text:gt},Ie=f("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",X).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",ae).getRegex(),mt={...Te,lheading:dt,table:Ie,paragraph:f(ye).replace("hr",X).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",Ie).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",ae).getRegex()},wt={...Te,html:f(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",Se).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:D,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:f(ye).replace("hr",X).replace("heading",` *#{1,6} *[^ +]`).replace("lheading",De).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},yt=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,vt=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,He=/^( {2,}|\\)\n(?!\s*$)/,St=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\`+)[^`]+\k(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",ot?"(?`+)[^`]+\k(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),Ve=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,Lt=f(Ve,"u").replace(/punct/g,oe).getRegex(),It=f(Ve,"u").replace(/punct/g,je).getRegex(),Ue="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",Bt=f(Ue,"gu").replace(/notPunctSpace/g,Ze).replace(/punctSpace/g,Re).replace(/punct/g,oe).getRegex(),Et=f(Ue,"gu").replace(/notPunctSpace/g,At).replace(/punctSpace/g,Rt).replace(/punct/g,je).getRegex(),Pt=f("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,Ze).replace(/punctSpace/g,Re).replace(/punct/g,oe).getRegex(),Mt=f(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,Fe).getRegex(),Ot="^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)",_t=f(Ot,"gu").replace(/notPunctSpace/g,Ct).replace(/punctSpace/g,zt).replace(/punct/g,Fe).getRegex(),qt=f(/\\(punct)/,"gu").replace(/punct/g,oe).getRegex(),Dt=f(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),Nt=f(Se).replace("(?:-->|$)","-->").getRegex(),Ht=f("^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",Nt).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),se=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+[^`]*?`+(?!`)|[^\[\]\\`])*?/,Zt=f(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/).replace("label",se).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),Qe=f(/^!?\[(label)\]\[(ref)\]/).replace("label",se).replace("ref",ve).getRegex(),Ge=f(/^!?\[(ref)\](?:\[\])?/).replace("ref",ve).getRegex(),jt=f("reflink|nolink(?!\\()","g").replace("reflink",Qe).replace("nolink",Ge).getRegex(),Be=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,Ae={_backpedal:D,anyPunctuation:qt,autolink:Dt,blockSkip:$t,br:He,code:vt,del:D,delLDelim:D,delRDelim:D,emStrongLDelim:Lt,emStrongRDelimAst:Bt,emStrongRDelimUnd:Pt,escape:yt,link:Zt,nolink:Ge,punctuation:Tt,reflink:Qe,reflinkSearch:jt,tag:Ht,text:St,url:D},Ft={...Ae,link:f(/^!?\[(label)\]\((.*?)\)/).replace("label",se).getRegex(),reflink:f(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",se).getRegex()},ke={...Ae,emStrongRDelimAst:Et,emStrongLDelim:It,delLDelim:Mt,delRDelim:_t,url:f(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",Be).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:f(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\":">",'"':""","'":"'"},Ee=s=>Ut[s];function E(s,e){if(e){if(T.escapeTest.test(s))return s.replace(T.escapeReplace,Ee)}else if(T.escapeTestNoEncode.test(s))return s.replace(T.escapeReplaceNoEncode,Ee);return s}function Pe(s){try{s=encodeURI(s).replace(T.percentDecode,"%")}catch{return null}return s}function Me(s,e){let t=s.replace(T.findPipe,(i,l,c)=>{let a=!1,p=l;for(;--p>=0&&c[p]==="\\";)a=!a;return a?"|":" |"}),n=t.split(T.splitPipe),r=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),e)if(n.length>e)n.splice(e);else for(;n.length0?-2:-1}function Gt(s,e=0){let t=e,n="";for(let r of s)if(r===" "){let i=4-t%4;n+=" ".repeat(i),t+=i}else n+=r,t++;return n}function Oe(s,e,t,n,r){let i=e.href,l=e.title||null,c=s[1].replace(r.other.outputLinkReplace,"$1");n.state.inLink=!0;let a={type:s[0].charAt(0)==="!"?"image":"link",raw:t,href:i,title:l,text:c,tokens:n.inlineTokens(c)};return n.state.inLink=!1,a}function Jt(s,e,t){let n=s.match(t.other.indentCodeCompensation);if(n===null)return e;let r=n[1];return e.split(` +`).map(i=>{let l=i.match(t.other.beginningSpace);if(l===null)return i;let[c]=l;return c.length>=r.length?i.slice(r.length):i}).join(` +`)}var le=class{options;rules;lexer;constructor(s){this.options=s||H}space(s){let e=this.rules.block.newline.exec(s);if(e&&e[0].length>0)return{type:"space",raw:e[0]}}code(s){let e=this.rules.block.code.exec(s);if(e){let t=e[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:e[0],codeBlockStyle:"indented",text:this.options.pedantic?t:J(t,` +`)}}}fences(s){let e=this.rules.block.fences.exec(s);if(e){let t=e[0],n=Jt(t,e[3]||"",this.rules);return{type:"code",raw:t,lang:e[2]?e[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):e[2],text:n}}}heading(s){let e=this.rules.block.heading.exec(s);if(e){let t=e[2].trim();if(this.rules.other.endingHash.test(t)){let n=J(t,"#");(this.options.pedantic||!n||this.rules.other.endingSpaceChar.test(n))&&(t=n.trim())}return{type:"heading",raw:e[0],depth:e[1].length,text:t,tokens:this.lexer.inline(t)}}}hr(s){let e=this.rules.block.hr.exec(s);if(e)return{type:"hr",raw:J(e[0],` +`)}}blockquote(s){let e=this.rules.block.blockquote.exec(s);if(e){let t=J(e[0],` +`).split(` +`),n="",r="",i=[];for(;t.length>0;){let l=!1,c=[],a;for(a=0;a1,r={type:"list",raw:"",ordered:n,start:n?+t.slice(0,-1):"",loose:!1,items:[]};t=n?`\\d{1,9}\\${t.slice(-1)}`:`\\${t}`,this.options.pedantic&&(t=n?t:"[*+-]");let i=this.rules.other.listItemRegex(t),l=!1;for(;s;){let a=!1,p="",u="";if(!(e=i.exec(s))||this.rules.block.hr.test(s))break;p=e[0],s=s.substring(p.length);let g=Gt(e[2].split(` +`,1)[0],e[1].length),d=s.split(` +`,1)[0],w=!g.trim(),b=0;if(this.options.pedantic?(b=2,u=g.trimStart()):w?b=e[1].length+1:(b=g.search(this.rules.other.nonSpaceChar),b=b>4?1:b,u=g.slice(b),b+=e[1].length),w&&this.rules.other.blankLine.test(d)&&(p+=d+` +`,s=s.substring(d.length+1),a=!0),!a){let y=this.rules.other.nextBulletRegex(b),I=this.rules.other.hrRegex(b),F=this.rules.other.fencesBeginRegex(b),V=this.rules.other.headingBeginRegex(b),U=this.rules.other.htmlBeginRegex(b),Z=this.rules.other.blockquoteBeginRegex(b);for(;s;){let O=s.split(` +`,1)[0],B;if(d=O,this.options.pedantic?(d=d.replace(this.rules.other.listReplaceNesting," "),B=d):B=d.replace(this.rules.other.tabCharGlobal," "),F.test(d)||V.test(d)||U.test(d)||Z.test(d)||y.test(d)||I.test(d))break;if(B.search(this.rules.other.nonSpaceChar)>=b||!d.trim())u+=` +`+B.slice(b);else{if(w||g.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||F.test(g)||V.test(g)||I.test(g))break;u+=` +`+d}w=!d.trim(),p+=O+` +`,s=s.substring(O.length+1),g=B.slice(b)}}r.loose||(l?r.loose=!0:this.rules.other.doubleBlankLine.test(p)&&(l=!0)),r.items.push({type:"list_item",raw:p,task:!!this.options.gfm&&this.rules.other.listIsTask.test(u),loose:!1,text:u,tokens:[]}),r.raw+=p}let c=r.items.at(-1);if(c)c.raw=c.raw.trimEnd(),c.text=c.text.trimEnd();else return;r.raw=r.raw.trimEnd();for(let a of r.items){if(this.lexer.state.top=!1,a.tokens=this.lexer.blockTokens(a.text,[]),a.task){if(a.text=a.text.replace(this.rules.other.listReplaceTask,""),a.tokens[0]?.type==="text"||a.tokens[0]?.type==="paragraph"){a.tokens[0].raw=a.tokens[0].raw.replace(this.rules.other.listReplaceTask,""),a.tokens[0].text=a.tokens[0].text.replace(this.rules.other.listReplaceTask,"");for(let u=this.lexer.inlineQueue.length-1;u>=0;u--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[u].src)){this.lexer.inlineQueue[u].src=this.lexer.inlineQueue[u].src.replace(this.rules.other.listReplaceTask,"");break}}let p=this.rules.other.listTaskCheckbox.exec(a.raw);if(p){let u={type:"checkbox",raw:p[0]+" ",checked:p[0]!=="[ ]"};a.checked=u.checked,r.loose?a.tokens[0]&&["paragraph","text"].includes(a.tokens[0].type)&&"tokens"in a.tokens[0]&&a.tokens[0].tokens?(a.tokens[0].raw=u.raw+a.tokens[0].raw,a.tokens[0].text=u.raw+a.tokens[0].text,a.tokens[0].tokens.unshift(u)):a.tokens.unshift({type:"paragraph",raw:u.raw,text:u.raw,tokens:[u]}):a.tokens.unshift(u)}}if(!r.loose){let p=a.tokens.filter(g=>g.type==="space"),u=p.length>0&&p.some(g=>this.rules.other.anyLine.test(g.raw));r.loose=u}}if(r.loose)for(let a of r.items){a.loose=!0;for(let p of a.tokens)p.type==="text"&&(p.type="paragraph")}return r}}html(s){let e=this.rules.block.html.exec(s);if(e)return{type:"html",block:!0,raw:e[0],pre:e[1]==="pre"||e[1]==="script"||e[1]==="style",text:e[0]}}def(s){let e=this.rules.block.def.exec(s);if(e){let t=e[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal," "),n=e[2]?e[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",r=e[3]?e[3].substring(1,e[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):e[3];return{type:"def",tag:t,raw:e[0],href:n,title:r}}}table(s){let e=this.rules.block.table.exec(s);if(!e||!this.rules.other.tableDelimiter.test(e[2]))return;let t=Me(e[1]),n=e[2].replace(this.rules.other.tableAlignChars,"").split("|"),r=e[3]?.trim()?e[3].replace(this.rules.other.tableRowBlankLine,"").split(` +`):[],i={type:"table",raw:e[0],header:[],align:[],rows:[]};if(t.length===n.length){for(let l of n)this.rules.other.tableAlignRight.test(l)?i.align.push("right"):this.rules.other.tableAlignCenter.test(l)?i.align.push("center"):this.rules.other.tableAlignLeft.test(l)?i.align.push("left"):i.align.push(null);for(let l=0;l({text:c,tokens:this.lexer.inline(c),header:!1,align:i.align[a]})));return i}}lheading(s){let e=this.rules.block.lheading.exec(s);if(e)return{type:"heading",raw:e[0],depth:e[2].charAt(0)==="="?1:2,text:e[1],tokens:this.lexer.inline(e[1])}}paragraph(s){let e=this.rules.block.paragraph.exec(s);if(e){let t=e[1].charAt(e[1].length-1)===` +`?e[1].slice(0,-1):e[1];return{type:"paragraph",raw:e[0],text:t,tokens:this.lexer.inline(t)}}}text(s){let e=this.rules.block.text.exec(s);if(e)return{type:"text",raw:e[0],text:e[0],tokens:this.lexer.inline(e[0])}}escape(s){let e=this.rules.inline.escape.exec(s);if(e)return{type:"escape",raw:e[0],text:e[1]}}tag(s){let e=this.rules.inline.tag.exec(s);if(e)return!this.lexer.state.inLink&&this.rules.other.startATag.test(e[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:e[0]}}link(s){let e=this.rules.inline.link.exec(s);if(e){let t=e[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(t)){if(!this.rules.other.endAngleBracket.test(t))return;let i=J(t.slice(0,-1),"\\");if((t.length-i.length)%2===0)return}else{let i=Qt(e[2],"()");if(i===-2)return;if(i>-1){let l=(e[0].indexOf("!")===0?5:4)+e[1].length+i;e[2]=e[2].substring(0,i),e[0]=e[0].substring(0,l).trim(),e[3]=""}}let n=e[2],r="";if(this.options.pedantic){let i=this.rules.other.pedanticHrefTitle.exec(n);i&&(n=i[1],r=i[3])}else r=e[3]?e[3].slice(1,-1):"";return n=n.trim(),this.rules.other.startAngleBracket.test(n)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(t)?n=n.slice(1):n=n.slice(1,-1)),Oe(e,{href:n&&n.replace(this.rules.inline.anyPunctuation,"$1"),title:r&&r.replace(this.rules.inline.anyPunctuation,"$1")},e[0],this.lexer,this.rules)}}reflink(s,e){let t;if((t=this.rules.inline.reflink.exec(s))||(t=this.rules.inline.nolink.exec(s))){let n=(t[2]||t[1]).replace(this.rules.other.multipleSpaceGlobal," "),r=e[n.toLowerCase()];if(!r){let i=t[0].charAt(0);return{type:"text",raw:i,text:i}}return Oe(t,r,t[0],this.lexer,this.rules)}}emStrong(s,e,t=""){let n=this.rules.inline.emStrongLDelim.exec(s);if(!(!n||n[3]&&t.match(this.rules.other.unicodeAlphaNumeric))&&(!(n[1]||n[2])||!t||this.rules.inline.punctuation.exec(t))){let r=[...n[0]].length-1,i,l,c=r,a=0,p=n[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(p.lastIndex=0,e=e.slice(-1*s.length+r);(n=p.exec(e))!=null;){if(i=n[1]||n[2]||n[3]||n[4]||n[5]||n[6],!i)continue;if(l=[...i].length,n[3]||n[4]){c+=l;continue}else if((n[5]||n[6])&&r%3&&!((r+l)%3)){a+=l;continue}if(c-=l,c>0)continue;l=Math.min(l,l+c+a);let u=[...n[0]][0].length,g=s.slice(0,r+n.index+u+l);if(Math.min(r,l)%2){let w=g.slice(1,-1);return{type:"em",raw:g,text:w,tokens:this.lexer.inlineTokens(w)}}let d=g.slice(2,-2);return{type:"strong",raw:g,text:d,tokens:this.lexer.inlineTokens(d)}}}}codespan(s){let e=this.rules.inline.code.exec(s);if(e){let t=e[2].replace(this.rules.other.newLineCharGlobal," "),n=this.rules.other.nonSpaceChar.test(t),r=this.rules.other.startingSpaceChar.test(t)&&this.rules.other.endingSpaceChar.test(t);return n&&r&&(t=t.substring(1,t.length-1)),{type:"codespan",raw:e[0],text:t}}}br(s){let e=this.rules.inline.br.exec(s);if(e)return{type:"br",raw:e[0]}}del(s,e,t=""){let n=this.rules.inline.delLDelim.exec(s);if(n&&(!n[1]||!t||this.rules.inline.punctuation.exec(t))){let r=[...n[0]].length-1,i,l,c=r,a=this.rules.inline.delRDelim;for(a.lastIndex=0,e=e.slice(-1*s.length+r);(n=a.exec(e))!=null;){if(i=n[1]||n[2]||n[3]||n[4]||n[5]||n[6],!i||(l=[...i].length,l!==r))continue;if(n[3]||n[4]){c+=l;continue}if(c-=l,c>0)continue;l=Math.min(l,l+c);let p=[...n[0]][0].length,u=s.slice(0,r+n.index+p+l),g=u.slice(r,-r);return{type:"del",raw:u,text:g,tokens:this.lexer.inlineTokens(g)}}}}autolink(s){let e=this.rules.inline.autolink.exec(s);if(e){let t,n;return e[2]==="@"?(t=e[1],n="mailto:"+t):(t=e[1],n=t),{type:"link",raw:e[0],text:t,href:n,tokens:[{type:"text",raw:t,text:t}]}}}url(s){let e;if(e=this.rules.inline.url.exec(s)){let t,n;if(e[2]==="@")t=e[0],n="mailto:"+t;else{let r;do r=e[0],e[0]=this.rules.inline._backpedal.exec(e[0])?.[0]??"";while(r!==e[0]);t=e[0],e[1]==="www."?n="http://"+e[0]:n=e[0]}return{type:"link",raw:e[0],text:t,href:n,tokens:[{type:"text",raw:t,text:t}]}}}inlineText(s){let e=this.rules.inline.text.exec(s);if(e){let t=this.lexer.state.inRawBlock;return{type:"text",raw:e[0],text:e[0],escaped:t}}}},z=class xe{tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||H,this.options.tokenizer=this.options.tokenizer||new le,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let t={other:T,block:ne.normal,inline:G.normal};this.options.pedantic?(t.block=ne.pedantic,t.inline=G.pedantic):this.options.gfm&&(t.block=ne.gfm,this.options.breaks?t.inline=G.breaks:t.inline=G.gfm),this.tokenizer.rules=t}static get rules(){return{block:ne,inline:G}}static lex(e,t){return new xe(t).lex(e)}static lexInline(e,t){return new xe(t).inlineTokens(e)}lex(e){e=e.replace(T.carriageReturn,` +`),this.blockTokens(e,this.tokens);for(let t=0;t(r=l.call({lexer:this},e,t))?(e=e.substring(r.raw.length),t.push(r),!0):!1))continue;if(r=this.tokenizer.space(e)){e=e.substring(r.raw.length);let l=t.at(-1);r.raw.length===1&&l!==void 0?l.raw+=` +`:t.push(r);continue}if(r=this.tokenizer.code(e)){e=e.substring(r.raw.length);let l=t.at(-1);l?.type==="paragraph"||l?.type==="text"?(l.raw+=(l.raw.endsWith(` +`)?"":` +`)+r.raw,l.text+=` +`+r.text,this.inlineQueue.at(-1).src=l.text):t.push(r);continue}if(r=this.tokenizer.fences(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.heading(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.hr(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.blockquote(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.list(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.html(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.def(e)){e=e.substring(r.raw.length);let l=t.at(-1);l?.type==="paragraph"||l?.type==="text"?(l.raw+=(l.raw.endsWith(` +`)?"":` +`)+r.raw,l.text+=` +`+r.raw,this.inlineQueue.at(-1).src=l.text):this.tokens.links[r.tag]||(this.tokens.links[r.tag]={href:r.href,title:r.title},t.push(r));continue}if(r=this.tokenizer.table(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.lheading(e)){e=e.substring(r.raw.length),t.push(r);continue}let i=e;if(this.options.extensions?.startBlock){let l=1/0,c=e.slice(1),a;this.options.extensions.startBlock.forEach(p=>{a=p.call({lexer:this},c),typeof a=="number"&&a>=0&&(l=Math.min(l,a))}),l<1/0&&l>=0&&(i=e.substring(0,l+1))}if(this.state.top&&(r=this.tokenizer.paragraph(i))){let l=t.at(-1);n&&l?.type==="paragraph"?(l.raw+=(l.raw.endsWith(` +`)?"":` +`)+r.raw,l.text+=` +`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=l.text):t.push(r),n=i.length!==e.length,e=e.substring(r.raw.length);continue}if(r=this.tokenizer.text(e)){e=e.substring(r.raw.length);let l=t.at(-1);l?.type==="text"?(l.raw+=(l.raw.endsWith(` +`)?"":` +`)+r.raw,l.text+=` +`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=l.text):t.push(r);continue}if(e){let l="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(l);break}else throw new Error(l)}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(e,t=[]){let n=e,r=null;if(this.tokens.links){let a=Object.keys(this.tokens.links);if(a.length>0)for(;(r=this.tokenizer.rules.inline.reflinkSearch.exec(n))!=null;)a.includes(r[0].slice(r[0].lastIndexOf("[")+1,-1))&&(n=n.slice(0,r.index)+"["+"a".repeat(r[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(r=this.tokenizer.rules.inline.anyPunctuation.exec(n))!=null;)n=n.slice(0,r.index)+"++"+n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let i;for(;(r=this.tokenizer.rules.inline.blockSkip.exec(n))!=null;)i=r[2]?r[2].length:0,n=n.slice(0,r.index+i)+"["+"a".repeat(r[0].length-i-2)+"]"+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);n=this.options.hooks?.emStrongMask?.call({lexer:this},n)??n;let l=!1,c="";for(;e;){l||(c=""),l=!1;let a;if(this.options.extensions?.inline?.some(u=>(a=u.call({lexer:this},e,t))?(e=e.substring(a.raw.length),t.push(a),!0):!1))continue;if(a=this.tokenizer.escape(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.tag(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.link(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(a.raw.length);let u=t.at(-1);a.type==="text"&&u?.type==="text"?(u.raw+=a.raw,u.text+=a.text):t.push(a);continue}if(a=this.tokenizer.emStrong(e,n,c)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.codespan(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.br(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.del(e,n,c)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.autolink(e)){e=e.substring(a.raw.length),t.push(a);continue}if(!this.state.inLink&&(a=this.tokenizer.url(e))){e=e.substring(a.raw.length),t.push(a);continue}let p=e;if(this.options.extensions?.startInline){let u=1/0,g=e.slice(1),d;this.options.extensions.startInline.forEach(w=>{d=w.call({lexer:this},g),typeof d=="number"&&d>=0&&(u=Math.min(u,d))}),u<1/0&&u>=0&&(p=e.substring(0,u+1))}if(a=this.tokenizer.inlineText(p)){e=e.substring(a.raw.length),a.raw.slice(-1)!=="_"&&(c=a.raw.slice(-1)),l=!0;let u=t.at(-1);u?.type==="text"?(u.raw+=a.raw,u.text+=a.text):t.push(a);continue}if(e){let u="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(u);break}else throw new Error(u)}}return t}},ie=class{options;parser;constructor(s){this.options=s||H}space(s){return""}code({text:s,lang:e,escaped:t}){let n=(e||"").match(T.notSpaceStart)?.[0],r=s.replace(T.endingNewline,"")+` +`;return n?'
    '+(t?r:E(r,!0))+`
    +`:"
    "+(t?r:E(r,!0))+`
    +`}blockquote({tokens:s}){return`
    +${this.parser.parse(s)}
    +`}html({text:s}){return s}def(s){return""}heading({tokens:s,depth:e}){return`${this.parser.parseInline(s)} +`}hr(s){return`
    +`}list(s){let e=s.ordered,t=s.start,n="";for(let l=0;l +`+n+" +`}listitem(s){return`
  • ${this.parser.parse(s.tokens)}
  • +`}checkbox({checked:s}){return" '}paragraph({tokens:s}){return`

    ${this.parser.parseInline(s)}

    +`}table(s){let e="",t="";for(let r=0;r${n}`),` + +`+e+` +`+n+`
    +`}tablerow({text:s}){return` +${s} +`}tablecell(s){let e=this.parser.parseInline(s.tokens),t=s.header?"th":"td";return(s.align?`<${t} align="${s.align}">`:`<${t}>`)+e+` +`}strong({tokens:s}){return`${this.parser.parseInline(s)}`}em({tokens:s}){return`${this.parser.parseInline(s)}`}codespan({text:s}){return`${E(s,!0)}`}br(s){return"
    "}del({tokens:s}){return`${this.parser.parseInline(s)}`}link({href:s,title:e,tokens:t}){let n=this.parser.parseInline(t),r=Pe(s);if(r===null)return n;s=r;let i='
    ",i}image({href:s,title:e,text:t,tokens:n}){n&&(t=this.parser.parseInline(n,this.parser.textRenderer));let r=Pe(s);if(r===null)return E(t);s=r;let i=`${t}{let l=r[i].flat(1/0);t=t.concat(this.walkTokens(l,e))}):r.tokens&&(t=t.concat(this.walkTokens(r.tokens,e)))}}return t}use(...s){let e=this.defaults.extensions||{renderers:{},childTokens:{}};return s.forEach(t=>{let n={...t};if(n.async=this.defaults.async||n.async||!1,t.extensions&&(t.extensions.forEach(r=>{if(!r.name)throw new Error("extension name required");if("renderer"in r){let i=e.renderers[r.name];i?e.renderers[r.name]=function(...l){let c=r.renderer.apply(this,l);return c===!1&&(c=i.apply(this,l)),c}:e.renderers[r.name]=r.renderer}if("tokenizer"in r){if(!r.level||r.level!=="block"&&r.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let i=e[r.level];i?i.unshift(r.tokenizer):e[r.level]=[r.tokenizer],r.start&&(r.level==="block"?e.startBlock?e.startBlock.push(r.start):e.startBlock=[r.start]:r.level==="inline"&&(e.startInline?e.startInline.push(r.start):e.startInline=[r.start]))}"childTokens"in r&&r.childTokens&&(e.childTokens[r.name]=r.childTokens)}),n.extensions=e),t.renderer){let r=this.defaults.renderer||new ie(this.defaults);for(let i in t.renderer){if(!(i in r))throw new Error(`renderer '${i}' does not exist`);if(["options","parser"].includes(i))continue;let l=i,c=t.renderer[l],a=r[l];r[l]=(...p)=>{let u=c.apply(r,p);return u===!1&&(u=a.apply(r,p)),u||""}}n.renderer=r}if(t.tokenizer){let r=this.defaults.tokenizer||new le(this.defaults);for(let i in t.tokenizer){if(!(i in r))throw new Error(`tokenizer '${i}' does not exist`);if(["options","rules","lexer"].includes(i))continue;let l=i,c=t.tokenizer[l],a=r[l];r[l]=(...p)=>{let u=c.apply(r,p);return u===!1&&(u=a.apply(r,p)),u}}n.tokenizer=r}if(t.hooks){let r=this.defaults.hooks||new W;for(let i in t.hooks){if(!(i in r))throw new Error(`hook '${i}' does not exist`);if(["options","block"].includes(i))continue;let l=i,c=t.hooks[l],a=r[l];W.passThroughHooks.has(i)?r[l]=p=>{if(this.defaults.async&&W.passThroughHooksRespectAsync.has(i))return(async()=>{let g=await c.call(r,p);return a.call(r,g)})();let u=c.call(r,p);return a.call(r,u)}:r[l]=(...p)=>{if(this.defaults.async)return(async()=>{let g=await c.apply(r,p);return g===!1&&(g=await a.apply(r,p)),g})();let u=c.apply(r,p);return u===!1&&(u=a.apply(r,p)),u}}n.hooks=r}if(t.walkTokens){let r=this.defaults.walkTokens,i=t.walkTokens;n.walkTokens=function(l){let c=[];return c.push(i.call(this,l)),r&&(c=c.concat(r.call(this,l))),c}}this.defaults={...this.defaults,...n}}),this}setOptions(s){return this.defaults={...this.defaults,...s},this}lexer(s,e){return z.lex(s,e??this.defaults)}parser(s,e){return C.parse(s,e??this.defaults)}parseMarkdown(s){return(e,t)=>{let n={...t},r={...this.defaults,...n},i=this.onError(!!r.silent,!!r.async);if(this.defaults.async===!0&&n.async===!1)return i(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof e>"u"||e===null)return i(new Error("marked(): input parameter is undefined or null"));if(typeof e!="string")return i(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected"));if(r.hooks&&(r.hooks.options=r,r.hooks.block=s),r.async)return(async()=>{let l=r.hooks?await r.hooks.preprocess(e):e,c=await(r.hooks?await r.hooks.provideLexer():s?z.lex:z.lexInline)(l,r),a=r.hooks?await r.hooks.processAllTokens(c):c;r.walkTokens&&await Promise.all(this.walkTokens(a,r.walkTokens));let p=await(r.hooks?await r.hooks.provideParser():s?C.parse:C.parseInline)(a,r);return r.hooks?await r.hooks.postprocess(p):p})().catch(i);try{r.hooks&&(e=r.hooks.preprocess(e));let l=(r.hooks?r.hooks.provideLexer():s?z.lex:z.lexInline)(e,r);r.hooks&&(l=r.hooks.processAllTokens(l)),r.walkTokens&&this.walkTokens(l,r.walkTokens);let c=(r.hooks?r.hooks.provideParser():s?C.parse:C.parseInline)(l,r);return r.hooks&&(c=r.hooks.postprocess(c)),c}catch(l){return i(l)}}}onError(s,e){return t=>{if(t.message+=` +Please report this to https://github.com/markedjs/marked.`,s){let n="

    An error occurred:

    "+E(t.message+"",!0)+"
    ";return e?Promise.resolve(n):n}if(e)return Promise.reject(t);throw t}}},N=new Wt;function x(s,e){return N.parse(s,e)}x.options=x.setOptions=function(s){return N.setOptions(s),x.defaults=N.defaults,_e(x.defaults),x};x.getDefaults=me;x.defaults=H;x.use=function(...s){return N.use(...s),x.defaults=N.defaults,_e(x.defaults),x};x.walkTokens=function(s,e){return N.walkTokens(s,e)};x.parseInline=N.parseInline;x.Parser=C;x.parser=C.parse;x.Renderer=ie;x.TextRenderer=ze;x.Lexer=z;x.lexer=z.lex;x.Tokenizer=le;x.Hooks=W;x.parse=x;x.options;x.setOptions;x.use;x.walkTokens;x.parseInline;C.parse;z.lex;const Xt=lt({__name:"SkillEditor",props:{mode:{},slug:{},forkOf:{},initialName:{},initialDescription:{},initialAllowedTools:{},initialArgumentHint:{},initialModel:{},initialUserInvocable:{type:Boolean},initialDisableModelInvocation:{type:Boolean},initialContext:{},initialAgent:{},initialHooks:{},initialBody:{},initialAuthor:{},initialAuthorEmail:{},initialTags:{},availableTools:{},availableModels:{},availableTags:{}},setup(s,{expose:e}){e();const t=s,n=t.availableTools??["Bash","Read","Write","Edit","Glob","Grep","WebFetch","WebSearch","Task","NotebookEdit"],r=t.availableModels??[{id:"claude-opus-4-6",display_name:"Claude Opus 4.6"},{id:"claude-sonnet-4-5-20250929",display_name:"Claude Sonnet 4.5"},{id:"claude-haiku-4-5-20251001",display_name:"Claude Haiku 4.5"}],i=Q(()=>!!t.forkOf),l=m(t.initialName||""),c=m(t.initialDescription||""),a=m(t.initialArgumentHint||""),p=m(t.initialModel||""),u=m(t.initialUserInvocable??!0),g=m(t.initialDisableModelInvocation??!1),d=m(t.initialContext||""),w=m(t.initialAgent||""),b=m(t.initialHooks||""),y=m(t.initialTags?t.initialTags.split(",").map(h=>h.trim()).filter(Boolean):[]),I=m(""),F=m(!1),V=m(),U=t.availableTags?t.availableTags.split(",").map(h=>h.trim()).filter(Boolean):[],Z=m(t.initialBody||""),O=m(!1),B=m(""),ce=m(""),ue=m(""),pe=m(typeof localStorage<"u"&&localStorage.getItem("skillshere-token")||""),_=m(new Set(t.initialAllowedTools?t.initialAllowedTools.split(",").map(h=>h.trim()).filter(Boolean):[]));function Je(h){_.value.has(h)?_.value.delete(h):_.value.add(h),_.value=new Set(_.value)}const We=Q(()=>{const h=I.value.toLowerCase().trim(),k=new Set(y.value.map($=>$.toLowerCase())),R=U.filter($=>!k.has($.toLowerCase())&&(!h||$.toLowerCase().includes(h)));return h&&!k.has(h)&&!R.some($=>$.toLowerCase()===h)&&R.push(h),R}),Xe=h=>!U.some(k=>k.toLowerCase()===h.toLowerCase());function he(h){const k=h.trim().toLowerCase();k&&!y.value.some(R=>R.toLowerCase()===k)&&y.value.push(k),I.value="",V.value?.focus()}function Ke(h){y.value.splice(h,1)}function Ye(h){h.key==="Enter"||h.key===","?(h.preventDefault(),I.value.trim()&&he(I.value)):h.key==="Backspace"&&!I.value&&y.value.length&&y.value.pop()}let K;function et(){K=setTimeout(()=>{F.value=!1},200)}function tt(h){clearTimeout(K),he(h)}const Y=Q(()=>t.mode==="edit"&&t.slug?t.slug:l.value.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,64)||"my-skill"),rt=Q(()=>t.forkOf?Y.value===t.forkOf:!1),nt=Q(()=>Z.value.split(` +`).length);let de=m(""),ee;it(Z,h=>{clearTimeout(ee),ee=setTimeout(async()=>{de.value=await x(h||"")},300)},{immediate:!0});function Ce(){const h=[..._.value],k=["---"];if(k.push(`name: ${l.value}`),c.value&&k.push(`description: ${c.value}`),i.value?(ce.value&&k.push(`author: ${ce.value}`),ue.value&&k.push(`author-email: ${ue.value}`),k.push(`fork-of: ${t.forkOf}`)):(t.initialAuthor&&k.push(`author: ${t.initialAuthor}`),t.initialAuthorEmail&&k.push(`author-email: ${t.initialAuthorEmail}`)),a.value&&k.push(`argument-hint: ${a.value}`),h.length>0&&k.push(`allowed-tools: ${h.join(", ")}`),y.value.length>0&&k.push(`tags: ${y.value.join(", ")}`),p.value&&k.push(`model: ${p.value}`),u.value===!1&&k.push("user-invocable: false"),g.value&&k.push("disable-model-invocation: true"),d.value&&k.push(`context: ${d.value}`),w.value&&k.push(`agent: ${w.value}`),b.value.trim())try{const R=JSON.parse(b.value.trim());k.push(`hooks: ${JSON.stringify(R)}`)}catch{}return k.push("---"),k.join(` +`)+` + +`+Z.value.trim()+` +`}async function st(){O.value=!0,B.value="";try{const h=Ce(),k={"Content-Type":"application/json"};if(!i.value&&pe.value&&(k.Authorization=`Bearer ${pe.value}`),t.mode==="create"){const R=await fetch("/api/skills",{method:"POST",headers:k,body:JSON.stringify({slug:Y.value,content:h})});if(!R.ok){const $=await R.json();throw new Error($.error||"Failed to create skill")}window.location.href=`/${Y.value}`}else{const R=await fetch(`/api/skills/${t.slug}`,{method:"PUT",headers:k,body:JSON.stringify({content:h})});if(!R.ok){const $=await R.json();throw new Error($.error||"Failed to update skill")}window.location.href=`/${t.slug}`}}catch(h){B.value=h instanceof Error?h.message:"Something went wrong"}finally{O.value=!1}}const $e={props:t,AVAILABLE_TOOLS:n,AVAILABLE_MODELS:r,isFork:i,name:l,description:c,argumentHint:a,model:p,userInvocable:u,disableModelInvocation:g,context:d,agent:w,hooksJson:b,tags:y,tagQuery:I,tagSuggestionsOpen:F,tagInputEl:V,knownTags:U,body:Z,saving:O,error:B,forkAuthorName:ce,forkAuthorEmail:ue,authorToken:pe,selectedTools:_,toggleTool:Je,tagSuggestions:We,isNewTag:Xe,addTag:he,removeTag:Ke,onTagKeydown:Ye,get tagBlurTimer(){return K},set tagBlurTimer(h){K=h},onTagBlur:et,onTagSuggestionClick:tt,computedSlug:Y,slugMatchesOriginal:rt,bodyLines:nt,get previewHtml(){return de},set previewHtml(h){de=h},get debounceTimer(){return ee},set debounceTimer(h){ee=h},buildContent:Ce,save:st};return Object.defineProperty($e,"__isScriptSetup",{enumerable:!1,value:!0}),$e}}),Kt={key:0,class:"rounded-xl border border-[var(--color-accent-500)]/20 bg-[var(--color-accent-500)]/5 p-4 space-y-3"},Yt={class:"grid gap-3 sm:grid-cols-2"},er={key:1,class:"rounded-xl border border-amber-500/20 bg-amber-500/5 p-4"},tr={class:"grid gap-4 sm:grid-cols-2"},rr={class:"mt-1.5 text-xs text-gray-600 flex justify-between"},nr={class:"relative"},sr=["onClick"],lr={key:0,class:"absolute z-10 mt-1 w-full max-h-40 overflow-auto rounded-xl border border-white/[0.08] bg-[var(--color-surface-200)] shadow-xl"},ir=["onMousedown"],ar={key:0,class:"text-[var(--color-accent-500)] text-xs"},or={key:1,class:"text-xs text-gray-600"},cr={class:"flex flex-wrap gap-1.5 rounded-xl border border-white/[0.06] bg-[var(--color-surface-100)] px-3 py-2.5 min-h-[42px]"},ur=["onClick"],pr={class:"grid gap-4 sm:grid-cols-3"},hr=["value"],dr={class:"flex flex-wrap gap-6"},gr={class:"flex items-center gap-2.5 cursor-pointer group"},fr={class:"flex items-center gap-2.5 cursor-pointer group"},kr={class:"group"},xr={class:"mt-3"},br={class:"grid gap-4 lg:grid-cols-2"},mr={class:"flex justify-between text-xs font-medium uppercase tracking-wider text-gray-500 mb-1.5"},wr=["innerHTML"],yr={class:"flex items-center gap-4 pt-2"},vr=["disabled","title"],Sr={key:0,class:"h-4 w-4 animate-spin",fill:"none",viewBox:"0 0 24 24"},Tr={key:0,class:"text-sm text-red-400"};function Rr(s,e,t,n,r,i){return S(),v("form",{onSubmit:fe(n.save,["prevent"]),class:"space-y-6"},[n.isFork?(S(),v("div",Kt,[e[19]||(e[19]=o("p",{class:"text-sm text-[var(--color-accent-400)]"},"Claim this fork as yours. It will stay open for editing until you push from CLI, which registers a token and locks it to you.",-1)),o("div",Yt,[o("div",null,[e[17]||(e[17]=o("label",{class:"block text-xs font-medium uppercase tracking-wider text-gray-500 mb-1"},"Your Name",-1)),A(o("input",{"onUpdate:modelValue":e[0]||(e[0]=l=>n.forkAuthorName=l),type:"text",placeholder:"Jane Doe",class:"w-full rounded-xl border border-white/[0.06] bg-[var(--color-surface-100)] px-4 py-2.5 text-sm text-white placeholder-gray-600 focus:border-[var(--color-accent-500)]/50 focus:outline-none focus:ring-1 focus:ring-[var(--color-accent-500)]/20 transition-all"},null,512),[[P,n.forkAuthorName]])]),o("div",null,[e[18]||(e[18]=o("label",{class:"block text-xs font-medium uppercase tracking-wider text-gray-500 mb-1"},"Your Email",-1)),A(o("input",{"onUpdate:modelValue":e[1]||(e[1]=l=>n.forkAuthorEmail=l),type:"email",placeholder:"jane@example.com",class:"w-full rounded-xl border border-white/[0.06] bg-[var(--color-surface-100)] px-4 py-2.5 text-sm text-white placeholder-gray-600 focus:border-[var(--color-accent-500)]/50 focus:outline-none focus:ring-1 focus:ring-[var(--color-accent-500)]/20 transition-all"},null,512),[[P,n.forkAuthorEmail]])])])])):q("",!0),n.isFork&&n.slugMatchesOriginal?(S(),v("div",er,[...e[20]||(e[20]=[o("p",{class:"text-sm text-amber-400"},[M("Change the "),o("strong",null,"name"),M(" to generate a different slug. You can't save a fork with the same slug as the original.")],-1)])])):q("",!0),o("div",tr,[o("div",null,[e[22]||(e[22]=o("label",{class:"block text-xs font-medium uppercase tracking-wider text-gray-500 mb-1.5"},"Name",-1)),A(o("input",{"onUpdate:modelValue":e[2]||(e[2]=l=>n.name=l),type:"text",required:"",maxlength:"64",placeholder:"My Awesome Skill",class:j(["w-full rounded-xl border px-4 py-2.5 text-sm text-white placeholder-gray-600 focus:outline-none focus:ring-1 transition-all",n.isFork&&n.slugMatchesOriginal?"border-amber-500/30 bg-[var(--color-surface-100)] focus:border-amber-500/50 focus:ring-amber-500/20":"border-white/[0.06] bg-[var(--color-surface-100)] focus:border-[var(--color-accent-500)]/50 focus:ring-[var(--color-accent-500)]/20"])},null,2),[[P,n.name]]),o("p",rr,[o("span",null,[e[21]||(e[21]=M("Slug: ",-1)),o("code",{class:j(["font-mono",n.isFork&&n.slugMatchesOriginal?"text-amber-500":"text-gray-500"])},L(n.computedSlug),3)]),o("span",{class:j(n.name.length>58?"text-amber-500":"")},L(n.name.length)+"/64",3)])]),o("div",null,[e[23]||(e[23]=o("label",{class:"block text-xs font-medium uppercase tracking-wider text-gray-500 mb-1.5"},"Description",-1)),A(o("input",{"onUpdate:modelValue":e[3]||(e[3]=l=>n.description=l),type:"text",maxlength:"200",placeholder:"Brief description of what this skill does",class:"w-full rounded-xl border border-white/[0.06] bg-[var(--color-surface-100)] px-4 py-2.5 text-sm text-white placeholder-gray-600 focus:border-[var(--color-accent-500)]/50 focus:outline-none focus:ring-1 focus:ring-[var(--color-accent-500)]/20 transition-all"},null,512),[[P,n.description]]),o("p",{class:j(["mt-1.5 text-xs text-gray-600 text-right",n.description.length>180?"text-amber-500":""])},L(n.description.length)+"/200",3)])]),o("div",nr,[e[25]||(e[25]=o("label",{class:"block text-xs font-medium uppercase tracking-wider text-gray-500 mb-1.5"},"Tags",-1)),o("div",{class:"flex flex-wrap items-center gap-1.5 rounded-xl border border-white/[0.06] bg-[var(--color-surface-100)] px-3 py-2 min-h-[42px] cursor-text focus-within:border-[var(--color-accent-500)]/50 focus-within:ring-1 focus-within:ring-[var(--color-accent-500)]/20 transition-all",onClick:e[8]||(e[8]=l=>n.tagInputEl?.focus())},[(S(!0),v(te,null,re(n.tags,(l,c)=>(S(),v("span",{key:l,class:"inline-flex items-center gap-1 rounded-full bg-[var(--color-accent-500)]/15 border border-[var(--color-accent-500)]/25 pl-2.5 pr-1.5 py-0.5 text-xs font-medium text-[var(--color-accent-400)]"},[M(L(l)+" ",1),o("button",{type:"button",onClick:fe(a=>n.removeTag(c),["stop"]),class:"rounded-full p-0.5 hover:bg-[var(--color-accent-500)]/30 transition-colors"},[...e[24]||(e[24]=[o("svg",{class:"h-3 w-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor","stroke-width":"2.5"},[o("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M6 18 18 6M6 6l12 12"})],-1)])],8,sr)]))),128)),A(o("input",{ref:"tagInputEl","onUpdate:modelValue":e[4]||(e[4]=l=>n.tagQuery=l),type:"text",placeholder:"Add tag...",class:"flex-1 min-w-[80px] bg-transparent text-sm text-white placeholder-gray-600 outline-none",onKeydown:n.onTagKeydown,onFocus:e[5]||(e[5]=l=>n.tagSuggestionsOpen=!0),onClick:e[6]||(e[6]=l=>n.tagSuggestionsOpen=!0),onInput:e[7]||(e[7]=l=>n.tagSuggestionsOpen=!0),onBlur:n.onTagBlur},null,544),[[P,n.tagQuery]])]),n.tagSuggestionsOpen&&n.tagSuggestions.length>0?(S(),v("div",lr,[(S(!0),v(te,null,re(n.tagSuggestions,l=>(S(),v("button",{key:l,type:"button",onMousedown:fe(c=>n.onTagSuggestionClick(l),["prevent"]),class:"flex w-full items-center gap-2 px-4 py-2 text-sm text-gray-300 hover:bg-white/[0.06] hover:text-white transition-colors text-left"},[n.isNewTag(l)?(S(),v("span",ar,"+")):q("",!0),M(" "+L(l)+" ",1),n.isNewTag(l)?(S(),v("span",or,"(new)")):q("",!0)],40,ir))),128))])):q("",!0),e[26]||(e[26]=o("p",{class:"mt-1.5 text-xs text-gray-600"},"Type and press Enter or comma. Click suggestions to add.",-1))]),o("div",null,[e[27]||(e[27]=o("label",{class:"block text-xs font-medium uppercase tracking-wider text-gray-500 mb-1.5"},"Allowed Tools",-1)),o("div",cr,[(S(!0),v(te,null,re(n.AVAILABLE_TOOLS,l=>(S(),v("button",{key:l,type:"button",onClick:c=>n.toggleTool(l),class:j(["rounded-md px-2.5 py-1 text-xs font-medium transition-all",n.selectedTools.has(l)?"bg-[var(--color-accent-500)] text-white shadow-sm":"bg-white/[0.04] border border-white/[0.06] text-gray-500 hover:text-gray-300 hover:bg-white/[0.08]"])},L(l),11,ur))),128))])]),o("div",pr,[o("div",null,[e[29]||(e[29]=o("label",{class:"block text-xs font-medium uppercase tracking-wider text-gray-500 mb-1.5"},"Model",-1)),A(o("select",{"onUpdate:modelValue":e[9]||(e[9]=l=>n.model=l),class:"w-full rounded-xl border border-white/[0.06] bg-[var(--color-surface-100)] px-4 py-2.5 text-sm text-white focus:border-[var(--color-accent-500)]/50 focus:outline-none focus:ring-1 focus:ring-[var(--color-accent-500)]/20 transition-all"},[e[28]||(e[28]=o("option",{value:""},"Default",-1)),(S(!0),v(te,null,re(n.AVAILABLE_MODELS,l=>(S(),v("option",{key:l.id,value:l.id},L(l.display_name),9,hr))),128))],512),[[ge,n.model]])]),o("div",null,[e[30]||(e[30]=o("label",{class:"block text-xs font-medium uppercase tracking-wider text-gray-500 mb-1.5"},"Argument Hint",-1)),A(o("input",{"onUpdate:modelValue":e[10]||(e[10]=l=>n.argumentHint=l),type:"text",placeholder:"e.g. ",class:"w-full rounded-xl border border-white/[0.06] bg-[var(--color-surface-100)] px-4 py-2.5 text-sm text-white placeholder-gray-600 focus:border-[var(--color-accent-500)]/50 focus:outline-none focus:ring-1 focus:ring-[var(--color-accent-500)]/20 transition-all"},null,512),[[P,n.argumentHint]])]),o("div",null,[e[32]||(e[32]=o("label",{class:"block text-xs font-medium uppercase tracking-wider text-gray-500 mb-1.5"},"Agent",-1)),A(o("select",{"onUpdate:modelValue":e[11]||(e[11]=l=>n.agent=l),class:"w-full rounded-xl border border-white/[0.06] bg-[var(--color-surface-100)] px-4 py-2.5 text-sm text-white focus:border-[var(--color-accent-500)]/50 focus:outline-none focus:ring-1 focus:ring-[var(--color-accent-500)]/20 transition-all"},[...e[31]||(e[31]=[o("option",{value:""},"general-purpose (default)",-1),o("option",{value:"Explore"},"Explore",-1),o("option",{value:"Plan"},"Plan",-1)])],512),[[ge,n.agent]])])]),o("div",dr,[o("label",gr,[A(o("input",{type:"checkbox","onUpdate:modelValue":e[12]||(e[12]=l=>n.userInvocable=l),class:"sr-only peer"},null,512),[[Le,n.userInvocable]]),e[33]||(e[33]=o("div",{class:"h-5 w-9 rounded-full bg-white/[0.06] border border-white/[0.06] peer-checked:bg-[var(--color-accent-500)] peer-checked:border-[var(--color-accent-500)] relative transition-all after:content-[''] after:absolute after:top-0.5 after:left-0.5 after:h-4 after:w-4 after:rounded-full after:bg-gray-400 after:transition-all peer-checked:after:translate-x-4 peer-checked:after:bg-white"},null,-1)),e[34]||(e[34]=o("span",{class:"text-xs text-gray-500 group-hover:text-gray-300 transition-colors"},[M("User Invocable "),o("span",{class:"text-gray-600"},"(show in /menu)")],-1))]),o("label",fr,[A(o("input",{type:"checkbox","onUpdate:modelValue":e[13]||(e[13]=l=>n.disableModelInvocation=l),class:"sr-only peer"},null,512),[[Le,n.disableModelInvocation]]),e[35]||(e[35]=o("div",{class:"h-5 w-9 rounded-full bg-white/[0.06] border border-white/[0.06] peer-checked:bg-[var(--color-accent-500)] peer-checked:border-[var(--color-accent-500)] relative transition-all after:content-[''] after:absolute after:top-0.5 after:left-0.5 after:h-4 after:w-4 after:rounded-full after:bg-gray-400 after:transition-all peer-checked:after:translate-x-4 peer-checked:after:bg-white"},null,-1)),e[36]||(e[36]=o("span",{class:"text-xs text-gray-500 group-hover:text-gray-300 transition-colors"},[M("Disable Model Invocation "),o("span",{class:"text-gray-600"},"(manual only)")],-1))])]),o("div",null,[e[38]||(e[38]=o("label",{class:"block text-xs font-medium uppercase tracking-wider text-gray-500 mb-1.5"},"Context",-1)),A(o("select",{"onUpdate:modelValue":e[14]||(e[14]=l=>n.context=l),class:"w-full rounded-xl border border-white/[0.06] bg-[var(--color-surface-100)] px-4 py-2.5 text-sm text-white focus:border-[var(--color-accent-500)]/50 focus:outline-none focus:ring-1 focus:ring-[var(--color-accent-500)]/20 transition-all"},[...e[37]||(e[37]=[o("option",{value:""},"Inline (default)",-1),o("option",{value:"fork"},"Fork (run in subagent)",-1)])],512),[[ge,n.context]]),e[39]||(e[39]=o("p",{class:"mt-1.5 text-xs text-gray-600"},"Fork runs the skill in an isolated subagent context",-1))]),o("details",kr,[e[41]||(e[41]=o("summary",{class:"text-xs font-medium uppercase tracking-wider text-gray-500 cursor-pointer hover:text-gray-400 transition-colors"},"Hooks (advanced)",-1)),o("div",xr,[A(o("textarea",{"onUpdate:modelValue":e[15]||(e[15]=l=>n.hooksJson=l),rows:"4",placeholder:'{ "preToolExecution": [{ "matcher": "Bash", "hooks": [{ "type": "command", "command": "echo pre" }] }] }',class:"w-full rounded-xl border border-white/[0.06] bg-[var(--color-surface-100)] px-4 py-3 font-mono text-xs text-white placeholder-gray-700 focus:border-[var(--color-accent-500)]/50 focus:outline-none focus:ring-1 focus:ring-[var(--color-accent-500)]/20 transition-all resize-y"},null,512),[[P,n.hooksJson]]),e[40]||(e[40]=o("p",{class:"mt-1.5 text-xs text-gray-600"},"JSON object. Leave empty to omit.",-1))])]),o("div",br,[o("div",null,[o("label",mr,[e[42]||(e[42]=o("span",null,"Skill Body",-1)),o("span",{class:j(n.bodyLines>400?"text-amber-500":"")},L(n.bodyLines)+"/500 lines",3)]),A(o("textarea",{"onUpdate:modelValue":e[16]||(e[16]=l=>n.body=l),rows:"20",placeholder:`# My Skill + +Instructions for Claude...`,class:"w-full rounded-xl border border-white/[0.06] bg-[var(--color-surface-100)] px-4 py-3 font-mono text-sm text-white placeholder-gray-600 focus:border-[var(--color-accent-500)]/50 focus:outline-none focus:ring-1 focus:ring-[var(--color-accent-500)]/20 transition-all resize-y leading-relaxed"},null,512),[[P,n.body]])]),o("div",null,[e[43]||(e[43]=o("p",{class:"block text-xs font-medium uppercase tracking-wider text-gray-500 mb-1.5"},"Preview",-1)),o("div",{class:"skill-prose rounded-xl border border-white/[0.06] bg-[var(--color-surface-100)] p-5 min-h-[20rem] overflow-auto",innerHTML:n.previewHtml},null,8,wr)])]),o("div",yr,[o("button",{type:"submit",disabled:n.saving||n.isFork&&n.slugMatchesOriginal,title:n.isFork&&n.slugMatchesOriginal?"Change the name to generate a different slug":"",class:"inline-flex items-center gap-2 rounded-xl bg-[var(--color-accent-500)] px-6 py-2.5 text-sm font-semibold text-white shadow-lg shadow-[var(--color-accent-500)]/20 hover:bg-[var(--color-accent-600)] hover:shadow-[var(--color-accent-500)]/30 disabled:opacity-50 active:scale-[0.97] transition-all"},[n.saving?(S(),v("svg",Sr,[...e[44]||(e[44]=[o("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"},null,-1),o("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"},null,-1)])])):q("",!0),M(" "+L(n.saving?"Saving...":n.isFork?"Create Fork":t.mode==="create"?"Create Skill":"Save Changes"),1)],8,vr),e[45]||(e[45]=o("a",{href:"/",class:"text-sm text-gray-600 hover:text-gray-300 transition-colors"},"Cancel",-1)),n.error?(S(),v("p",Tr,L(n.error),1)):q("",!0)])],32)}const Cr=at(Xt,[["render",Rr]]);export{Cr as default}; diff --git a/dist/client/_astro/SkillSearch.A7FO5axR.js b/dist/client/_astro/SkillSearch.A7FO5axR.js new file mode 100644 index 0000000..bd6489c --- /dev/null +++ b/dist/client/_astro/SkillSearch.A7FO5axR.js @@ -0,0 +1 @@ +import{c as i,a as n,w as q,v as U,F as P,r as E,p as j,g as Q,b as Z,e as Ee,n as z,t as h,h as Le,i as c,q as Ie,j as Ve,k as f,m as Fe,o as u,d as le}from"./runtime-dom.esm-bundler.A7MyAQcw.js";import{_ as Oe}from"./_plugin-vue_export-helper.DlAUqK2U.js";const ae=12,se=20,qe=Le({__name:"SkillSearch",props:{authors:{},tags:{},totalCount:{}},setup(D,{expose:t}){t();const m=D,e=m.authors?m.authors.split(",").map(r=>r.trim()).filter(Boolean):[],H=m.tags?m.tags.split(",").map(r=>r.trim()).filter(Boolean):[],k=c(""),o=c(""),x=typeof localStorage<"u"&&localStorage.getItem("skillsViewMode"),w=c(x==="table"?"table":"grid"),g=c(1),T=c(m.totalCount||0),p=f(()=>w.value==="grid"?ae:se),K=f(()=>Math.max(1,Math.ceil(T.value/p.value))),ie=f(()=>T.value===0?0:(g.value-1)*p.value+1),ue=f(()=>Math.min(g.value*p.value,T.value)),ce=f(()=>{const r=[],l=K.value,s=g.value,C=7;if(l<=C)for(let b=1;b<=l;b++)r.push(b);else{const b=Math.floor(C/2);let M=Math.max(1,s-b),y=M+C-1;y>l&&(y=l,M=y-C+1);for(let F=M;F<=y;F++)r.push(F)}return r}),d=c([]),A=c(""),R=c(!1),J=c(),N=f(()=>{const r=A.value.toLowerCase().trim(),l=new Set(d.value.map(s=>s.toLowerCase()));return e.filter(s=>!l.has(s.toLowerCase())&&(!r||s.toLowerCase().includes(r)))});let L;function de(){L=setTimeout(()=>{R.value=!1},200)}function W(r){clearTimeout(L),d.value.some(l=>l.toLowerCase()===r.toLowerCase())||d.value.push(r),A.value="",J.value?.focus()}function ve(r){d.value=d.value.filter(l=>l!==r)}function ge(){N.value.length>0&&W(N.value[0])}function he(){!A.value&&d.value.length>0&&d.value.pop()}const v=c([]),B=c(""),X=c(!1),Y=c(),G=f(()=>{const r=B.value.toLowerCase().trim(),l=new Set(v.value.map(s=>s.toLowerCase()));return H.filter(s=>!l.has(s.toLowerCase())&&(!r||s.toLowerCase().includes(r)))});let I;function fe(){I=setTimeout(()=>{X.value=!1},200)}function $(r){clearTimeout(I),v.value.some(l=>l.toLowerCase()===r.toLowerCase())||v.value.push(r),B.value="",Y.value?.focus()}function me(r){v.value=v.value.filter(l=>l!==r)}function xe(){G.value.length>0&&$(G.value[0])}function we(){!B.value&&v.value.length>0&&v.value.pop()}function ee(r){w.value=r,localStorage.setItem("skillsViewMode",r);const l=document.getElementById("skills-grid"),s=document.getElementById("skills-table");l&&s&&(l.classList.toggle("hidden",r!=="grid"),s.classList.toggle("hidden",r!=="table")),g.value=1,Fe(()=>V())}Ie(()=>{w.value!=="grid"&&ee(w.value)});const pe=f(()=>k.value||d.value.length>0||v.value.length>0||o.value);function V(){const r=k.value.toLowerCase().trim(),l=d.value.map(a=>a.toLowerCase()),s=v.value.map(a=>a.toLowerCase()),C=o.value?parseInt(o.value):0,b=w.value==="grid"?"skills-grid":"skills-table",M=w.value==="grid"?"skills-table":"skills-grid",y=Array.from(document.querySelectorAll(`#${b} [data-skill]`));document.querySelectorAll(`#${M} [data-skill]`).forEach(a=>a.style.display="none");const O=[];y.forEach(a=>{const S=a.dataset.name||"",Ce=a.dataset.description||"",Te=a.dataset.tools||"",Ae=a.dataset.author||"",ne=(a.dataset.tags||"").split(",").filter(Boolean),Be=parseInt(a.dataset.forks||"0"),Me=!r||S.includes(r)||Ce.includes(r)||Te.includes(r)||ne.some(_=>_.includes(r)),Se=l.length===0||l.some(_=>Ae.includes(_)),_e=s.length===0||s.every(_=>ne.includes(_)),Pe=Be>=C;Me&&Se&&_e&&Pe&&O.push(a)}),T.value=O.length;const oe=Math.max(1,Math.ceil(O.length/p.value));g.value>oe&&(g.value=oe);const re=(g.value-1)*p.value,ke=re+p.value;y.forEach(a=>{const S=O.indexOf(a);S===-1?a.style.display="none":S>=re&&SK.value||(g.value=r,V())}function ye(){k.value="",d.value=[],A.value="",v.value=[],B.value="",o.value="",g.value=1}Ve([k,d,v,o],()=>{g.value=1,V()},{deep:!0});const te={props:m,authorList:e,tagList:H,query:k,forkFilter:o,savedView:x,viewMode:w,currentPage:g,filteredCount:T,PER_PAGE_GRID:ae,PER_PAGE_TABLE:se,perPage:p,totalPages:K,rangeStart:ie,rangeEnd:ue,visiblePages:ce,selectedAuthors:d,authorQuery:A,authorOpen:R,authorInputEl:J,authorSuggestions:N,get authorBlurTimer(){return L},set authorBlurTimer(r){L=r},onAuthorBlur:de,addAuthor:W,removeAuthor:ve,onAuthorEnter:ge,onAuthorBackspace:he,selectedTags:v,tagQuery:B,tagOpen:X,tagInputEl:Y,tagSuggestions:G,get tagBlurTimer(){return I},set tagBlurTimer(r){I=r},onTagBlur:fe,addTag:$,removeTag:me,onTagEnter:xe,onTagBackspace:we,setView:ee,hasActiveFilters:pe,applyFilters:V,goToPage:be,reset:ye};return Object.defineProperty(te,"__isScriptSetup",{enumerable:!1,value:!0}),te}}),je={class:"mb-6 space-y-4"},Qe={class:"flex flex-wrap items-end gap-3"},Ze={class:"w-full sm:w-auto sm:flex-1 sm:min-w-[180px]"},He={class:"relative"},Ke={class:"w-[calc(50%-6px)] sm:w-auto sm:flex-1 sm:min-w-[160px] relative"},Ne={class:"flex flex-wrap items-center gap-1.5 rounded-xl border border-white/[0.06] bg-[var(--color-surface-100)] px-3 py-2 min-h-[42px] focus-within:border-[var(--color-accent-500)]/50 focus-within:ring-1 focus-within:ring-[var(--color-accent-500)]/20 transition-all"},Ge=["onClick"],Ue=["placeholder","onKeydown"],ze={key:0,class:"absolute z-20 mt-1 w-full max-h-48 overflow-y-auto rounded-xl border border-white/[0.06] bg-[var(--color-surface-100)] shadow-xl"},De=["onMousedown"],Re={class:"w-[calc(50%-6px)] sm:w-auto sm:flex-1 sm:min-w-[160px] relative"},Je={class:"flex flex-wrap items-center gap-1.5 rounded-xl border border-white/[0.06] bg-[var(--color-surface-100)] px-3 py-2 min-h-[42px] focus-within:border-[var(--color-accent-500)]/50 focus-within:ring-1 focus-within:ring-[var(--color-accent-500)]/20 transition-all"},We=["onClick"],Xe=["placeholder","onKeydown"],Ye={key:0,class:"absolute z-20 mt-1 w-full max-h-48 overflow-y-auto rounded-xl border border-white/[0.06] bg-[var(--color-surface-100)] shadow-xl"},$e=["onMousedown"],et={class:"w-[calc(50%-6px)] sm:w-auto sm:min-w-[130px]"},tt={class:"flex rounded-xl border border-white/[0.06] overflow-hidden"},ot={key:0,class:"flex flex-wrap items-center justify-between gap-3"},rt={class:"text-sm text-gray-500"},nt={class:"flex items-center gap-1"},lt=["disabled"],at=["onClick"],st=["disabled"];function it(D,t,m,e,H,k){return u(),i("div",je,[n("div",Qe,[n("div",Ze,[t[15]||(t[15]=n("label",{class:"block text-xs font-medium uppercase tracking-wider text-gray-600 mb-1"},"Search",-1)),n("div",He,[t[14]||(t[14]=n("svg",{class:"pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-gray-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor","stroke-width":"2"},[n("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607Z"})],-1)),q(n("input",{"onUpdate:modelValue":t[0]||(t[0]=o=>e.query=o),type:"text",placeholder:"Name, description, tools...",class:"w-full rounded-xl border border-white/[0.06] bg-[var(--color-surface-100)] pl-10 pr-4 py-2.5 text-sm text-white placeholder-gray-600 focus:border-[var(--color-accent-500)]/50 focus:outline-none focus:ring-1 focus:ring-[var(--color-accent-500)]/20 transition-all"},null,512),[[U,e.query]])])]),n("div",Ke,[t[16]||(t[16]=n("label",{class:"block text-xs font-medium uppercase tracking-wider text-gray-600 mb-1"},"Authors",-1)),n("div",Ne,[(u(!0),i(P,null,E(e.selectedAuthors,o=>(u(),i("span",{key:o,class:"inline-flex items-center gap-1 rounded-full bg-[var(--color-accent-500)]/15 text-[var(--color-accent-400)] px-2.5 py-0.5 text-xs font-medium"},[le(h(o)+" ",1),n("button",{onClick:x=>e.removeAuthor(o),class:"hover:text-white transition-colors"},"×",8,Ge)]))),128)),q(n("input",{ref:"authorInputEl","onUpdate:modelValue":t[1]||(t[1]=o=>e.authorQuery=o),type:"text",placeholder:e.selectedAuthors.length?"":"Filter by author...",onFocus:t[2]||(t[2]=o=>e.authorOpen=!0),onClick:t[3]||(t[3]=o=>e.authorOpen=!0),onInput:t[4]||(t[4]=o=>e.authorOpen=!0),onBlur:e.onAuthorBlur,onKeydown:[j(Q(e.onAuthorEnter,["prevent"]),["enter"]),j(e.onAuthorBackspace,["backspace"])],class:"flex-1 min-w-[80px] bg-transparent text-sm text-white placeholder-gray-600 outline-none"},null,40,Ue),[[U,e.authorQuery]])]),e.authorOpen&&e.authorSuggestions.length>0?(u(),i("div",ze,[(u(!0),i(P,null,E(e.authorSuggestions,o=>(u(),i("button",{key:o,onMousedown:Q(x=>e.addAuthor(o),["prevent"]),class:"block w-full text-left px-4 py-2 text-sm text-gray-400 hover:bg-white/[0.06] hover:text-white transition-colors"},h(o),41,De))),128))])):Z("",!0)]),n("div",Re,[t[17]||(t[17]=n("label",{class:"block text-xs font-medium uppercase tracking-wider text-gray-600 mb-1"},"Tags",-1)),n("div",Je,[(u(!0),i(P,null,E(e.selectedTags,o=>(u(),i("span",{key:o,class:"inline-flex items-center gap-1 rounded-full bg-[var(--color-accent-500)]/15 text-[var(--color-accent-400)] px-2.5 py-0.5 text-xs font-medium"},[le(h(o)+" ",1),n("button",{onClick:x=>e.removeTag(o),class:"hover:text-white transition-colors"},"×",8,We)]))),128)),q(n("input",{ref:"tagInputEl","onUpdate:modelValue":t[5]||(t[5]=o=>e.tagQuery=o),type:"text",placeholder:e.selectedTags.length?"":"Filter by tag...",onFocus:t[6]||(t[6]=o=>e.tagOpen=!0),onClick:t[7]||(t[7]=o=>e.tagOpen=!0),onInput:t[8]||(t[8]=o=>e.tagOpen=!0),onBlur:e.onTagBlur,onKeydown:[j(Q(e.onTagEnter,["prevent"]),["enter"]),j(e.onTagBackspace,["backspace"])],class:"flex-1 min-w-[80px] bg-transparent text-sm text-white placeholder-gray-600 outline-none"},null,40,Xe),[[U,e.tagQuery]])]),e.tagOpen&&e.tagSuggestions.length>0?(u(),i("div",Ye,[(u(!0),i(P,null,E(e.tagSuggestions,o=>(u(),i("button",{key:o,onMousedown:Q(x=>e.addTag(o),["prevent"]),class:"block w-full text-left px-4 py-2 text-sm text-gray-400 hover:bg-white/[0.06] hover:text-white transition-colors"},h(o),41,$e))),128))])):Z("",!0)]),n("div",et,[t[19]||(t[19]=n("label",{class:"block text-xs font-medium uppercase tracking-wider text-gray-600 mb-1"},"Forks",-1)),q(n("select",{"onUpdate:modelValue":t[9]||(t[9]=o=>e.forkFilter=o),class:"w-full rounded-xl border border-white/[0.06] bg-[var(--color-surface-100)] px-4 py-2.5 text-sm text-white focus:border-[var(--color-accent-500)]/50 focus:outline-none focus:ring-1 focus:ring-[var(--color-accent-500)]/20 transition-all"},[...t[18]||(t[18]=[n("option",{value:""},"Any",-1),n("option",{value:"1"},"1+ forks",-1),n("option",{value:"3"},"3+ forks",-1),n("option",{value:"5"},"5+ forks",-1)])],512),[[Ee,e.forkFilter]])]),e.hasActiveFilters?(u(),i("button",{key:0,onClick:e.reset,class:"rounded-xl border border-white/[0.06] bg-[var(--color-surface-100)] px-4 py-2.5 text-sm text-gray-500 hover:text-white hover:bg-white/[0.06] transition-all"}," Clear ")):Z("",!0),n("div",tt,[n("button",{onClick:t[10]||(t[10]=o=>e.setView("grid")),class:z(["px-3 py-2.5 transition-all",e.viewMode==="grid"?"bg-white/[0.08] text-white":"text-gray-600 hover:text-gray-400 hover:bg-white/[0.03]"]),title:"Grid view"},[...t[20]||(t[20]=[n("svg",{class:"h-4 w-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor","stroke-width":"2"},[n("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M3.75 6A2.25 2.25 0 0 1 6 3.75h2.25A2.25 2.25 0 0 1 10.5 6v2.25a2.25 2.25 0 0 1-2.25 2.25H6a2.25 2.25 0 0 1-2.25-2.25V6ZM3.75 15.75A2.25 2.25 0 0 1 6 13.5h2.25a2.25 2.25 0 0 1 2.25 2.25V18a2.25 2.25 0 0 1-2.25 2.25H6A2.25 2.25 0 0 1 3.75 18v-2.25ZM13.5 6a2.25 2.25 0 0 1 2.25-2.25H18A2.25 2.25 0 0 1 20.25 6v2.25A2.25 2.25 0 0 1 18 10.5h-2.25a2.25 2.25 0 0 1-2.25-2.25V6ZM13.5 15.75a2.25 2.25 0 0 1 2.25-2.25H18a2.25 2.25 0 0 1 2.25 2.25V18A2.25 2.25 0 0 1 18 20.25h-2.25A2.25 2.25 0 0 1 13.5 18v-2.25Z"})],-1)])],2),n("button",{onClick:t[11]||(t[11]=o=>e.setView("table")),class:z(["px-3 py-2.5 transition-all",e.viewMode==="table"?"bg-white/[0.08] text-white":"text-gray-600 hover:text-gray-400 hover:bg-white/[0.03]"]),title:"Table view"},[...t[21]||(t[21]=[n("svg",{class:"h-4 w-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor","stroke-width":"2"},[n("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M3.75 12h16.5m-16.5 3.75h16.5M3.75 19.5h16.5M5.625 4.5h12.75a1.875 1.875 0 0 1 0 3.75H5.625a1.875 1.875 0 0 1 0-3.75Z"})],-1)])],2)])]),e.totalPages>1?(u(),i("div",ot,[n("span",rt," Showing "+h(e.rangeStart)+"–"+h(e.rangeEnd)+" of "+h(e.filteredCount),1),n("div",nt,[n("button",{onClick:t[12]||(t[12]=o=>e.goToPage(e.currentPage-1)),disabled:e.currentPage===1,class:"rounded-lg border border-white/[0.06] px-3 py-1.5 text-sm transition-all disabled:opacity-30 disabled:cursor-not-allowed text-gray-400 hover:text-white hover:bg-white/[0.06]"}," Prev ",8,lt),(u(!0),i(P,null,E(e.visiblePages,o=>(u(),i("button",{key:o,onClick:x=>e.goToPage(o),class:z(["rounded-lg px-3 py-1.5 text-sm transition-all",o===e.currentPage?"bg-[var(--color-accent-500)] text-white font-medium":"border border-white/[0.06] text-gray-400 hover:text-white hover:bg-white/[0.06]"])},h(o),11,at))),128)),n("button",{onClick:t[13]||(t[13]=o=>e.goToPage(e.currentPage+1)),disabled:e.currentPage===e.totalPages,class:"rounded-lg border border-white/[0.06] px-3 py-1.5 text-sm transition-all disabled:opacity-30 disabled:cursor-not-allowed text-gray-400 hover:text-white hover:bg-white/[0.06]"}," Next ",8,st)])])):Z("",!0)])}const dt=Oe(qe,[["render",it]]);export{dt as default}; diff --git a/dist/client/_astro/SkillSearch.DXmAyDfU.js b/dist/client/_astro/SkillSearch.DXmAyDfU.js deleted file mode 100644 index 17766d2..0000000 --- a/dist/client/_astro/SkillSearch.DXmAyDfU.js +++ /dev/null @@ -1 +0,0 @@ -import{v as m}from"./runtime-dom.esm-bundler.ALO2-icn.js";import{_ as f}from"./_plugin-vue_export-helper.DlAUqK2U.js";import{c as _,a as r,w as h,e as v,g as x,f as y,o as w}from"./runtime-core.esm-bundler.D9KZBfyO.js";const k=v({__name:"SkillSearch",setup(c,{expose:e}){e();const n=y("");x(n,a=>{const o=a.toLowerCase().trim();document.querySelectorAll("[data-skill]").forEach(s=>{const i=s.dataset.name||"",d=s.dataset.description||"",u=s.dataset.tools||"",p=!o||i.includes(o)||d.includes(o)||u.includes(o);s.style.display=p?"":"none"})});const t={query:n};return Object.defineProperty(t,"__isScriptSetup",{enumerable:!1,value:!0}),t}}),b={class:"mb-6 max-w-md"},S={class:"relative"};function g(c,e,n,t,a,o){return w(),_("div",b,[r("div",S,[e[1]||(e[1]=r("svg",{class:"pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-gray-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor","stroke-width":"2"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607Z"})],-1)),h(r("input",{"onUpdate:modelValue":e[0]||(e[0]=l=>t.query=l),type:"text",placeholder:"Search skills...",class:"w-full rounded-xl border border-white/[0.06] bg-[var(--color-surface-100)] pl-10 pr-4 py-2.5 text-sm text-white placeholder-gray-600 focus:border-[var(--color-accent-500)]/50 focus:outline-none focus:ring-1 focus:ring-[var(--color-accent-500)]/20 transition-all"},null,512),[[m,t.query]])])])}const j=f(k,[["render",g]]);export{j as default}; diff --git a/dist/client/_astro/_slug_.CExMWyw3.css b/dist/client/_astro/_slug_.CExMWyw3.css deleted file mode 100644 index 51dad20..0000000 --- a/dist/client/_astro/_slug_.CExMWyw3.css +++ /dev/null @@ -1 +0,0 @@ -/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-content:""}}}@layer theme{:root,:host{--font-sans:"Inter",ui-sans-serif,system-ui,sans-serif;--font-mono:"JetBrains Mono",ui-monospace,monospace;--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-white:#fff;--spacing:.25rem;--container-md:28rem;--container-xl:36rem;--container-2xl:42rem;--container-5xl:64rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--tracking-tight:-.025em;--tracking-wider:.05em;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--animate-spin:spin 1s linear infinite;--blur-xl:24px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-accent-400:#fb923c;--color-accent-500:#f97316;--color-accent-600:#ea580c;--color-surface-50:#0a0a0f;--color-surface-100:#12121a;--color-surface-200:#1a1a25}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing)*0)}.-top-40{top:calc(var(--spacing)*-40)}.top-1\/2{top:50%}.left-1\/2{left:50%}.left-3{left:calc(var(--spacing)*3)}.z-50{z-index:50}.mx-auto{margin-inline:auto}.mt-0\.5{margin-top:calc(var(--spacing)*.5)}.mt-1\.5{margin-top:calc(var(--spacing)*1.5)}.mt-3{margin-top:calc(var(--spacing)*3)}.mb-1\.5{margin-bottom:calc(var(--spacing)*1.5)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-5{margin-bottom:calc(var(--spacing)*5)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.mb-8{margin-bottom:calc(var(--spacing)*8)}.mb-10{margin-bottom:calc(var(--spacing)*10)}.block{display:block}.flex{display:flex}.grid{display:grid}.inline-flex{display:inline-flex}.h-3\.5{height:calc(var(--spacing)*3.5)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-7{height:calc(var(--spacing)*7)}.h-8{height:calc(var(--spacing)*8)}.h-16{height:calc(var(--spacing)*16)}.h-80{height:calc(var(--spacing)*80)}.min-h-\[20rem\]{min-height:20rem}.min-h-\[42px\]{min-height:42px}.min-h-screen{min-height:100vh}.w-3\.5{width:calc(var(--spacing)*3.5)}.w-4{width:calc(var(--spacing)*4)}.w-7{width:calc(var(--spacing)*7)}.w-8{width:calc(var(--spacing)*8)}.w-9{width:calc(var(--spacing)*9)}.w-16{width:calc(var(--spacing)*16)}.w-\[600px\]{width:600px}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-md{max-width:var(--container-md)}.max-w-xl{max-width:var(--container-xl)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.animate-spin{animation:var(--animate-spin)}.cursor-pointer{cursor:pointer}.resize-y{resize:vertical}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-2\.5{gap:calc(var(--spacing)*2.5)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-red-500\/20{border-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.border-red-500\/20{border-color:color-mix(in oklab,var(--color-red-500)20%,transparent)}}.border-white\/\[0\.06\]{border-color:#ffffff0f}@supports (color:color-mix(in lab,red,red)){.border-white\/\[0\.06\]{border-color:color-mix(in oklab,var(--color-white)6%,transparent)}}.border-white\/\[0\.08\]{border-color:#ffffff14}@supports (color:color-mix(in lab,red,red)){.border-white\/\[0\.08\]{border-color:color-mix(in oklab,var(--color-white)8%,transparent)}}.bg-\[var\(--color-accent-500\)\]{background-color:var(--color-accent-500)}.bg-\[var\(--color-surface-100\)\]{background-color:var(--color-surface-100)}.bg-accent-500{background-color:var(--color-accent-500)}.bg-accent-500\/\[0\.07\]{background-color:#f9731612}@supports (color:color-mix(in lab,red,red)){.bg-accent-500\/\[0\.07\]{background-color:color-mix(in oklab,var(--color-accent-500)7%,transparent)}}.bg-red-500\/5{background-color:#fb2c360d}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/5{background-color:color-mix(in oklab,var(--color-red-500)5%,transparent)}}.bg-surface-50{background-color:var(--color-surface-50)}.bg-surface-50\/80{background-color:#0a0a0fcc}@supports (color:color-mix(in lab,red,red)){.bg-surface-50\/80{background-color:color-mix(in oklab,var(--color-surface-50)80%,transparent)}}.bg-surface-100{background-color:var(--color-surface-100)}.bg-surface-200{background-color:var(--color-surface-200)}.bg-white\/\[0\.04\]{background-color:#ffffff0a}@supports (color:color-mix(in lab,red,red)){.bg-white\/\[0\.04\]{background-color:color-mix(in oklab,var(--color-white)4%,transparent)}}.bg-white\/\[0\.06\]{background-color:#ffffff0f}@supports (color:color-mix(in lab,red,red)){.bg-white\/\[0\.06\]{background-color:color-mix(in oklab,var(--color-white)6%,transparent)}}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-accent-500{--tw-gradient-from:var(--color-accent-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-accent-500\/\[0\.03\]{--tw-gradient-from:#f9731608}@supports (color:color-mix(in lab,red,red)){.from-accent-500\/\[0\.03\]{--tw-gradient-from:color-mix(in oklab,var(--color-accent-500)3%,transparent)}}.from-accent-500\/\[0\.03\]{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-accent-600{--tw-gradient-to:var(--color-accent-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.p-5{padding:calc(var(--spacing)*5)}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-3\.5{padding-inline:calc(var(--spacing)*3.5)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-5{padding-inline:calc(var(--spacing)*5)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-2{padding-block:calc(var(--spacing)*2)}.py-2\.5{padding-block:calc(var(--spacing)*2.5)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-10{padding-block:calc(var(--spacing)*10)}.py-24{padding-block:calc(var(--spacing)*24)}.pt-2{padding-top:calc(var(--spacing)*2)}.pr-4{padding-right:calc(var(--spacing)*4)}.pl-10{padding-left:calc(var(--spacing)*10)}.text-center{text-align:center}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[15px\]{font-size:15px}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-red-400{color:var(--color-red-400)}.text-white{color:var(--color-white)}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.placeholder-gray-600::placeholder{color:var(--color-gray-600)}.placeholder-gray-700::placeholder{color:var(--color-gray-700)}.opacity-0{opacity:0}.opacity-25{opacity:.25}.opacity-75{opacity:.75}.shadow-\[var\(--color-accent-500\)\]\/20{--tw-shadow-alpha:20%;--tw-shadow:var(--color-accent-500);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-accent-500\/20{--tw-shadow-color:#f9731633}@supports (color:color-mix(in lab,red,red)){.shadow-accent-500\/20{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-accent-500)20%,transparent)var(--tw-shadow-alpha),transparent)}}.blur-\[120px\]{--tw-blur:blur(120px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-blur-xl{--tw-backdrop-blur:blur(var(--blur-xl));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-300{--tw-duration:.3s;transition-duration:.3s}.select-all{-webkit-user-select:all;user-select:all}@media(hover:hover){.group-hover\:translate-x-0\.5:is(:where(.group):hover *){--tw-translate-x:calc(var(--spacing)*.5);translate:var(--tw-translate-x)var(--tw-translate-y)}.group-hover\:text-accent-400:is(:where(.group):hover *){color:var(--color-accent-400)}.group-hover\:text-accent-500:is(:where(.group):hover *){color:var(--color-accent-500)}.group-hover\:text-gray-300:is(:where(.group):hover *){color:var(--color-gray-300)}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.peer-checked\:border-\[var\(--color-accent-500\)\]:is(:where(.peer):checked~*){border-color:var(--color-accent-500)}.peer-checked\:bg-\[var\(--color-accent-500\)\]:is(:where(.peer):checked~*){background-color:var(--color-accent-500)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:top-0\.5:after{content:var(--tw-content);top:calc(var(--spacing)*.5)}.after\:left-0\.5:after{content:var(--tw-content);left:calc(var(--spacing)*.5)}.after\:h-4:after{content:var(--tw-content);height:calc(var(--spacing)*4)}.after\:w-4:after{content:var(--tw-content);width:calc(var(--spacing)*4)}.after\:rounded-full:after{content:var(--tw-content);border-radius:3.40282e38px}.after\:bg-gray-400:after{content:var(--tw-content);background-color:var(--color-gray-400)}.after\:transition-all:after{content:var(--tw-content);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.after\:content-\[\'\'\]:after{--tw-content:"";content:var(--tw-content)}.peer-checked\:after\:translate-x-4:is(:where(.peer):checked~*):after{content:var(--tw-content);--tw-translate-x:calc(var(--spacing)*4);translate:var(--tw-translate-x)var(--tw-translate-y)}.peer-checked\:after\:bg-white:is(:where(.peer):checked~*):after{content:var(--tw-content);background-color:var(--color-white)}@media(hover:hover){.hover\:border-accent-500\/30:hover{border-color:#f973164d}@supports (color:color-mix(in lab,red,red)){.hover\:border-accent-500\/30:hover{border-color:color-mix(in oklab,var(--color-accent-500)30%,transparent)}}.hover\:border-red-500\/30:hover{border-color:#fb2c364d}@supports (color:color-mix(in lab,red,red)){.hover\:border-red-500\/30:hover{border-color:color-mix(in oklab,var(--color-red-500)30%,transparent)}}.hover\:border-white\/\[0\.15\]:hover{border-color:#ffffff26}@supports (color:color-mix(in lab,red,red)){.hover\:border-white\/\[0\.15\]:hover{border-color:color-mix(in oklab,var(--color-white)15%,transparent)}}.hover\:bg-\[var\(--color-accent-600\)\]:hover,.hover\:bg-accent-600:hover{background-color:var(--color-accent-600)}.hover\:bg-red-500\/10:hover{background-color:#fb2c361a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-500\/10:hover{background-color:color-mix(in oklab,var(--color-red-500)10%,transparent)}}.hover\:bg-surface-200\/80:hover{background-color:#1a1a25cc}@supports (color:color-mix(in lab,red,red)){.hover\:bg-surface-200\/80:hover{background-color:color-mix(in oklab,var(--color-surface-200)80%,transparent)}}.hover\:bg-white\/\[0\.1\]:hover{background-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/\[0\.1\]:hover{background-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.hover\:bg-white\/\[0\.08\]:hover{background-color:#ffffff14}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/\[0\.08\]:hover{background-color:color-mix(in oklab,var(--color-white)8%,transparent)}}.hover\:text-gray-300:hover{color:var(--color-gray-300)}.hover\:text-gray-400:hover{color:var(--color-gray-400)}.hover\:text-white:hover{color:var(--color-white)}.hover\:shadow-\[var\(--color-accent-500\)\]\/30:hover{--tw-shadow-alpha:30%;--tw-shadow:var(--color-accent-500);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-accent-500\/30:hover{--tw-shadow-color:#f973164d}@supports (color:color-mix(in lab,red,red)){.hover\:shadow-accent-500\/30:hover{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-accent-500)30%,transparent)var(--tw-shadow-alpha),transparent)}}}.focus\:border-\[var\(--color-accent-500\)\]\/50:focus{border-color:#f9731680}@supports (color:color-mix(in lab,red,red)){.focus\:border-\[var\(--color-accent-500\)\]\/50:focus{border-color:color-mix(in oklab,var(--color-accent-500)50%,transparent)}}.focus\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-\[var\(--color-accent-500\)\]\/20:focus{--tw-ring-color:#f9731633}@supports (color:color-mix(in lab,red,red)){.focus\:ring-\[var\(--color-accent-500\)\]\/20:focus{--tw-ring-color:color-mix(in oklab,var(--color-accent-500)20%,transparent)}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.active\:scale-\[0\.97\]:active{scale:.97}.disabled\:opacity-50:disabled{opacity:.5}@media(min-width:40rem){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(min-width:64rem){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}}body{background-color:var(--color-surface-50);font-feature-settings:"cv02","cv03","cv04","cv11"}::selection{background-color:#f973164d}.skill-prose h1{color:#fff;margin-bottom:.75rem;font-size:1.5rem;font-weight:700}.skill-prose h2{color:#e5e5e5;margin-top:1.5rem;margin-bottom:.5rem;font-size:1.2rem;font-weight:600}.skill-prose h3{color:#d4d4d4;margin-top:1.25rem;margin-bottom:.5rem;font-size:1.05rem;font-weight:600}.skill-prose p{color:#a3a3a3;margin-bottom:.75rem;line-height:1.7}.skill-prose ul,.skill-prose ol{color:#a3a3a3;margin-bottom:.75rem;padding-left:1.5rem}.skill-prose li{margin-bottom:.25rem;line-height:1.6}.skill-prose code{color:#fb923c;background:#ffffff0f;border-radius:.25rem;padding:.15rem .4rem;font-size:.85em}.skill-prose pre{background:#0006;border:1px solid #ffffff0f;border-radius:.5rem;margin-bottom:1rem;padding:1rem;overflow-x:auto}.skill-prose pre code{color:#d4d4d4;background:0 0;padding:0}.skill-prose a{color:#fb923c;text-underline-offset:2px;text-decoration:underline}.skill-prose blockquote{color:#737373;border-left:3px solid #f97316;padding-left:1rem;font-style:italic}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(360deg)}} diff --git a/dist/client/_astro/_slug_.DRpcPMTm.css b/dist/client/_astro/_slug_.DRpcPMTm.css new file mode 100644 index 0000000..5b41fda --- /dev/null +++ b/dist/client/_astro/_slug_.DRpcPMTm.css @@ -0,0 +1 @@ +/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-content:""}}}@layer theme{:root,:host{--font-sans:"Inter",ui-sans-serif,system-ui,sans-serif;--font-mono:"JetBrains Mono",ui-monospace,monospace;--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-md:28rem;--container-xl:36rem;--container-6xl:72rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--tracking-tight:-.025em;--tracking-wider:.05em;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--animate-spin:spin 1s linear infinite;--blur-sm:8px;--blur-xl:24px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-accent-400:#fb923c;--color-accent-500:#f97316;--color-accent-600:#ea580c;--color-surface-50:#0a0a0f;--color-surface-100:#12121a;--color-surface-200:#1a1a25}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing)*0)}.-top-40{top:calc(var(--spacing)*-40)}.top-1\/2{top:50%}.top-4{top:calc(var(--spacing)*4)}.right-4{right:calc(var(--spacing)*4)}.left-1\/2{left:50%}.left-3{left:calc(var(--spacing)*3)}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.mt-0\.5{margin-top:calc(var(--spacing)*.5)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-1\.5{margin-top:calc(var(--spacing)*1.5)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-1\.5{margin-bottom:calc(var(--spacing)*1.5)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.mb-8{margin-bottom:calc(var(--spacing)*8)}.mb-10{margin-bottom:calc(var(--spacing)*10)}.ml-auto{margin-left:auto}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-flex{display:inline-flex}.table{display:table}.h-3{height:calc(var(--spacing)*3)}.h-3\.5{height:calc(var(--spacing)*3.5)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-7{height:calc(var(--spacing)*7)}.h-8{height:calc(var(--spacing)*8)}.h-16{height:calc(var(--spacing)*16)}.h-80{height:calc(var(--spacing)*80)}.max-h-40{max-height:calc(var(--spacing)*40)}.max-h-48{max-height:calc(var(--spacing)*48)}.min-h-\[20rem\]{min-height:20rem}.min-h-\[42px\]{min-height:42px}.min-h-screen{min-height:100vh}.w-3{width:calc(var(--spacing)*3)}.w-3\.5{width:calc(var(--spacing)*3.5)}.w-4{width:calc(var(--spacing)*4)}.w-7{width:calc(var(--spacing)*7)}.w-8{width:calc(var(--spacing)*8)}.w-9{width:calc(var(--spacing)*9)}.w-16{width:calc(var(--spacing)*16)}.w-\[600px\]{width:600px}.w-\[calc\(50\%-6px\)\]{width:calc(50% - 6px)}.w-full{width:100%}.max-w-6xl{max-width:var(--container-6xl)}.max-w-md{max-width:var(--container-md)}.max-w-xl{max-width:var(--container-xl)}.max-w-xs{max-width:var(--container-xs)}.min-w-\[80px\]{min-width:80px}.flex-1{flex:1}.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.animate-spin{animation:var(--animate-spin)}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.resize-y{resize:vertical}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-2\.5{gap:calc(var(--spacing)*2.5)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px*var(--tw-divide-y-reverse));border-bottom-width:calc(1px*calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-white\/\[0\.04\]>:not(:last-child)){border-color:#ffffff0a}@supports (color:color-mix(in lab,red,red)){:where(.divide-white\/\[0\.04\]>:not(:last-child)){border-color:color-mix(in oklab,var(--color-white)4%,transparent)}}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-\[var\(--color-accent-500\)\]\/20{border-color:#f9731633}@supports (color:color-mix(in lab,red,red)){.border-\[var\(--color-accent-500\)\]\/20{border-color:color-mix(in oklab,var(--color-accent-500)20%,transparent)}}.border-\[var\(--color-accent-500\)\]\/25{border-color:#f9731640}@supports (color:color-mix(in lab,red,red)){.border-\[var\(--color-accent-500\)\]\/25{border-color:color-mix(in oklab,var(--color-accent-500)25%,transparent)}}.border-amber-500\/20{border-color:#f99c0033}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/20{border-color:color-mix(in oklab,var(--color-amber-500)20%,transparent)}}.border-amber-500\/30{border-color:#f99c004d}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/30{border-color:color-mix(in oklab,var(--color-amber-500)30%,transparent)}}.border-red-500\/20{border-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.border-red-500\/20{border-color:color-mix(in oklab,var(--color-red-500)20%,transparent)}}.border-white\/\[0\.06\]{border-color:#ffffff0f}@supports (color:color-mix(in lab,red,red)){.border-white\/\[0\.06\]{border-color:color-mix(in oklab,var(--color-white)6%,transparent)}}.border-white\/\[0\.08\]{border-color:#ffffff14}@supports (color:color-mix(in lab,red,red)){.border-white\/\[0\.08\]{border-color:color-mix(in oklab,var(--color-white)8%,transparent)}}.bg-\[var\(--color-accent-500\)\]{background-color:var(--color-accent-500)}.bg-\[var\(--color-accent-500\)\]\/5{background-color:#f973160d}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--color-accent-500\)\]\/5{background-color:color-mix(in oklab,var(--color-accent-500)5%,transparent)}}.bg-\[var\(--color-accent-500\)\]\/10{background-color:#f973161a}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--color-accent-500\)\]\/10{background-color:color-mix(in oklab,var(--color-accent-500)10%,transparent)}}.bg-\[var\(--color-accent-500\)\]\/15{background-color:#f9731626}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--color-accent-500\)\]\/15{background-color:color-mix(in oklab,var(--color-accent-500)15%,transparent)}}.bg-\[var\(--color-surface-100\)\]{background-color:var(--color-surface-100)}.bg-\[var\(--color-surface-200\)\]{background-color:var(--color-surface-200)}.bg-accent-500{background-color:var(--color-accent-500)}.bg-accent-500\/\[0\.07\]{background-color:#f9731612}@supports (color:color-mix(in lab,red,red)){.bg-accent-500\/\[0\.07\]{background-color:color-mix(in oklab,var(--color-accent-500)7%,transparent)}}.bg-amber-500\/5{background-color:#f99c000d}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/5{background-color:color-mix(in oklab,var(--color-amber-500)5%,transparent)}}.bg-black\/60{background-color:#0009}@supports (color:color-mix(in lab,red,red)){.bg-black\/60{background-color:color-mix(in oklab,var(--color-black)60%,transparent)}}.bg-red-500{background-color:var(--color-red-500)}.bg-red-500\/5{background-color:#fb2c360d}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/5{background-color:color-mix(in oklab,var(--color-red-500)5%,transparent)}}.bg-surface-50{background-color:var(--color-surface-50)}.bg-surface-50\/80{background-color:#0a0a0fcc}@supports (color:color-mix(in lab,red,red)){.bg-surface-50\/80{background-color:color-mix(in oklab,var(--color-surface-50)80%,transparent)}}.bg-surface-100{background-color:var(--color-surface-100)}.bg-surface-200{background-color:var(--color-surface-200)}.bg-transparent{background-color:#0000}.bg-white\/\[0\.04\]{background-color:#ffffff0a}@supports (color:color-mix(in lab,red,red)){.bg-white\/\[0\.04\]{background-color:color-mix(in oklab,var(--color-white)4%,transparent)}}.bg-white\/\[0\.06\]{background-color:#ffffff0f}@supports (color:color-mix(in lab,red,red)){.bg-white\/\[0\.06\]{background-color:color-mix(in oklab,var(--color-white)6%,transparent)}}.bg-white\/\[0\.08\]{background-color:#ffffff14}@supports (color:color-mix(in lab,red,red)){.bg-white\/\[0\.08\]{background-color:color-mix(in oklab,var(--color-white)8%,transparent)}}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-accent-500\/\[0\.03\]{--tw-gradient-from:#f9731608}@supports (color:color-mix(in lab,red,red)){.from-accent-500\/\[0\.03\]{--tw-gradient-from:color-mix(in oklab,var(--color-accent-500)3%,transparent)}}.from-accent-500\/\[0\.03\]{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.p-0\.5{padding:calc(var(--spacing)*.5)}.p-4{padding:calc(var(--spacing)*4)}.p-5{padding:calc(var(--spacing)*5)}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-1\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-3\.5{padding-inline:calc(var(--spacing)*3.5)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-5{padding-inline:calc(var(--spacing)*5)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-2\.5{padding-block:calc(var(--spacing)*2.5)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-10{padding-block:calc(var(--spacing)*10)}.py-24{padding-block:calc(var(--spacing)*24)}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-3{padding-top:calc(var(--spacing)*3)}.pr-1\.5{padding-right:calc(var(--spacing)*1.5)}.pr-4{padding-right:calc(var(--spacing)*4)}.pb-5{padding-bottom:calc(var(--spacing)*5)}.pl-2\.5{padding-left:calc(var(--spacing)*2.5)}.pl-3{padding-left:calc(var(--spacing)*3)}.pl-10{padding-left:calc(var(--spacing)*10)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[11px\]{font-size:11px}.text-\[15px\]{font-size:15px}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.whitespace-nowrap{white-space:nowrap}.text-\[var\(--color-accent-400\)\]{color:var(--color-accent-400)}.text-\[var\(--color-accent-500\)\]{color:var(--color-accent-500)}.text-amber-400{color:var(--color-amber-400)}.text-amber-500{color:var(--color-amber-500)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-red-400{color:var(--color-red-400)}.text-white{color:var(--color-white)}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.placeholder-gray-600::placeholder{color:var(--color-gray-600)}.placeholder-gray-700::placeholder{color:var(--color-gray-700)}.opacity-0{opacity:0}.opacity-25{opacity:.25}.opacity-75{opacity:.75}.shadow-\[var\(--color-accent-500\)\]\/20{--tw-shadow-alpha:20%;--tw-shadow:var(--color-accent-500);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-accent-500\/20{--tw-shadow-color:#f9731633}@supports (color:color-mix(in lab,red,red)){.shadow-accent-500\/20{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-accent-500)20%,transparent)var(--tw-shadow-alpha),transparent)}}.blur-\[120px\]{--tw-blur:blur(120px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-xl{--tw-backdrop-blur:blur(var(--blur-xl));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-300{--tw-duration:.3s;transition-duration:.3s}.outline-none{--tw-outline-style:none;outline-style:none}.select-all{-webkit-user-select:all;user-select:all}.select-none{-webkit-user-select:none;user-select:none}.group-open\:flex:is(:where(.group):is([open],:popover-open,:open) *){display:flex}.group-open\:rotate-180:is(:where(.group):is([open],:popover-open,:open) *){rotate:180deg}@media(hover:hover){.group-hover\:translate-x-0\.5:is(:where(.group):hover *){--tw-translate-x:calc(var(--spacing)*.5);translate:var(--tw-translate-x)var(--tw-translate-y)}.group-hover\:text-accent-400:is(:where(.group):hover *){color:var(--color-accent-400)}.group-hover\:text-accent-500:is(:where(.group):hover *){color:var(--color-accent-500)}.group-hover\:text-gray-300:is(:where(.group):hover *){color:var(--color-gray-300)}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.peer-checked\:border-\[var\(--color-accent-500\)\]:is(:where(.peer):checked~*){border-color:var(--color-accent-500)}.peer-checked\:bg-\[var\(--color-accent-500\)\]:is(:where(.peer):checked~*){background-color:var(--color-accent-500)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:top-0\.5:after{content:var(--tw-content);top:calc(var(--spacing)*.5)}.after\:left-0\.5:after{content:var(--tw-content);left:calc(var(--spacing)*.5)}.after\:h-4:after{content:var(--tw-content);height:calc(var(--spacing)*4)}.after\:w-4:after{content:var(--tw-content);width:calc(var(--spacing)*4)}.after\:rounded-full:after{content:var(--tw-content);border-radius:3.40282e38px}.after\:bg-gray-400:after{content:var(--tw-content);background-color:var(--color-gray-400)}.after\:transition-all:after{content:var(--tw-content);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.after\:content-\[\'\'\]:after{--tw-content:"";content:var(--tw-content)}.peer-checked\:after\:translate-x-4:is(:where(.peer):checked~*):after{content:var(--tw-content);--tw-translate-x:calc(var(--spacing)*4);translate:var(--tw-translate-x)var(--tw-translate-y)}.peer-checked\:after\:bg-white:is(:where(.peer):checked~*):after{content:var(--tw-content);background-color:var(--color-white)}.focus-within\:border-\[var\(--color-accent-500\)\]\/50:focus-within{border-color:#f9731680}@supports (color:color-mix(in lab,red,red)){.focus-within\:border-\[var\(--color-accent-500\)\]\/50:focus-within{border-color:color-mix(in oklab,var(--color-accent-500)50%,transparent)}}.focus-within\:ring-1:focus-within{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-within\:ring-\[var\(--color-accent-500\)\]\/20:focus-within{--tw-ring-color:#f9731633}@supports (color:color-mix(in lab,red,red)){.focus-within\:ring-\[var\(--color-accent-500\)\]\/20:focus-within{--tw-ring-color:color-mix(in oklab,var(--color-accent-500)20%,transparent)}}@media(hover:hover){.hover\:border-accent-500\/30:hover{border-color:#f973164d}@supports (color:color-mix(in lab,red,red)){.hover\:border-accent-500\/30:hover{border-color:color-mix(in oklab,var(--color-accent-500)30%,transparent)}}.hover\:border-red-500\/30:hover{border-color:#fb2c364d}@supports (color:color-mix(in lab,red,red)){.hover\:border-red-500\/30:hover{border-color:color-mix(in oklab,var(--color-red-500)30%,transparent)}}.hover\:border-white\/\[0\.15\]:hover{border-color:#ffffff26}@supports (color:color-mix(in lab,red,red)){.hover\:border-white\/\[0\.15\]:hover{border-color:color-mix(in oklab,var(--color-white)15%,transparent)}}.hover\:bg-\[var\(--color-accent-500\)\]\/30:hover{background-color:#f973164d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-\[var\(--color-accent-500\)\]\/30:hover{background-color:color-mix(in oklab,var(--color-accent-500)30%,transparent)}}.hover\:bg-\[var\(--color-accent-600\)\]:hover,.hover\:bg-accent-600:hover{background-color:var(--color-accent-600)}.hover\:bg-red-500\/10:hover{background-color:#fb2c361a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-500\/10:hover{background-color:color-mix(in oklab,var(--color-red-500)10%,transparent)}}.hover\:bg-red-600:hover{background-color:var(--color-red-600)}.hover\:bg-surface-100:hover{background-color:var(--color-surface-100)}.hover\:bg-surface-200\/80:hover{background-color:#1a1a25cc}@supports (color:color-mix(in lab,red,red)){.hover\:bg-surface-200\/80:hover{background-color:color-mix(in oklab,var(--color-surface-200)80%,transparent)}}.hover\:bg-white\/\[0\.1\]:hover{background-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/\[0\.1\]:hover{background-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.hover\:bg-white\/\[0\.03\]:hover{background-color:#ffffff08}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/\[0\.03\]:hover{background-color:color-mix(in oklab,var(--color-white)3%,transparent)}}.hover\:bg-white\/\[0\.06\]:hover{background-color:#ffffff0f}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/\[0\.06\]:hover{background-color:color-mix(in oklab,var(--color-white)6%,transparent)}}.hover\:bg-white\/\[0\.08\]:hover{background-color:#ffffff14}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/\[0\.08\]:hover{background-color:color-mix(in oklab,var(--color-white)8%,transparent)}}.hover\:text-\[var\(--color-accent-300\)\]:hover{color:var(--color-accent-300)}.hover\:text-\[var\(--color-accent-400\)\]:hover,.hover\:text-accent-400:hover{color:var(--color-accent-400)}.hover\:text-gray-300:hover{color:var(--color-gray-300)}.hover\:text-gray-400:hover{color:var(--color-gray-400)}.hover\:text-white:hover{color:var(--color-white)}.hover\:shadow-\[var\(--color-accent-500\)\]\/30:hover{--tw-shadow-alpha:30%;--tw-shadow:var(--color-accent-500);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-accent-500\/30:hover{--tw-shadow-color:#f973164d}@supports (color:color-mix(in lab,red,red)){.hover\:shadow-accent-500\/30:hover{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-accent-500)30%,transparent)var(--tw-shadow-alpha),transparent)}}}.focus\:border-\[var\(--color-accent-500\)\]\/50:focus{border-color:#f9731680}@supports (color:color-mix(in lab,red,red)){.focus\:border-\[var\(--color-accent-500\)\]\/50:focus{border-color:color-mix(in oklab,var(--color-accent-500)50%,transparent)}}.focus\:border-amber-500\/50:focus{border-color:#f99c0080}@supports (color:color-mix(in lab,red,red)){.focus\:border-amber-500\/50:focus{border-color:color-mix(in oklab,var(--color-amber-500)50%,transparent)}}.focus\:border-red-500\/50:focus{border-color:#fb2c3680}@supports (color:color-mix(in lab,red,red)){.focus\:border-red-500\/50:focus{border-color:color-mix(in oklab,var(--color-red-500)50%,transparent)}}.focus\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-\[var\(--color-accent-500\)\]\/20:focus{--tw-ring-color:#f9731633}@supports (color:color-mix(in lab,red,red)){.focus\:ring-\[var\(--color-accent-500\)\]\/20:focus{--tw-ring-color:color-mix(in oklab,var(--color-accent-500)20%,transparent)}}.focus\:ring-amber-500\/20:focus{--tw-ring-color:#f99c0033}@supports (color:color-mix(in lab,red,red)){.focus\:ring-amber-500\/20:focus{--tw-ring-color:color-mix(in oklab,var(--color-amber-500)20%,transparent)}}.focus\:ring-red-500\/20:focus{--tw-ring-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.focus\:ring-red-500\/20:focus{--tw-ring-color:color-mix(in oklab,var(--color-red-500)20%,transparent)}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.active\:scale-\[0\.97\]:active{scale:.97}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-50:disabled{opacity:.5}@media(min-width:40rem){.sm\:w-auto{width:auto}.sm\:min-w-\[130px\]{min-width:130px}.sm\:min-w-\[160px\]{min-width:160px}.sm\:min-w-\[180px\]{min-width:180px}.sm\:flex-1{flex:1}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(min-width:64rem){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:items-start{align-items:flex-start}}}body{background-color:var(--color-surface-50);font-feature-settings:"cv02","cv03","cv04","cv11"}::selection{background-color:#f973164d}.skill-prose h1{color:#fff;margin-bottom:.75rem;font-size:1.5rem;font-weight:700}.skill-prose h2{color:#e5e5e5;margin-top:1.5rem;margin-bottom:.5rem;font-size:1.2rem;font-weight:600}.skill-prose h3{color:#d4d4d4;margin-top:1.25rem;margin-bottom:.5rem;font-size:1.05rem;font-weight:600}.skill-prose p{color:#a3a3a3;margin-bottom:.75rem;line-height:1.7}.skill-prose ul,.skill-prose ol{color:#a3a3a3;margin-bottom:.75rem;padding-left:1.5rem}.skill-prose li{margin-bottom:.25rem;line-height:1.6}.skill-prose code{color:#fb923c;background:#ffffff0f;border-radius:.25rem;padding:.15rem .4rem;font-size:.85em}.skill-prose pre{background:#0006;border:1px solid #ffffff0f;border-radius:.5rem;margin-bottom:1rem;padding:1rem;overflow-x:auto}.skill-prose pre code{color:#d4d4d4;background:0 0;padding:0}.skill-prose a{color:#fb923c;text-underline-offset:2px;text-decoration:underline}.skill-prose blockquote{color:#737373;border-left:3px solid #f97316;padding-left:1rem;font-style:italic}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(360deg)}} diff --git a/dist/client/_astro/client.BOmCbIK_.js b/dist/client/_astro/client.BOmCbIK_.js deleted file mode 100644 index 27ddb3d..0000000 --- a/dist/client/_astro/client.BOmCbIK_.js +++ /dev/null @@ -1 +0,0 @@ -import{c as m,d as y}from"./runtime-dom.esm-bundler.ALO2-icn.js";import{e as v,i as r,S}from"./runtime-core.esm-bundler.D9KZBfyO.js";const g=()=>{},A=v({props:{value:String,name:String,hydrate:{type:Boolean,default:!0}},setup({name:t,value:e,hydrate:a}){if(!e)return()=>null;let c=a?"astro-slot":"astro-static-slot";return()=>r(c,{name:t,innerHTML:e})}});var h=A;let p=new WeakMap;var M=t=>async(e,a,c,{client:l})=>{if(!t.hasAttribute("ssr"))return;const f=e.name?`${e.name} Host`:void 0,i={};for(const[n,o]of Object.entries(c))i[n]=()=>r(h,{value:o,name:n==="default"?void 0:n});const u=l!=="only",d=u?m:y;let s=p.get(t);if(s)s.props=a,s.slots=i,s.component.$forceUpdate();else{s={props:a,slots:i};const n=d({name:f,render(){let o=r(e,s.props,s.slots);return s.component=this,b(e.setup)&&(o=r(S,null,o)),o}});n.config.idPrefix=t.getAttribute("prefix")??void 0,await g(),n.mount(t,u),p.set(t,s),t.addEventListener("astro:unmount",()=>n.unmount(),{once:!0})}};function b(t){const e=t?.constructor;return e&&e.name==="AsyncFunction"}export{M as default}; diff --git a/dist/client/_astro/client.BnTlSu1B.js b/dist/client/_astro/client.BnTlSu1B.js new file mode 100644 index 0000000..fa0c350 --- /dev/null +++ b/dist/client/_astro/client.BnTlSu1B.js @@ -0,0 +1 @@ +import{h as m,s as r,u as y,x as v,S}from"./runtime-dom.esm-bundler.A7MyAQcw.js";const g=()=>{},h=m({props:{value:String,name:String,hydrate:{type:Boolean,default:!0}},setup({name:t,value:s,hydrate:o}){if(!s)return()=>null;let c=o?"astro-slot":"astro-static-slot";return()=>r(c,{name:t,innerHTML:s})}});var A=h;let p=new WeakMap;var H=t=>async(s,o,c,{client:l})=>{if(!t.hasAttribute("ssr"))return;const f=s.name?`${s.name} Host`:void 0,u={};for(const[n,a]of Object.entries(c))u[n]=()=>r(A,{value:a,name:n==="default"?void 0:n});const i=l!=="only",d=i?y:v;let e=p.get(t);if(e)e.props=o,e.slots=u,e.component.$forceUpdate();else{e={props:o,slots:u};const n=d({name:f,render(){let a=r(s,e.props,e.slots);return e.component=this,b(s.setup)&&(a=r(S,null,a)),a}});n.config.idPrefix=t.getAttribute("prefix")??void 0,await g(),n.mount(t,i),p.set(t,e),t.addEventListener("astro:unmount",()=>n.unmount(),{once:!0})}};function b(t){const s=t?.constructor;return s&&s.name==="AsyncFunction"}export{H as default}; diff --git a/dist/client/_astro/runtime-core.esm-bundler.D9KZBfyO.js b/dist/client/_astro/runtime-core.esm-bundler.D9KZBfyO.js deleted file mode 100644 index cf12cf7..0000000 --- a/dist/client/_astro/runtime-core.esm-bundler.D9KZBfyO.js +++ /dev/null @@ -1,15 +0,0 @@ -/** -* @vue/shared v3.5.28 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/function Hs(e){const t=Object.create(null);for(const s of e.split(","))t[s]=1;return s=>s in t}const ee={},lt=[],De=()=>{},Cn=()=>!1,ts=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),En=e=>e.startsWith("onUpdate:"),ue=Object.assign,js=(e,t)=>{const s=e.indexOf(t);s>-1&&e.splice(s,1)},Bi=Object.prototype.hasOwnProperty,Q=(e,t)=>Bi.call(e,t),k=Array.isArray,ot=e=>Mt(e)==="[object Map]",Fn=e=>Mt(e)==="[object Set]",ln=e=>Mt(e)==="[object Date]",U=e=>typeof e=="function",ae=e=>typeof e=="string",Ne=e=>typeof e=="symbol",z=e=>e!==null&&typeof e=="object",Sn=e=>(z(e)||U(e))&&U(e.then)&&U(e.catch),On=Object.prototype.toString,Mt=e=>On.call(e),Hi=e=>Mt(e).slice(8,-1),An=e=>Mt(e)==="[object Object]",ks=e=>ae(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,ze=Hs(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),ss=e=>{const t=Object.create(null);return(s=>t[s]||(t[s]=e(s)))},ji=/-\w/g,dt=ss(e=>e.replace(ji,t=>t.slice(1).toUpperCase())),ki=/\B([A-Z])/g,Rt=ss(e=>e.replace(ki,"-$1").toLowerCase()),Ni=ss(e=>e.charAt(0).toUpperCase()+e.slice(1)),ds=ss(e=>e?`on${Ni(e)}`:""),Ge=(e,t)=>!Object.is(e,t),ps=(e,...t)=>{for(let s=0;s{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:n,value:s})},$i=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Li=e=>{const t=ae(e)?Number(e):NaN;return isNaN(t)?e:t};let on;const ns=()=>on||(on=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Ns(e){if(k(e)){const t={};for(let s=0;s{if(s){const n=s.split(Vi);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function $s(e){let t="";if(ae(e))t=e;else if(k(e))for(let s=0;sis(s,t))}const Mn=e=>!!(e&&e.__v_isRef===!0),Gi=e=>ae(e)?e:e==null?"":k(e)||z(e)&&(e.toString===On||!U(e.toString))?Mn(e)?Gi(e.value):JSON.stringify(e,Rn,2):String(e),Rn=(e,t)=>Mn(t)?Rn(e,t.value):ot(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((s,[n,i],r)=>(s[gs(n,r)+" =>"]=i,s),{})}:Fn(t)?{[`Set(${t.size})`]:[...t.values()].map(s=>gs(s))}:Ne(t)?gs(t):z(t)&&!k(t)&&!An(t)?String(t):t,gs=(e,t="")=>{var s;return Ne(e)?`Symbol(${(s=e.description)!=null?s:t})`:e};/** -* @vue/reactivity v3.5.28 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let be;class Yi{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.__v_skip=!0,this.parent=be,!t&&be&&(this.index=(be.scopes||(be.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,s;if(this.scopes)for(t=0,s=this.scopes.length;t0&&--this._on===0&&(be=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let s,n;for(s=0,n=this.effects.length;s0)return;if(Tt){let t=Tt;for(Tt=void 0;t;){const s=t.next;t.next=void 0,t.flags&=-9,t=s}}let e;for(;vt;){let t=vt;for(vt=void 0;t;){const s=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(n){e||(e=n)}t=s}}if(e)throw e}function Hn(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function jn(e){let t,s=e.depsTail,n=s;for(;n;){const i=n.prevDep;n.version===-1?(n===s&&(s=i),Vs(n),Xi(n)):t=n,n.dep.activeLink=n.prevActiveLink,n.prevActiveLink=void 0,n=i}e.deps=t,e.depsTail=s}function ws(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(kn(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function kn(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Et)||(e.globalVersion=Et,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!ws(e))))return;e.flags|=2;const t=e.dep,s=se,n=Se;se=e,Se=!0;try{Hn(e);const i=e.fn(e._value);(t.version===0||Ge(i,e._value))&&(e.flags|=128,e._value=i,t.version++)}catch(i){throw t.version++,i}finally{se=s,Se=n,jn(e),e.flags&=-3}}function Vs(e,t=!1){const{dep:s,prevSub:n,nextSub:i}=e;if(n&&(n.nextSub=i,e.prevSub=void 0),i&&(i.prevSub=n,e.nextSub=void 0),s.subs===e&&(s.subs=n,!n&&s.computed)){s.computed.flags&=-5;for(let r=s.computed.deps;r;r=r.nextDep)Vs(r,!0)}!t&&!--s.sc&&s.map&&s.map.delete(s.key)}function Xi(e){const{prevDep:t,nextDep:s}=e;t&&(t.nextDep=s,e.prevDep=void 0),s&&(s.prevDep=t,e.nextDep=void 0)}let Se=!0;const Nn=[];function $e(){Nn.push(Se),Se=!1}function Le(){const e=Nn.pop();Se=e===void 0?!0:e}function fn(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const s=se;se=void 0;try{t()}finally{se=s}}}let Et=0;class Zi{constructor(t,s){this.sub=t,this.dep=s,this.version=s.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Ks{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!se||!Se||se===this.computed)return;let s=this.activeLink;if(s===void 0||s.sub!==se)s=this.activeLink=new Zi(se,this),se.deps?(s.prevDep=se.depsTail,se.depsTail.nextDep=s,se.depsTail=s):se.deps=se.depsTail=s,$n(s);else if(s.version===-1&&(s.version=this.version,s.nextDep)){const n=s.nextDep;n.prevDep=s.prevDep,s.prevDep&&(s.prevDep.nextDep=n),s.prevDep=se.depsTail,s.nextDep=void 0,se.depsTail.nextDep=s,se.depsTail=s,se.deps===s&&(se.deps=n)}return s}trigger(t){this.version++,Et++,this.notify(t)}notify(t){Ls();try{for(let s=this.subs;s;s=s.prevSub)s.sub.notify()&&s.sub.dep.notify()}finally{Us()}}}function $n(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let n=t.deps;n;n=n.nextDep)$n(n)}const s=e.dep.subs;s!==e&&(e.prevSub=s,s&&(s.nextSub=e)),e.dep.subs=e}}const Cs=new WeakMap,et=Symbol(""),Es=Symbol(""),Ft=Symbol("");function oe(e,t,s){if(Se&&se){let n=Cs.get(e);n||Cs.set(e,n=new Map);let i=n.get(s);i||(n.set(s,i=new Ks),i.map=n,i.key=s),i.track()}}function je(e,t,s,n,i,r){const l=Cs.get(e);if(!l){Et++;return}const o=c=>{c&&c.trigger()};if(Ls(),t==="clear")l.forEach(o);else{const c=k(e),d=c&&ks(s);if(c&&s==="length"){const a=Number(n);l.forEach((h,T)=>{(T==="length"||T===Ft||!Ne(T)&&T>=a)&&o(h)})}else switch((s!==void 0||l.has(void 0))&&o(l.get(s)),d&&o(l.get(Ft)),t){case"add":c?d&&o(l.get("length")):(o(l.get(et)),ot(e)&&o(l.get(Es)));break;case"delete":c||(o(l.get(et)),ot(e)&&o(l.get(Es)));break;case"set":ot(e)&&o(l.get(et));break}}Us()}function nt(e){const t=Y(e);return t===e?t:(oe(t,"iterate",Ft),Ce(e)?t:t.map(Oe))}function rs(e){return oe(e=Y(e),"iterate",Ft),e}function We(e,t){return Ue(e)?pt(Ye(e)?Oe(t):t):Oe(t)}const zi={__proto__:null,[Symbol.iterator](){return bs(this,Symbol.iterator,e=>We(this,e))},concat(...e){return nt(this).concat(...e.map(t=>k(t)?nt(t):t))},entries(){return bs(this,"entries",e=>(e[1]=We(this,e[1]),e))},every(e,t){return Be(this,"every",e,t,void 0,arguments)},filter(e,t){return Be(this,"filter",e,t,s=>s.map(n=>We(this,n)),arguments)},find(e,t){return Be(this,"find",e,t,s=>We(this,s),arguments)},findIndex(e,t){return Be(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Be(this,"findLast",e,t,s=>We(this,s),arguments)},findLastIndex(e,t){return Be(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Be(this,"forEach",e,t,void 0,arguments)},includes(...e){return ys(this,"includes",e)},indexOf(...e){return ys(this,"indexOf",e)},join(e){return nt(this).join(e)},lastIndexOf(...e){return ys(this,"lastIndexOf",e)},map(e,t){return Be(this,"map",e,t,void 0,arguments)},pop(){return mt(this,"pop")},push(...e){return mt(this,"push",e)},reduce(e,...t){return cn(this,"reduce",e,t)},reduceRight(e,...t){return cn(this,"reduceRight",e,t)},shift(){return mt(this,"shift")},some(e,t){return Be(this,"some",e,t,void 0,arguments)},splice(...e){return mt(this,"splice",e)},toReversed(){return nt(this).toReversed()},toSorted(e){return nt(this).toSorted(e)},toSpliced(...e){return nt(this).toSpliced(...e)},unshift(...e){return mt(this,"unshift",e)},values(){return bs(this,"values",e=>We(this,e))}};function bs(e,t,s){const n=rs(e),i=n[t]();return n!==e&&!Ce(e)&&(i._next=i.next,i.next=()=>{const r=i._next();return r.done||(r.value=s(r.value)),r}),i}const er=Array.prototype;function Be(e,t,s,n,i,r){const l=rs(e),o=l!==e&&!Ce(e),c=l[t];if(c!==er[t]){const h=c.apply(e,r);return o?Oe(h):h}let d=s;l!==e&&(o?d=function(h,T){return s.call(this,We(e,h),T,e)}:s.length>2&&(d=function(h,T){return s.call(this,h,T,e)}));const a=c.call(l,d,n);return o&&i?i(a):a}function cn(e,t,s,n){const i=rs(e);let r=s;return i!==e&&(Ce(e)?s.length>3&&(r=function(l,o,c){return s.call(this,l,o,c,e)}):r=function(l,o,c){return s.call(this,l,We(e,o),c,e)}),i[t](r,...n)}function ys(e,t,s){const n=Y(e);oe(n,"iterate",Ft);const i=n[t](...s);return(i===-1||i===!1)&&Gs(s[0])?(s[0]=Y(s[0]),n[t](...s)):i}function mt(e,t,s=[]){$e(),Ls();const n=Y(e)[t].apply(e,s);return Us(),Le(),n}const tr=Hs("__proto__,__v_isRef,__isVue"),Ln=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Ne));function sr(e){Ne(e)||(e=String(e));const t=Y(this);return oe(t,"has",e),t.hasOwnProperty(e)}class Un{constructor(t=!1,s=!1){this._isReadonly=t,this._isShallow=s}get(t,s,n){if(s==="__v_skip")return t.__v_skip;const i=this._isReadonly,r=this._isShallow;if(s==="__v_isReactive")return!i;if(s==="__v_isReadonly")return i;if(s==="__v_isShallow")return r;if(s==="__v_raw")return n===(i?r?hr:qn:r?Wn:Kn).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(n)?t:void 0;const l=k(t);if(!i){let c;if(l&&(c=zi[s]))return c;if(s==="hasOwnProperty")return sr}const o=Reflect.get(t,s,ce(t)?t:n);if((Ne(s)?Ln.has(s):tr(s))||(i||oe(t,"get",s),r))return o;if(ce(o)){const c=l&&ks(s)?o:o.value;return i&&z(c)?Ss(c):c}return z(o)?i?Ss(o):qs(o):o}}class Vn extends Un{constructor(t=!1){super(!1,t)}set(t,s,n,i){let r=t[s];const l=k(t)&&ks(s);if(!this._isShallow){const d=Ue(r);if(!Ce(n)&&!Ue(n)&&(r=Y(r),n=Y(n)),!l&&ce(r)&&!ce(n))return d||(r.value=n),!0}const o=l?Number(s)e,kt=e=>Reflect.getPrototypeOf(e);function or(e,t,s){return function(...n){const i=this.__v_raw,r=Y(i),l=ot(r),o=e==="entries"||e===Symbol.iterator&&l,c=e==="keys"&&l,d=i[e](...n),a=s?Fs:t?pt:Oe;return!t&&oe(r,"iterate",c?Es:et),ue(Object.create(d),{next(){const{value:h,done:T}=d.next();return T?{value:h,done:T}:{value:o?[a(h[0]),a(h[1])]:a(h),done:T}}})}}function Nt(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function fr(e,t){const s={get(i){const r=this.__v_raw,l=Y(r),o=Y(i);e||(Ge(i,o)&&oe(l,"get",i),oe(l,"get",o));const{has:c}=kt(l),d=t?Fs:e?pt:Oe;if(c.call(l,i))return d(r.get(i));if(c.call(l,o))return d(r.get(o));r!==l&&r.get(i)},get size(){const i=this.__v_raw;return!e&&oe(Y(i),"iterate",et),i.size},has(i){const r=this.__v_raw,l=Y(r),o=Y(i);return e||(Ge(i,o)&&oe(l,"has",i),oe(l,"has",o)),i===o?r.has(i):r.has(i)||r.has(o)},forEach(i,r){const l=this,o=l.__v_raw,c=Y(o),d=t?Fs:e?pt:Oe;return!e&&oe(c,"iterate",et),o.forEach((a,h)=>i.call(r,d(a),d(h),l))}};return ue(s,e?{add:Nt("add"),set:Nt("set"),delete:Nt("delete"),clear:Nt("clear")}:{add(i){!t&&!Ce(i)&&!Ue(i)&&(i=Y(i));const r=Y(this);return kt(r).has.call(r,i)||(r.add(i),je(r,"add",i,i)),this},set(i,r){!t&&!Ce(r)&&!Ue(r)&&(r=Y(r));const l=Y(this),{has:o,get:c}=kt(l);let d=o.call(l,i);d||(i=Y(i),d=o.call(l,i));const a=c.call(l,i);return l.set(i,r),d?Ge(r,a)&&je(l,"set",i,r):je(l,"add",i,r),this},delete(i){const r=Y(this),{has:l,get:o}=kt(r);let c=l.call(r,i);c||(i=Y(i),c=l.call(r,i)),o&&o.call(r,i);const d=r.delete(i);return c&&je(r,"delete",i,void 0),d},clear(){const i=Y(this),r=i.size!==0,l=i.clear();return r&&je(i,"clear",void 0,void 0),l}}),["keys","values","entries",Symbol.iterator].forEach(i=>{s[i]=or(i,e,t)}),s}function Ws(e,t){const s=fr(e,t);return(n,i,r)=>i==="__v_isReactive"?!e:i==="__v_isReadonly"?e:i==="__v_raw"?n:Reflect.get(Q(s,i)&&i in n?s:n,i,r)}const cr={get:Ws(!1,!1)},ur={get:Ws(!1,!0)},ar={get:Ws(!0,!1)};const Kn=new WeakMap,Wn=new WeakMap,qn=new WeakMap,hr=new WeakMap;function dr(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function pr(e){return e.__v_skip||!Object.isExtensible(e)?0:dr(Hi(e))}function qs(e){return Ue(e)?e:Js(e,!1,ir,cr,Kn)}function gr(e){return Js(e,!1,lr,ur,Wn)}function Ss(e){return Js(e,!0,rr,ar,qn)}function Js(e,t,s,n,i){if(!z(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const r=pr(e);if(r===0)return e;const l=i.get(e);if(l)return l;const o=new Proxy(e,r===2?n:s);return i.set(e,o),o}function Ye(e){return Ue(e)?Ye(e.__v_raw):!!(e&&e.__v_isReactive)}function Ue(e){return!!(e&&e.__v_isReadonly)}function Ce(e){return!!(e&&e.__v_isShallow)}function Gs(e){return e?!!e.__v_raw:!1}function Y(e){const t=e&&e.__v_raw;return t?Y(t):e}function _r(e){return!Q(e,"__v_skip")&&Object.isExtensible(e)&&Pn(e,"__v_skip",!0),e}const Oe=e=>z(e)?qs(e):e,pt=e=>z(e)?Ss(e):e;function ce(e){return e?e.__v_isRef===!0:!1}function Wl(e){return br(e,!1)}function br(e,t){return ce(e)?e:new yr(e,t)}class yr{constructor(t,s){this.dep=new Ks,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=s?t:Y(t),this._value=s?t:Oe(t),this.__v_isShallow=s}get value(){return this.dep.track(),this._value}set value(t){const s=this._rawValue,n=this.__v_isShallow||Ce(t)||Ue(t);t=n?t:Y(t),Ge(t,s)&&(this._rawValue=t,this._value=n?t:Oe(t),this.dep.trigger())}}function mr(e){return ce(e)?e.value:e}const xr={get:(e,t,s)=>t==="__v_raw"?e:mr(Reflect.get(e,t,s)),set:(e,t,s,n)=>{const i=e[t];return ce(i)&&!ce(s)?(i.value=s,!0):Reflect.set(e,t,s,n)}};function Jn(e){return Ye(e)?e:new Proxy(e,xr)}class vr{constructor(t,s,n){this.fn=t,this.setter=s,this._value=void 0,this.dep=new Ks(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Et-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!s,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&se!==this)return Bn(this,!0),!0}get value(){const t=this.dep.track();return kn(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Tr(e,t,s=!1){let n,i;return U(e)?n=e:(n=e.get,i=e.set),new vr(n,i,s)}const $t={},Jt=new WeakMap;let Ze;function wr(e,t=!1,s=Ze){if(s){let n=Jt.get(s);n||Jt.set(s,n=[]),n.push(e)}}function Cr(e,t,s=ee){const{immediate:n,deep:i,once:r,scheduler:l,augmentJob:o,call:c}=s,d=_=>i?_:Ce(_)||i===!1||i===0?ke(_,1):ke(_);let a,h,T,F,H=!1,I=!1;if(ce(e)?(h=()=>e.value,H=Ce(e)):Ye(e)?(h=()=>d(e),H=!0):k(e)?(I=!0,H=e.some(_=>Ye(_)||Ce(_)),h=()=>e.map(_=>{if(ce(_))return _.value;if(Ye(_))return d(_);if(U(_))return c?c(_,2):_()})):U(e)?t?h=c?()=>c(e,2):e:h=()=>{if(T){$e();try{T()}finally{Le()}}const _=Ze;Ze=a;try{return c?c(e,3,[F]):e(F)}finally{Ze=_}}:h=De,t&&i){const _=h,v=i===!0?1/0:i;h=()=>ke(_(),v)}const X=Qi(),W=()=>{a.stop(),X&&X.active&&js(X.effects,a)};if(r&&t){const _=t;t=(...v)=>{_(...v),W()}}let N=I?new Array(e.length).fill($t):$t;const g=_=>{if(!(!(a.flags&1)||!a.dirty&&!_))if(t){const v=a.run();if(i||H||(I?v.some((O,B)=>Ge(O,N[B])):Ge(v,N))){T&&T();const O=Ze;Ze=a;try{const B=[v,N===$t?void 0:I&&N[0]===$t?[]:N,F];N=v,c?c(t,3,B):t(...B)}finally{Ze=O}}}else a.run()};return o&&o(g),a=new In(h),a.scheduler=l?()=>l(g,!1):g,F=_=>wr(_,!1,a),T=a.onStop=()=>{const _=Jt.get(a);if(_){if(c)c(_,4);else for(const v of _)v();Jt.delete(a)}},t?n?g(!0):N=a.run():l?l(g.bind(null,!0),!0):a.run(),W.pause=a.pause.bind(a),W.resume=a.resume.bind(a),W.stop=W,W}function ke(e,t=1/0,s){if(t<=0||!z(e)||e.__v_skip||(s=s||new Map,(s.get(e)||0)>=t))return e;if(s.set(e,t),t--,ce(e))ke(e.value,t,s);else if(k(e))for(let n=0;n{ke(n,t,s)});else if(An(e)){for(const n in e)ke(e[n],t,s);for(const n of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,n)&&ke(e[n],t,s)}return e}/** -* @vue/runtime-core v3.5.28 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/function It(e,t,s,n){try{return n?e(...n):e()}catch(i){Dt(i,t,s)}}function Ve(e,t,s,n){if(U(e)){const i=It(e,t,s,n);return i&&Sn(i)&&i.catch(r=>{Dt(r,t,s)}),i}if(k(e)){const i=[];for(let r=0;r>>1,i=pe[n],r=St(i);r=St(s)?pe.push(e):pe.splice(Sr(t),0,e),e.flags|=1,Yn()}}function Yn(){Gt||(Gt=Gn.then(Qn))}function Os(e){k(e)?ft.push(...e):qe&&e.id===-1?qe.splice(rt+1,0,e):e.flags&1||(ft.push(e),e.flags|=1),Yn()}function un(e,t,s=Re+1){for(;sSt(s)-St(n));if(ft.length=0,qe){qe.push(...t);return}for(qe=t,rt=0;rte.id==null?e.flags&2?-1:1/0:e.id;function Qn(e){try{for(Re=0;Re{n._d&&zt(-1);const r=Qt(t);let l;try{l=e(...i)}finally{Qt(r),n._d&&zt(1)}return l};return n._n=!0,n._c=!0,n._d=!0,n}function ql(e,t){if(we===null)return e;const s=cs(we),n=e.dirs||(e.dirs=[]);for(let i=0;i1)return s&&U(t)?t.call(n&&n.proxy):t}}const Pr=Symbol.for("v-scx"),Mr=()=>Kt(Pr);function ms(e,t,s){return Zn(e,t,s)}function Zn(e,t,s=ee){const{immediate:n,deep:i,flush:r,once:l}=s,o=ue({},s),c=t&&n||!t&&r!=="post";let d;if(Pt){if(r==="sync"){const F=Mr();d=F.__watcherHandles||(F.__watcherHandles=[])}else if(!c){const F=()=>{};return F.stop=De,F.resume=De,F.pause=De,F}}const a=ge;o.call=(F,H,I)=>Ve(F,a,H,I);let h=!1;r==="post"?o.scheduler=F=>{de(F,a&&a.suspense)}:r!=="sync"&&(h=!0,o.scheduler=(F,H)=>{H?F():Ys(F)}),o.augmentJob=F=>{t&&(F.flags|=4),h&&(F.flags|=2,a&&(F.id=a.uid,F.i=a))};const T=Cr(e,t,o);return Pt&&(d?d.push(T):c&&T()),T}function Rr(e,t,s){const n=this.proxy,i=ae(e)?e.includes(".")?zn(n,e):()=>n[e]:e.bind(n,n);let r;U(t)?r=t:(r=t.handler,s=t);const l=Bt(this),o=Zn(i,r.bind(n),s);return l(),o}function zn(e,t){const s=t.split(".");return()=>{let n=e;for(let i=0;ie.__isTeleport,Br=Symbol("_leaveCb");function Qs(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Qs(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Jl(e,t){return U(e)?ue({name:e.name},t,{setup:e}):e}function ei(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function an(e,t){let s;return!!((s=Object.getOwnPropertyDescriptor(e,t))&&!s.configurable)}const Xt=new WeakMap;function ct(e,t,s,n,i=!1){if(k(e)){e.forEach((I,X)=>ct(I,t&&(k(t)?t[X]:t),s,n,i));return}if(ut(n)&&!i){n.shapeFlag&512&&n.type.__asyncResolved&&n.component.subTree.component&&ct(e,t,s,n.component.subTree);return}const r=n.shapeFlag&4?cs(n.component):n.el,l=i?null:r,{i:o,r:c}=e,d=t&&t.r,a=o.refs===ee?o.refs={}:o.refs,h=o.setupState,T=Y(h),F=h===ee?Cn:I=>an(a,I)?!1:Q(T,I),H=(I,X)=>!(X&&an(a,X));if(d!=null&&d!==c){if(hn(t),ae(d))a[d]=null,F(d)&&(h[d]=null);else if(ce(d)){const I=t;H(d,I.k)&&(d.value=null),I.k&&(a[I.k]=null)}}if(U(c))It(c,o,12,[l,a]);else{const I=ae(c),X=ce(c);if(I||X){const W=()=>{if(e.f){const N=I?F(c)?h[c]:a[c]:H()||!e.k?c.value:a[e.k];if(i)k(N)&&js(N,r);else if(k(N))N.includes(r)||N.push(r);else if(I)a[c]=[r],F(c)&&(h[c]=a[c]);else{const g=[r];H(c,e.k)&&(c.value=g),e.k&&(a[e.k]=g)}}else I?(a[c]=l,F(c)&&(h[c]=l)):X&&(H(c,e.k)&&(c.value=l),e.k&&(a[e.k]=l))};if(l){const N=()=>{W(),Xt.delete(e)};N.id=-1,Xt.set(e,N),de(N,s)}else hn(e),W()}}}function hn(e){const t=Xt.get(e);t&&(t.flags|=8,Xt.delete(e))}let dn=!1;const it=()=>{dn||(console.error("Hydration completed but contains mismatches."),dn=!0)},Hr=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",jr=e=>e.namespaceURI.includes("MathML"),Lt=e=>{if(e.nodeType===1){if(Hr(e))return"svg";if(jr(e))return"mathml"}},Ut=e=>e.nodeType===8;function kr(e){const{mt:t,p:s,o:{patchProp:n,createText:i,nextSibling:r,parentNode:l,remove:o,insert:c,createComment:d}}=e,a=(g,_)=>{if(!_.hasChildNodes()){s(null,g,_),Yt(),_._vnode=g;return}h(_.firstChild,g,null,null,null),Yt(),_._vnode=g},h=(g,_,v,O,B,$=!1)=>{$=$||!!_.dynamicChildren;const L=Ut(g)&&g.data==="[",P=()=>I(g,_,v,O,B,L),{type:J,ref:q,shapeFlag:G,patchFlag:ie}=_;let re=g.nodeType;_.el=g,ie===-2&&($=!1,_.dynamicChildren=null);let R=null;switch(J){case tt:re!==3?_.children===""?(c(_.el=i(""),l(g),g),R=g):R=P():(g.data!==_.children&&(it(),g.data=_.children),R=r(g));break;case Ae:N(g)?(R=r(g),W(_.el=g.content.firstChild,g,v)):re!==8||L?R=P():R=r(g);break;case Wt:if(L&&(g=r(g),re=g.nodeType),re===1||re===3){R=g;const V=!_.children.length;for(let A=0;A<_.staticCount;A++)V&&(_.children+=R.nodeType===1?R.outerHTML:R.data),A===_.staticCount-1&&(_.anchor=R),R=r(R);return L?r(R):R}else P();break;case Fe:L?R=H(g,_,v,O,B,$):R=P();break;default:if(G&1)(re!==1||_.type.toLowerCase()!==g.tagName.toLowerCase())&&!N(g)?R=P():R=T(g,_,v,O,B,$);else if(G&6){_.slotScopeIds=B;const V=l(g);if(L?R=X(g):Ut(g)&&g.data==="teleport start"?R=X(g,g.data,"teleport end"):R=r(g),t(_,V,null,v,O,Lt(V),$),ut(_)&&!_.type.__asyncResolved){let A;L?(A=fe(Fe),A.anchor=R?R.previousSibling:V.lastChild):A=g.nodeType===3?Pi(""):fe("div"),A.el=g,_.component.subTree=A}}else G&64?re!==8?R=P():R=_.type.hydrate(g,_,v,O,B,$,e,F):G&128&&(R=_.type.hydrate(g,_,v,O,Lt(l(g)),B,$,e,h))}return q!=null&&ct(q,null,O,_),R},T=(g,_,v,O,B,$)=>{$=$||!!_.dynamicChildren;const{type:L,props:P,patchFlag:J,shapeFlag:q,dirs:G,transition:ie}=_,re=L==="input"||L==="option";if(re||J!==-1){G&&Ie(_,null,v,"created");let R=!1;if(N(g)){R=yi(null,ie)&&v&&v.vnode.props&&v.vnode.props.appear;const A=g.content.firstChild;if(R){const ne=A.getAttribute("class");ne&&(A.$cls=ne),ie.beforeEnter(A)}W(A,g,v),_.el=g=A}if(q&16&&!(P&&(P.innerHTML||P.textContent))){let A=F(g.firstChild,_,g,v,O,B,$);for(;A;){Vt(g,1)||it();const ne=A;A=A.nextSibling,o(ne)}}else if(q&8){let A=_.children;A[0]===` -`&&(g.tagName==="PRE"||g.tagName==="TEXTAREA")&&(A=A.slice(1));const{textContent:ne}=g;ne!==A&&ne!==A.replace(/\r\n|\r/g,` -`)&&(Vt(g,0)||it(),g.textContent=_.children)}if(P){if(re||!$||J&48){const A=g.tagName.includes("-");for(const ne in P)(re&&(ne.endsWith("value")||ne==="indeterminate")||ts(ne)&&!ze(ne)||ne[0]==="."||A&&!ze(ne))&&n(g,ne,null,P[ne],void 0,v)}else if(P.onClick)n(g,"onClick",null,P.onClick,void 0,v);else if(J&4&&Ye(P.style))for(const A in P.style)P.style[A]}let V;(V=P&&P.onVnodeBeforeMount)&&Te(V,v,_),G&&Ie(_,null,v,"beforeMount"),((V=P&&P.onVnodeMounted)||G||R)&&Ci(()=>{V&&Te(V,v,_),R&&ie.enter(g),G&&Ie(_,null,v,"mounted")},O)}return g.nextSibling},F=(g,_,v,O,B,$,L)=>{L=L||!!_.dynamicChildren;const P=_.children,J=P.length;for(let q=0;q{const{slotScopeIds:L}=_;L&&(B=B?B.concat(L):L);const P=l(g),J=F(r(g),_,P,v,O,B,$);return J&&Ut(J)&&J.data==="]"?r(_.anchor=J):(it(),c(_.anchor=d("]"),P,J),J)},I=(g,_,v,O,B,$)=>{if(Vt(g.parentElement,1)||it(),_.el=null,$){const J=X(g);for(;;){const q=r(g);if(q&&q!==J)o(q);else break}}const L=r(g),P=l(g);return o(g),s(null,_,P,L,v,O,Lt(P),B),v&&(v.vnode.el=_.el,fs(v,_.el)),L},X=(g,_="[",v="]")=>{let O=0;for(;g;)if(g=r(g),g&&Ut(g)&&(g.data===_&&O++,g.data===v)){if(O===0)return r(g);O--}return g},W=(g,_,v)=>{const O=_.parentNode;O&&O.replaceChild(g,_);let B=v;for(;B;)B.vnode.el===_&&(B.vnode.el=B.subTree.el=g),B=B.parent},N=g=>g.nodeType===1&&g.tagName==="TEMPLATE";return[a,h]}const pn="data-allow-mismatch",Nr={0:"text",1:"children",2:"class",3:"style",4:"attribute"};function Vt(e,t){if(t===0||t===1)for(;e&&!e.hasAttribute(pn);)e=e.parentElement;const s=e&&e.getAttribute(pn);if(s==null)return!1;if(s==="")return!0;{const n=s.split(",");return t===0&&n.includes("children")?!0:n.includes(Nr[t])}}ns().requestIdleCallback;ns().cancelIdleCallback;const ut=e=>!!e.type.__asyncLoader,ti=e=>e.type.__isKeepAlive;function $r(e,t){si(e,"a",t)}function Lr(e,t){si(e,"da",t)}function si(e,t,s=ge){const n=e.__wdc||(e.__wdc=()=>{let i=s;for(;i;){if(i.isDeactivated)return;i=i.parent}return e()});if(ls(t,n,s),s){let i=s.parent;for(;i&&i.parent;)ti(i.parent.vnode)&&Ur(n,t,s,i),i=i.parent}}function Ur(e,t,s,n){const i=ls(t,e,n,!0);ni(()=>{js(n[t],i)},s)}function ls(e,t,s=ge,n=!1){if(s){const i=s[e]||(s[e]=[]),r=t.__weh||(t.__weh=(...l)=>{$e();const o=Bt(s),c=Ve(t,s,e,l);return o(),Le(),c});return n?i.unshift(r):i.push(r),r}}const Ke=e=>(t,s=ge)=>{(!Pt||e==="sp")&&ls(e,(...n)=>t(...n),s)},Vr=Ke("bm"),Kr=Ke("m"),Wr=Ke("bu"),qr=Ke("u"),Jr=Ke("bum"),ni=Ke("um"),Gr=Ke("sp"),Yr=Ke("rtg"),Qr=Ke("rtc");function Xr(e,t=ge){ls("ec",e,t)}const Zr=Symbol.for("v-ndc");function Gl(e,t,s,n){let i;const r=s,l=k(e);if(l||ae(e)){const o=l&&Ye(e);let c=!1,d=!1;o&&(c=!Ce(e),d=Ue(e),e=rs(e)),i=new Array(e.length);for(let a=0,h=e.length;at(o,c,void 0,r));else{const o=Object.keys(e);i=new Array(o.length);for(let c=0,d=o.length;ce?Mi(e)?cs(e):As(e.parent):null,wt=ue(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>As(e.parent),$root:e=>As(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>ri(e),$forceUpdate:e=>e.f||(e.f=()=>{Ys(e.update)}),$nextTick:e=>e.n||(e.n=Fr.bind(e.proxy)),$watch:e=>Rr.bind(e)}),xs=(e,t)=>e!==ee&&!e.__isScriptSetup&&Q(e,t),zr={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:s,setupState:n,data:i,props:r,accessCache:l,type:o,appContext:c}=e;if(t[0]!=="$"){const T=l[t];if(T!==void 0)switch(T){case 1:return n[t];case 2:return i[t];case 4:return s[t];case 3:return r[t]}else{if(xs(n,t))return l[t]=1,n[t];if(i!==ee&&Q(i,t))return l[t]=2,i[t];if(Q(r,t))return l[t]=3,r[t];if(s!==ee&&Q(s,t))return l[t]=4,s[t];Ps&&(l[t]=0)}}const d=wt[t];let a,h;if(d)return t==="$attrs"&&oe(e.attrs,"get",""),d(e);if((a=o.__cssModules)&&(a=a[t]))return a;if(s!==ee&&Q(s,t))return l[t]=4,s[t];if(h=c.config.globalProperties,Q(h,t))return h[t]},set({_:e},t,s){const{data:n,setupState:i,ctx:r}=e;return xs(i,t)?(i[t]=s,!0):n!==ee&&Q(n,t)?(n[t]=s,!0):Q(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(r[t]=s,!0)},has({_:{data:e,setupState:t,accessCache:s,ctx:n,appContext:i,props:r,type:l}},o){let c;return!!(s[o]||e!==ee&&o[0]!=="$"&&Q(e,o)||xs(t,o)||Q(r,o)||Q(n,o)||Q(wt,o)||Q(i.config.globalProperties,o)||(c=l.__cssModules)&&c[o])},defineProperty(e,t,s){return s.get!=null?e._.accessCache[t]=0:Q(s,"value")&&this.set(e,t,s.value,null),Reflect.defineProperty(e,t,s)}};function gn(e){return k(e)?e.reduce((t,s)=>(t[s]=null,t),{}):e}let Ps=!0;function el(e){const t=ri(e),s=e.proxy,n=e.ctx;Ps=!1,t.beforeCreate&&_n(t.beforeCreate,e,"bc");const{data:i,computed:r,methods:l,watch:o,provide:c,inject:d,created:a,beforeMount:h,mounted:T,beforeUpdate:F,updated:H,activated:I,deactivated:X,beforeDestroy:W,beforeUnmount:N,destroyed:g,unmounted:_,render:v,renderTracked:O,renderTriggered:B,errorCaptured:$,serverPrefetch:L,expose:P,inheritAttrs:J,components:q,directives:G,filters:ie}=t;if(d&&tl(d,n,null),l)for(const V in l){const A=l[V];U(A)&&(n[V]=A.bind(s))}if(i){const V=i.call(s,s);z(V)&&(e.data=qs(V))}if(Ps=!0,r)for(const V in r){const A=r[V],ne=U(A)?A.bind(s,s):U(A.get)?A.get.bind(s,s):De,Ht=!U(A)&&U(A.set)?A.set.bind(s):De,Qe=$l({get:ne,set:Ht});Object.defineProperty(n,V,{enumerable:!0,configurable:!0,get:()=>Qe.value,set:Pe=>Qe.value=Pe})}if(o)for(const V in o)ii(o[V],n,s,V);if(c){const V=U(c)?c.call(s):c;Reflect.ownKeys(V).forEach(A=>{Ar(A,V[A])})}a&&_n(a,e,"c");function R(V,A){k(A)?A.forEach(ne=>V(ne.bind(s))):A&&V(A.bind(s))}if(R(Vr,h),R(Kr,T),R(Wr,F),R(qr,H),R($r,I),R(Lr,X),R(Xr,$),R(Qr,O),R(Yr,B),R(Jr,N),R(ni,_),R(Gr,L),k(P))if(P.length){const V=e.exposed||(e.exposed={});P.forEach(A=>{Object.defineProperty(V,A,{get:()=>s[A],set:ne=>s[A]=ne,enumerable:!0})})}else e.exposed||(e.exposed={});v&&e.render===De&&(e.render=v),J!=null&&(e.inheritAttrs=J),q&&(e.components=q),G&&(e.directives=G),L&&ei(e)}function tl(e,t,s=De){k(e)&&(e=Ms(e));for(const n in e){const i=e[n];let r;z(i)?"default"in i?r=Kt(i.from||n,i.default,!0):r=Kt(i.from||n):r=Kt(i),ce(r)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>r.value,set:l=>r.value=l}):t[n]=r}}function _n(e,t,s){Ve(k(e)?e.map(n=>n.bind(t.proxy)):e.bind(t.proxy),t,s)}function ii(e,t,s,n){let i=n.includes(".")?zn(s,n):()=>s[n];if(ae(e)){const r=t[e];U(r)&&ms(i,r)}else if(U(e))ms(i,e.bind(s));else if(z(e))if(k(e))e.forEach(r=>ii(r,t,s,n));else{const r=U(e.handler)?e.handler.bind(s):t[e.handler];U(r)&&ms(i,r,e)}}function ri(e){const t=e.type,{mixins:s,extends:n}=t,{mixins:i,optionsCache:r,config:{optionMergeStrategies:l}}=e.appContext,o=r.get(t);let c;return o?c=o:!i.length&&!s&&!n?c=t:(c={},i.length&&i.forEach(d=>Zt(c,d,l,!0)),Zt(c,t,l)),z(t)&&r.set(t,c),c}function Zt(e,t,s,n=!1){const{mixins:i,extends:r}=t;r&&Zt(e,r,s,!0),i&&i.forEach(l=>Zt(e,l,s,!0));for(const l in t)if(!(n&&l==="expose")){const o=sl[l]||s&&s[l];e[l]=o?o(e[l],t[l]):t[l]}return e}const sl={data:bn,props:yn,emits:yn,methods:xt,computed:xt,beforeCreate:he,created:he,beforeMount:he,mounted:he,beforeUpdate:he,updated:he,beforeDestroy:he,beforeUnmount:he,destroyed:he,unmounted:he,activated:he,deactivated:he,errorCaptured:he,serverPrefetch:he,components:xt,directives:xt,watch:il,provide:bn,inject:nl};function bn(e,t){return t?e?function(){return ue(U(e)?e.call(this,this):e,U(t)?t.call(this,this):t)}:t:e}function nl(e,t){return xt(Ms(e),Ms(t))}function Ms(e){if(k(e)){const t={};for(let s=0;st==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${dt(t)}Modifiers`]||e[`${Rt(t)}Modifiers`];function fl(e,t,...s){if(e.isUnmounted)return;const n=e.vnode.props||ee;let i=s;const r=t.startsWith("update:"),l=r&&ol(n,t.slice(7));l&&(l.trim&&(i=s.map(a=>ae(a)?a.trim():a)),l.number&&(i=s.map($i)));let o,c=n[o=ds(t)]||n[o=ds(dt(t))];!c&&r&&(c=n[o=ds(Rt(t))]),c&&Ve(c,e,6,i);const d=n[o+"Once"];if(d){if(!e.emitted)e.emitted={};else if(e.emitted[o])return;e.emitted[o]=!0,Ve(d,e,6,i)}}const cl=new WeakMap;function oi(e,t,s=!1){const n=s?cl:t.emitsCache,i=n.get(e);if(i!==void 0)return i;const r=e.emits;let l={},o=!1;if(!U(e)){const c=d=>{const a=oi(d,t,!0);a&&(o=!0,ue(l,a))};!s&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!r&&!o?(z(e)&&n.set(e,null),null):(k(r)?r.forEach(c=>l[c]=null):ue(l,r),z(e)&&n.set(e,l),l)}function os(e,t){return!e||!ts(t)?!1:(t=t.slice(2).replace(/Once$/,""),Q(e,t[0].toLowerCase()+t.slice(1))||Q(e,Rt(t))||Q(e,t))}function vs(e){const{type:t,vnode:s,proxy:n,withProxy:i,propsOptions:[r],slots:l,attrs:o,emit:c,render:d,renderCache:a,props:h,data:T,setupState:F,ctx:H,inheritAttrs:I}=e,X=Qt(e);let W,N;try{if(s.shapeFlag&4){const _=i||n,v=_;W=ve(d.call(v,_,a,h,F,T,H)),N=o}else{const _=t;W=ve(_.length>1?_(h,{attrs:o,slots:l,emit:c}):_(h,null)),N=t.props?o:al(o)}}catch(_){Ct.length=0,Dt(_,e,1),W=fe(Ae)}let g=W;if(N&&I!==!1){const _=Object.keys(N),{shapeFlag:v}=g;_.length&&v&7&&(r&&_.some(En)&&(N=hl(N,r)),g=_t(g,N,!1,!0))}return s.dirs&&(g=_t(g,null,!1,!0),g.dirs=g.dirs?g.dirs.concat(s.dirs):s.dirs),s.transition&&Qs(g,s.transition),W=g,Qt(X),W}function ul(e,t=!0){let s;for(let n=0;n{let t;for(const s in e)(s==="class"||s==="style"||ts(s))&&((t||(t={}))[s]=e[s]);return t},hl=(e,t)=>{const s={};for(const n in e)(!En(n)||!(n.slice(9)in t))&&(s[n]=e[n]);return s};function dl(e,t,s){const{props:n,children:i,component:r}=e,{props:l,children:o,patchFlag:c}=t,d=r.emitsOptions;if(t.dirs||t.transition)return!0;if(s&&c>=0){if(c&1024)return!0;if(c&16)return n?mn(n,l,d):!!l;if(c&8){const a=t.dynamicProps;for(let h=0;hObject.create(ci),ai=e=>Object.getPrototypeOf(e)===ci;function pl(e,t,s,n=!1){const i={},r=ui();e.propsDefaults=Object.create(null),hi(e,t,i,r);for(const l in e.propsOptions[0])l in i||(i[l]=void 0);s?e.props=n?i:gr(i):e.type.props?e.props=i:e.props=r,e.attrs=r}function gl(e,t,s,n){const{props:i,attrs:r,vnode:{patchFlag:l}}=e,o=Y(i),[c]=e.propsOptions;let d=!1;if((n||l>0)&&!(l&16)){if(l&8){const a=e.vnode.dynamicProps;for(let h=0;h{c=!0;const[T,F]=di(h,t,!0);ue(l,T),F&&o.push(...F)};!s&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}if(!r&&!c)return z(e)&&n.set(e,lt),lt;if(k(r))for(let a=0;ae==="_"||e==="_ctx"||e==="$stable",Zs=e=>k(e)?e.map(ve):[ve(e)],bl=(e,t,s)=>{if(t._n)return t;const n=Or((...i)=>Zs(t(...i)),s);return n._c=!1,n},pi=(e,t,s)=>{const n=e._ctx;for(const i in e){if(Xs(i))continue;const r=e[i];if(U(r))t[i]=bl(i,r,n);else if(r!=null){const l=Zs(r);t[i]=()=>l}}},gi=(e,t)=>{const s=Zs(t);e.slots.default=()=>s},_i=(e,t,s)=>{for(const n in t)(s||!Xs(n))&&(e[n]=t[n])},yl=(e,t,s)=>{const n=e.slots=ui();if(e.vnode.shapeFlag&32){const i=t._;i?(_i(n,t,s),s&&Pn(n,"_",i,!0)):pi(t,n)}else t&&gi(e,t)},ml=(e,t,s)=>{const{vnode:n,slots:i}=e;let r=!0,l=ee;if(n.shapeFlag&32){const o=t._;o?s&&o===1?r=!1:_i(i,t,s):(r=!t.$stable,pi(t,i)),l=t}else t&&(gi(e,t),l={default:1});if(r)for(const o in i)!Xs(o)&&l[o]==null&&delete i[o]},de=Ci;function Yl(e){return bi(e)}function Ql(e){return bi(e,kr)}function bi(e,t){const s=ns();s.__VUE__=!0;const{insert:n,remove:i,patchProp:r,createElement:l,createText:o,createComment:c,setText:d,setElementText:a,parentNode:h,nextSibling:T,setScopeId:F=De,insertStaticContent:H}=e,I=(f,u,p,x=null,b=null,y=null,E=void 0,C=null,w=!!u.dynamicChildren)=>{if(f===u)return;f&&!Je(f,u)&&(x=jt(f),Pe(f,b,y,!0),f=null),u.patchFlag===-2&&(w=!1,u.dynamicChildren=null);const{type:m,ref:D,shapeFlag:S}=u;switch(m){case tt:X(f,u,p,x);break;case Ae:W(f,u,p,x);break;case Wt:f==null&&N(u,p,x,E);break;case Fe:q(f,u,p,x,b,y,E,C,w);break;default:S&1?v(f,u,p,x,b,y,E,C,w):S&6?G(f,u,p,x,b,y,E,C,w):(S&64||S&128)&&m.process(f,u,p,x,b,y,E,C,w,st)}D!=null&&b?ct(D,f&&f.ref,y,u||f,!u):D==null&&f&&f.ref!=null&&ct(f.ref,null,y,f,!0)},X=(f,u,p,x)=>{if(f==null)n(u.el=o(u.children),p,x);else{const b=u.el=f.el;u.children!==f.children&&d(b,u.children)}},W=(f,u,p,x)=>{f==null?n(u.el=c(u.children||""),p,x):u.el=f.el},N=(f,u,p,x)=>{[f.el,f.anchor]=H(f.children,u,p,x,f.el,f.anchor)},g=({el:f,anchor:u},p,x)=>{let b;for(;f&&f!==u;)b=T(f),n(f,p,x),f=b;n(u,p,x)},_=({el:f,anchor:u})=>{let p;for(;f&&f!==u;)p=T(f),i(f),f=p;i(u)},v=(f,u,p,x,b,y,E,C,w)=>{if(u.type==="svg"?E="svg":u.type==="math"&&(E="mathml"),f==null)O(u,p,x,b,y,E,C,w);else{const m=f.el&&f.el._isVueCE?f.el:null;try{m&&m._beginPatch(),L(f,u,b,y,E,C,w)}finally{m&&m._endPatch()}}},O=(f,u,p,x,b,y,E,C)=>{let w,m;const{props:D,shapeFlag:S,transition:M,dirs:j}=f;if(w=f.el=l(f.type,y,D&&D.is,D),S&8?a(w,f.children):S&16&&$(f.children,w,null,x,b,Ts(f,y),E,C),j&&Ie(f,null,x,"created"),B(w,f,f.scopeId,E,x),D){for(const te in D)te!=="value"&&!ze(te)&&r(w,te,null,D[te],y,x);"value"in D&&r(w,"value",null,D.value,y),(m=D.onVnodeBeforeMount)&&Te(m,x,f)}j&&Ie(f,null,x,"beforeMount");const K=yi(b,M);K&&M.beforeEnter(w),n(w,u,p),((m=D&&D.onVnodeMounted)||K||j)&&de(()=>{m&&Te(m,x,f),K&&M.enter(w),j&&Ie(f,null,x,"mounted")},b)},B=(f,u,p,x,b)=>{if(p&&F(f,p),x)for(let y=0;y{for(let m=w;m{const C=u.el=f.el;let{patchFlag:w,dynamicChildren:m,dirs:D}=u;w|=f.patchFlag&16;const S=f.props||ee,M=u.props||ee;let j;if(p&&Xe(p,!1),(j=M.onVnodeBeforeUpdate)&&Te(j,p,u,f),D&&Ie(u,f,p,"beforeUpdate"),p&&Xe(p,!0),(S.innerHTML&&M.innerHTML==null||S.textContent&&M.textContent==null)&&a(C,""),m?P(f.dynamicChildren,m,C,p,x,Ts(u,b),y):E||A(f,u,C,null,p,x,Ts(u,b),y,!1),w>0){if(w&16)J(C,S,M,p,b);else if(w&2&&S.class!==M.class&&r(C,"class",null,M.class,b),w&4&&r(C,"style",S.style,M.style,b),w&8){const K=u.dynamicProps;for(let te=0;te{j&&Te(j,p,u,f),D&&Ie(u,f,p,"updated")},x)},P=(f,u,p,x,b,y,E)=>{for(let C=0;C{if(u!==p){if(u!==ee)for(const y in u)!ze(y)&&!(y in p)&&r(f,y,u[y],null,b,x);for(const y in p){if(ze(y))continue;const E=p[y],C=u[y];E!==C&&y!=="value"&&r(f,y,C,E,b,x)}"value"in p&&r(f,"value",u.value,p.value,b)}},q=(f,u,p,x,b,y,E,C,w)=>{const m=u.el=f?f.el:o(""),D=u.anchor=f?f.anchor:o("");let{patchFlag:S,dynamicChildren:M,slotScopeIds:j}=u;j&&(C=C?C.concat(j):j),f==null?(n(m,p,x),n(D,p,x),$(u.children||[],p,D,b,y,E,C,w)):S>0&&S&64&&M&&f.dynamicChildren&&f.dynamicChildren.length===M.length?(P(f.dynamicChildren,M,p,b,y,E,C),(u.key!=null||b&&u===b.subTree)&&mi(f,u,!0)):A(f,u,p,D,b,y,E,C,w)},G=(f,u,p,x,b,y,E,C,w)=>{u.slotScopeIds=C,f==null?u.shapeFlag&512?b.ctx.activate(u,p,x,E,w):ie(u,p,x,b,y,E,w):re(f,u,w)},ie=(f,u,p,x,b,y,E)=>{const C=f.component=Il(f,x,b);if(ti(f)&&(C.ctx.renderer=st),Bl(C,!1,E),C.asyncDep){if(b&&b.registerDep(C,R,E),!f.el){const w=C.subTree=fe(Ae);W(null,w,u,p),f.placeholder=w.el}}else R(C,f,u,p,b,y,E)},re=(f,u,p)=>{const x=u.component=f.component;if(dl(f,u,p))if(x.asyncDep&&!x.asyncResolved){V(x,u,p);return}else x.next=u,x.update();else u.el=f.el,x.vnode=u},R=(f,u,p,x,b,y,E)=>{const C=()=>{if(f.isMounted){let{next:S,bu:M,u:j,parent:K,vnode:te}=f;{const me=xi(f);if(me){S&&(S.el=te.el,V(f,S,E)),me.asyncDep.then(()=>{de(()=>{f.isUnmounted||m()},b)});return}}let Z=S,_e;Xe(f,!1),S?(S.el=te.el,V(f,S,E)):S=te,M&&ps(M),(_e=S.props&&S.props.onVnodeBeforeUpdate)&&Te(_e,K,S,te),Xe(f,!0);const le=vs(f),Ee=f.subTree;f.subTree=le,I(Ee,le,h(Ee.el),jt(Ee),f,b,y),S.el=le.el,Z===null&&fs(f,le.el),j&&de(j,b),(_e=S.props&&S.props.onVnodeUpdated)&&de(()=>Te(_e,K,S,te),b)}else{let S;const{el:M,props:j}=u,{bm:K,m:te,parent:Z,root:_e,type:le}=f,Ee=ut(u);if(Xe(f,!1),K&&ps(K),!Ee&&(S=j&&j.onVnodeBeforeMount)&&Te(S,Z,u),Xe(f,!0),M&&hs){const me=()=>{f.subTree=vs(f),hs(M,f.subTree,f,b,null)};Ee&&le.__asyncHydrate?le.__asyncHydrate(M,f,me):me()}else{_e.ce&&_e.ce._hasShadowRoot()&&_e.ce._injectChildStyle(le);const me=f.subTree=vs(f);I(null,me,p,x,f,b,y),u.el=me.el}if(te&&de(te,b),!Ee&&(S=j&&j.onVnodeMounted)){const me=u;de(()=>Te(S,Z,me),b)}(u.shapeFlag&256||Z&&ut(Z.vnode)&&Z.vnode.shapeFlag&256)&&f.a&&de(f.a,b),f.isMounted=!0,u=p=x=null}};f.scope.on();const w=f.effect=new In(C);f.scope.off();const m=f.update=w.run.bind(w),D=f.job=w.runIfDirty.bind(w);D.i=f,D.id=f.uid,w.scheduler=()=>Ys(D),Xe(f,!0),m()},V=(f,u,p)=>{u.component=f;const x=f.vnode.props;f.vnode=u,f.next=null,gl(f,u.props,x,p),ml(f,u.children,p),$e(),un(f),Le()},A=(f,u,p,x,b,y,E,C,w=!1)=>{const m=f&&f.children,D=f?f.shapeFlag:0,S=u.children,{patchFlag:M,shapeFlag:j}=u;if(M>0){if(M&128){Ht(m,S,p,x,b,y,E,C,w);return}else if(M&256){ne(m,S,p,x,b,y,E,C,w);return}}j&8?(D&16&&bt(m,b,y),S!==m&&a(p,S)):D&16?j&16?Ht(m,S,p,x,b,y,E,C,w):bt(m,b,y,!0):(D&8&&a(p,""),j&16&&$(S,p,x,b,y,E,C,w))},ne=(f,u,p,x,b,y,E,C,w)=>{f=f||lt,u=u||lt;const m=f.length,D=u.length,S=Math.min(m,D);let M;for(M=0;MD?bt(f,b,y,!0,!1,S):$(u,p,x,b,y,E,C,w,S)},Ht=(f,u,p,x,b,y,E,C,w)=>{let m=0;const D=u.length;let S=f.length-1,M=D-1;for(;m<=S&&m<=M;){const j=f[m],K=u[m]=w?He(u[m]):ve(u[m]);if(Je(j,K))I(j,K,p,null,b,y,E,C,w);else break;m++}for(;m<=S&&m<=M;){const j=f[S],K=u[M]=w?He(u[M]):ve(u[M]);if(Je(j,K))I(j,K,p,null,b,y,E,C,w);else break;S--,M--}if(m>S){if(m<=M){const j=M+1,K=jM)for(;m<=S;)Pe(f[m],b,y,!0),m++;else{const j=m,K=m,te=new Map;for(m=K;m<=M;m++){const xe=u[m]=w?He(u[m]):ve(u[m]);xe.key!=null&&te.set(xe.key,m)}let Z,_e=0;const le=M-K+1;let Ee=!1,me=0;const yt=new Array(le);for(m=0;m=le){Pe(xe,b,y,!0);continue}let Me;if(xe.key!=null)Me=te.get(xe.key);else for(Z=K;Z<=M;Z++)if(yt[Z-K]===0&&Je(xe,u[Z])){Me=Z;break}Me===void 0?Pe(xe,b,y,!0):(yt[Me-K]=m+1,Me>=me?me=Me:Ee=!0,I(xe,u[Me],p,null,b,y,E,C,w),_e++)}const sn=Ee?xl(yt):lt;for(Z=sn.length-1,m=le-1;m>=0;m--){const xe=K+m,Me=u[xe],nn=u[xe+1],rn=xe+1{const{el:y,type:E,transition:C,children:w,shapeFlag:m}=f;if(m&6){Qe(f.component.subTree,u,p,x);return}if(m&128){f.suspense.move(u,p,x);return}if(m&64){E.move(f,u,p,st);return}if(E===Fe){n(y,u,p);for(let S=0;SC.enter(y),b);else{const{leave:S,delayLeave:M,afterLeave:j}=C,K=()=>{f.ctx.isUnmounted?i(y):n(y,u,p)},te=()=>{y._isLeaving&&y[Br](!0),S(y,()=>{K(),j&&j()})};M?M(y,K,te):te()}else n(y,u,p)},Pe=(f,u,p,x=!1,b=!1)=>{const{type:y,props:E,ref:C,children:w,dynamicChildren:m,shapeFlag:D,patchFlag:S,dirs:M,cacheIndex:j}=f;if(S===-2&&(b=!1),C!=null&&($e(),ct(C,null,p,f,!0),Le()),j!=null&&(u.renderCache[j]=void 0),D&256){u.ctx.deactivate(f);return}const K=D&1&&M,te=!ut(f);let Z;if(te&&(Z=E&&E.onVnodeBeforeUnmount)&&Te(Z,u,f),D&6)Di(f.component,p,x);else{if(D&128){f.suspense.unmount(p,x);return}K&&Ie(f,null,u,"beforeUnmount"),D&64?f.type.remove(f,u,p,st,x):m&&!m.hasOnce&&(y!==Fe||S>0&&S&64)?bt(m,u,p,!1,!0):(y===Fe&&S&384||!b&&D&16)&&bt(w,u,p),x&&en(f)}(te&&(Z=E&&E.onVnodeUnmounted)||K)&&de(()=>{Z&&Te(Z,u,f),K&&Ie(f,null,u,"unmounted")},p)},en=f=>{const{type:u,el:p,anchor:x,transition:b}=f;if(u===Fe){Ii(p,x);return}if(u===Wt){_(f);return}const y=()=>{i(p),b&&!b.persisted&&b.afterLeave&&b.afterLeave()};if(f.shapeFlag&1&&b&&!b.persisted){const{leave:E,delayLeave:C}=b,w=()=>E(p,y);C?C(f.el,y,w):w()}else y()},Ii=(f,u)=>{let p;for(;f!==u;)p=T(f),i(f),f=p;i(u)},Di=(f,u,p)=>{const{bum:x,scope:b,job:y,subTree:E,um:C,m:w,a:m}=f;vn(w),vn(m),x&&ps(x),b.stop(),y&&(y.flags|=8,Pe(E,f,u,p)),C&&de(C,u),de(()=>{f.isUnmounted=!0},u)},bt=(f,u,p,x=!1,b=!1,y=0)=>{for(let E=y;E{if(f.shapeFlag&6)return jt(f.component.subTree);if(f.shapeFlag&128)return f.suspense.next();const u=T(f.anchor||f.el),p=u&&u[Ir];return p?T(p):u};let us=!1;const tn=(f,u,p)=>{let x;f==null?u._vnode&&(Pe(u._vnode,null,null,!0),x=u._vnode.component):I(u._vnode||null,f,u,null,null,null,p),u._vnode=f,us||(us=!0,un(x),Yt(),us=!1)},st={p:I,um:Pe,m:Qe,r:en,mt:ie,mc:$,pc:A,pbc:P,n:jt,o:e};let as,hs;return t&&([as,hs]=t(st)),{render:tn,hydrate:as,createApp:ll(tn,as)}}function Ts({type:e,props:t},s){return s==="svg"&&e==="foreignObject"||s==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:s}function Xe({effect:e,job:t},s){s?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function yi(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function mi(e,t,s=!1){const n=e.children,i=t.children;if(k(n)&&k(i))for(let r=0;r>1,e[s[o]]0&&(t[n]=s[r-1]),s[r]=n)}}for(r=s.length,l=s[r-1];r-- >0;)s[r]=l,l=t[l];return s}function xi(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:xi(t)}function vn(e){if(e)for(let t=0;te.__isSuspense;let Is=0;const vl={name:"Suspense",__isSuspense:!0,process(e,t,s,n,i,r,l,o,c,d){if(e==null)Tl(t,s,n,i,r,l,o,c,d);else{if(r&&r.deps>0&&!e.suspense.isInFallback){t.suspense=e.suspense,t.suspense.vnode=t,t.el=e.el;return}wl(e,t,s,n,i,l,o,c,d)}},hydrate:Cl,normalize:El},Xl=vl;function Ot(e,t){const s=e.props&&e.props[t];U(s)&&s()}function Tl(e,t,s,n,i,r,l,o,c){const{p:d,o:{createElement:a}}=c,h=a("div"),T=e.suspense=wi(e,i,n,t,h,s,r,l,o,c);d(null,T.pendingBranch=e.ssContent,h,null,n,T,r,l),T.deps>0?(Ot(e,"onPending"),Ot(e,"onFallback"),d(null,e.ssFallback,t,s,n,null,r,l),ht(T,e.ssFallback)):T.resolve(!1,!0)}function wl(e,t,s,n,i,r,l,o,{p:c,um:d,o:{createElement:a}}){const h=t.suspense=e.suspense;h.vnode=t,t.el=e.el;const T=t.ssContent,F=t.ssFallback,{activeBranch:H,pendingBranch:I,isInFallback:X,isHydrating:W}=h;if(I)h.pendingBranch=T,Je(I,T)?(c(I,T,h.hiddenContainer,null,i,h,r,l,o),h.deps<=0?h.resolve():X&&(W||(c(H,F,s,n,i,null,r,l,o),ht(h,F)))):(h.pendingId=Is++,W?(h.isHydrating=!1,h.activeBranch=I):d(I,i,h),h.deps=0,h.effects.length=0,h.hiddenContainer=a("div"),X?(c(null,T,h.hiddenContainer,null,i,h,r,l,o),h.deps<=0?h.resolve():(c(H,F,s,n,i,null,r,l,o),ht(h,F))):H&&Je(H,T)?(c(H,T,s,n,i,h,r,l,o),h.resolve(!0)):(c(null,T,h.hiddenContainer,null,i,h,r,l,o),h.deps<=0&&h.resolve()));else if(H&&Je(H,T))c(H,T,s,n,i,h,r,l,o),ht(h,T);else if(Ot(t,"onPending"),h.pendingBranch=T,T.shapeFlag&512?h.pendingId=T.component.suspenseId:h.pendingId=Is++,c(null,T,h.hiddenContainer,null,i,h,r,l,o),h.deps<=0)h.resolve();else{const{timeout:N,pendingId:g}=h;N>0?setTimeout(()=>{h.pendingId===g&&h.fallback(F)},N):N===0&&h.fallback(F)}}function wi(e,t,s,n,i,r,l,o,c,d,a=!1){const{p:h,m:T,um:F,n:H,o:{parentNode:I,remove:X}}=d;let W;const N=Fl(e);N&&t&&t.pendingBranch&&(W=t.pendingId,t.deps++);const g=e.props?Li(e.props.timeout):void 0,_=r,v={vnode:e,parent:t,parentComponent:s,namespace:l,container:n,hiddenContainer:i,deps:0,pendingId:Is++,timeout:typeof g=="number"?g:-1,activeBranch:null,pendingBranch:null,isInFallback:!a,isHydrating:a,isUnmounted:!1,effects:[],resolve(O=!1,B=!1){const{vnode:$,activeBranch:L,pendingBranch:P,pendingId:J,effects:q,parentComponent:G,container:ie,isInFallback:re}=v;let R=!1;v.isHydrating?v.isHydrating=!1:O||(R=L&&P.transition&&P.transition.mode==="out-in",R&&(L.transition.afterLeave=()=>{J===v.pendingId&&(T(P,ie,r===_?H(L):r,0),Os(q),re&&$.ssFallback&&($.ssFallback.el=null))}),L&&(I(L.el)===ie&&(r=H(L)),F(L,G,v,!0),!R&&re&&$.ssFallback&&de(()=>$.ssFallback.el=null,v)),R||T(P,ie,r,0)),ht(v,P),v.pendingBranch=null,v.isInFallback=!1;let V=v.parent,A=!1;for(;V;){if(V.pendingBranch){V.effects.push(...q),A=!0;break}V=V.parent}!A&&!R&&Os(q),v.effects=[],N&&t&&t.pendingBranch&&W===t.pendingId&&(t.deps--,t.deps===0&&!B&&t.resolve()),Ot($,"onResolve")},fallback(O){if(!v.pendingBranch)return;const{vnode:B,activeBranch:$,parentComponent:L,container:P,namespace:J}=v;Ot(B,"onFallback");const q=H($),G=()=>{v.isInFallback&&(h(null,O,P,q,L,null,J,o,c),ht(v,O))},ie=O.transition&&O.transition.mode==="out-in";ie&&($.transition.afterLeave=G),v.isInFallback=!0,F($,L,null,!0),ie||G()},move(O,B,$){v.activeBranch&&T(v.activeBranch,O,B,$),v.container=O},next(){return v.activeBranch&&H(v.activeBranch)},registerDep(O,B,$){const L=!!v.pendingBranch;L&&v.deps++;const P=O.vnode.el;O.asyncDep.catch(J=>{Dt(J,O,0)}).then(J=>{if(O.isUnmounted||v.isUnmounted||v.pendingId!==O.suspenseId)return;O.asyncResolved=!0;const{vnode:q}=O;Bs(O,J),P&&(q.el=P);const G=!P&&O.subTree.el;B(O,q,I(P||O.subTree.el),P?null:H(O.subTree),v,l,$),G&&(q.placeholder=null,X(G)),fs(O,q.el),L&&--v.deps===0&&v.resolve()})},unmount(O,B){v.isUnmounted=!0,v.activeBranch&&F(v.activeBranch,s,O,B),v.pendingBranch&&F(v.pendingBranch,s,O,B)}};return v}function Cl(e,t,s,n,i,r,l,o,c){const d=t.suspense=wi(t,n,s,e.parentNode,document.createElement("div"),null,i,r,l,o,!0),a=c(e,d.pendingBranch=t.ssContent,s,d,r,l);return d.deps===0&&d.resolve(!1,!0),a}function El(e){const{shapeFlag:t,children:s}=e,n=t&32;e.ssContent=Tn(n?s.default:s),e.ssFallback=n?Tn(s.fallback):fe(Ae)}function Tn(e){let t;if(U(e)){const s=gt&&e._c;s&&(e._d=!1,Ei()),e=e(),s&&(e._d=!0,t=ye,Fi())}return k(e)&&(e=ul(e)),e=ve(e),t&&!e.dynamicChildren&&(e.dynamicChildren=t.filter(s=>s!==e)),e}function Ci(e,t){t&&t.pendingBranch?k(e)?t.effects.push(...e):t.effects.push(e):Os(e)}function ht(e,t){e.activeBranch=t;const{vnode:s,parentComponent:n}=e;let i=t.el;for(;!i&&t.component;)t=t.component.subTree,i=t.el;s.el=i,n&&n.subTree===s&&(n.vnode.el=i,fs(n,i))}function Fl(e){const t=e.props&&e.props.suspensible;return t!=null&&t!==!1}const Fe=Symbol.for("v-fgt"),tt=Symbol.for("v-txt"),Ae=Symbol.for("v-cmt"),Wt=Symbol.for("v-stc"),Ct=[];let ye=null;function Ei(e=!1){Ct.push(ye=e?null:[])}function Fi(){Ct.pop(),ye=Ct[Ct.length-1]||null}let gt=1;function zt(e,t=!1){gt+=e,e<0&&ye&&t&&(ye.hasOnce=!0)}function Si(e){return e.dynamicChildren=gt>0?ye||lt:null,Fi(),gt>0&&ye&&ye.push(e),e}function Zl(e,t,s,n,i,r){return Si(Ai(e,t,s,n,i,r,!0))}function Sl(e,t,s,n,i){return Si(fe(e,t,s,n,i,!0))}function At(e){return e?e.__v_isVNode===!0:!1}function Je(e,t){return e.type===t.type&&e.key===t.key}const Oi=({key:e})=>e??null,qt=({ref:e,ref_key:t,ref_for:s})=>(typeof e=="number"&&(e=""+e),e!=null?ae(e)||ce(e)||U(e)?{i:we,r:e,k:t,f:!!s}:e:null);function Ai(e,t=null,s=null,n=0,i=null,r=e===Fe?0:1,l=!1,o=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Oi(t),ref:t&&qt(t),scopeId:Xn,slotScopeIds:null,children:s,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:r,patchFlag:n,dynamicProps:i,dynamicChildren:null,appContext:null,ctx:we};return o?(zs(c,s),r&128&&e.normalize(c)):s&&(c.shapeFlag|=ae(s)?8:16),gt>0&&!l&&ye&&(c.patchFlag>0||r&6)&&c.patchFlag!==32&&ye.push(c),c}const fe=Ol;function Ol(e,t=null,s=null,n=0,i=null,r=!1){if((!e||e===Zr)&&(e=Ae),At(e)){const o=_t(e,t,!0);return s&&zs(o,s),gt>0&&!r&&ye&&(o.shapeFlag&6?ye[ye.indexOf(e)]=o:ye.push(o)),o.patchFlag=-2,o}if(Nl(e)&&(e=e.__vccOpts),t){t=Al(t);let{class:o,style:c}=t;o&&!ae(o)&&(t.class=$s(o)),z(c)&&(Gs(c)&&!k(c)&&(c=ue({},c)),t.style=Ns(c))}const l=ae(e)?1:Ti(e)?128:Dr(e)?64:z(e)?4:U(e)?2:0;return Ai(e,t,s,n,i,l,r,!0)}function Al(e){return e?Gs(e)||ai(e)?ue({},e):e:null}function _t(e,t,s=!1,n=!1){const{props:i,ref:r,patchFlag:l,children:o,transition:c}=e,d=t?Pl(i||{},t):i,a={__v_isVNode:!0,__v_skip:!0,type:e.type,props:d,key:d&&Oi(d),ref:t&&t.ref?s&&r?k(r)?r.concat(qt(t)):[r,qt(t)]:qt(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:o,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Fe?l===-1?16:l|16:l,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&_t(e.ssContent),ssFallback:e.ssFallback&&_t(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&n&&Qs(a,c.clone(a)),a}function Pi(e=" ",t=0){return fe(tt,null,e,t)}function zl(e="",t=!1){return t?(Ei(),Sl(Ae,null,e)):fe(Ae,null,e)}function ve(e){return e==null||typeof e=="boolean"?fe(Ae):k(e)?fe(Fe,null,e.slice()):At(e)?He(e):fe(tt,null,String(e))}function He(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:_t(e)}function zs(e,t){let s=0;const{shapeFlag:n}=e;if(t==null)t=null;else if(k(t))s=16;else if(typeof t=="object")if(n&65){const i=t.default;i&&(i._c&&(i._d=!1),zs(e,i()),i._c&&(i._d=!0));return}else{s=32;const i=t._;!i&&!ai(t)?t._ctx=we:i===3&&we&&(we.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else U(t)?(t={default:t,_ctx:we},s=32):(t=String(t),n&64?(s=16,t=[Pi(t)]):s=8);e.children=t,e.shapeFlag|=s}function Pl(...e){const t={};for(let s=0;sge||we;let es,Ds;{const e=ns(),t=(s,n)=>{let i;return(i=e[s])||(i=e[s]=[]),i.push(n),r=>{i.length>1?i.forEach(l=>l(r)):i[0](r)}};es=t("__VUE_INSTANCE_SETTERS__",s=>ge=s),Ds=t("__VUE_SSR_SETTERS__",s=>Pt=s)}const Bt=e=>{const t=ge;return es(e),e.scope.on(),()=>{e.scope.off(),es(t)}},wn=()=>{ge&&ge.scope.off(),es(null)};function Mi(e){return e.vnode.shapeFlag&4}let Pt=!1;function Bl(e,t=!1,s=!1){t&&Ds(t);const{props:n,children:i}=e.vnode,r=Mi(e);pl(e,n,r,t),yl(e,i,s||t);const l=r?Hl(e,t):void 0;return t&&Ds(!1),l}function Hl(e,t){const s=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,zr);const{setup:n}=s;if(n){$e();const i=e.setupContext=n.length>1?kl(e):null,r=Bt(e),l=It(n,e,0,[e.props,i]),o=Sn(l);if(Le(),r(),(o||e.sp)&&!ut(e)&&ei(e),o){if(l.then(wn,wn),t)return l.then(c=>{Bs(e,c)}).catch(c=>{Dt(c,e,0)});e.asyncDep=l}else Bs(e,l)}else Ri(e)}function Bs(e,t,s){U(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:z(t)&&(e.setupState=Jn(t)),Ri(e)}function Ri(e,t,s){const n=e.type;e.render||(e.render=n.render||De);{const i=Bt(e);$e();try{el(e)}finally{Le(),i()}}}const jl={get(e,t){return oe(e,"get",""),e[t]}};function kl(e){const t=s=>{e.exposed=s||{}};return{attrs:new Proxy(e.attrs,jl),slots:e.slots,emit:e.emit,expose:t}}function cs(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Jn(_r(e.exposed)),{get(t,s){if(s in t)return t[s];if(s in wt)return wt[s](e)},has(t,s){return s in t||s in wt}})):e.proxy}function Nl(e){return U(e)&&"__vccOpts"in e}const $l=(e,t)=>Tr(e,t,Pt);function eo(e,t,s){try{zt(-1);const n=arguments.length;return n===2?z(t)&&!k(t)?At(t)?fe(e,null,[t]):fe(e,t):fe(e,null,t):(n>3?s=Array.prototype.slice.call(arguments,2):n===3&&At(s)&&(s=[s]),fe(e,t,s))}finally{zt(1)}}const Ll="3.5.28";export{ts as A,En as B,dt as C,Vl as D,Ne as E,Fe as F,Ul as G,Rt as H,Ni as I,Ve as J,Xl as S,Ai as a,Pi as b,Zl as c,zl as d,Jl as e,Wl as f,ms as g,$l as h,eo as i,Fn as j,k,$i as l,Kl as m,$s as n,Ei as o,is as p,ps as q,Gl as r,U as s,Gi as t,Ql as u,ae as v,ql as w,Yl as x,Fr as y,ue as z}; diff --git a/dist/client/_astro/runtime-dom.esm-bundler.A7MyAQcw.js b/dist/client/_astro/runtime-dom.esm-bundler.A7MyAQcw.js new file mode 100644 index 0000000..17b065a --- /dev/null +++ b/dist/client/_astro/runtime-dom.esm-bundler.A7MyAQcw.js @@ -0,0 +1,19 @@ +/** +* @vue/shared v3.5.28 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function zs(e){const t=Object.create(null);for(const s of e.split(","))t[s]=1;return s=>s in t}const ee={},at=[],De=()=>{},fi=()=>!1,$t=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),en=e=>e.startsWith("onUpdate:"),ce=Object.assign,tn=(e,t)=>{const s=e.indexOf(t);s>-1&&e.splice(s,1)},Er=Object.prototype.hasOwnProperty,Z=(e,t)=>Er.call(e,t),V=Array.isArray,ht=e=>Kt(e)==="[object Map]",vt=e=>Kt(e)==="[object Set]",An=e=>Kt(e)==="[object Date]",K=e=>typeof e=="function",ie=e=>typeof e=="string",Ne=e=>typeof e=="symbol",z=e=>e!==null&&typeof e=="object",ui=e=>(z(e)||K(e))&&K(e.then)&&K(e.catch),ai=Object.prototype.toString,Kt=e=>ai.call(e),Mr=e=>Kt(e).slice(8,-1),hi=e=>Kt(e)==="[object Object]",sn=e=>ie(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,it=zs(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),gs=e=>{const t=Object.create(null);return(s=>t[s]||(t[s]=e(s)))},Fr=/-\w/g,ze=gs(e=>e.replace(Fr,t=>t.slice(1).toUpperCase())),Or=/\B([A-Z])/g,et=gs(e=>e.replace(Or,"-$1").toLowerCase()),di=gs(e=>e.charAt(0).toUpperCase()+e.slice(1)),As=gs(e=>e?`on${di(e)}`:""),Ze=(e,t)=>!Object.is(e,t),ts=(e,...t)=>{for(let s=0;s{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:n,value:s})},ms=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Pr=e=>{const t=ie(e)?Number(e):NaN;return isNaN(t)?e:t};let En;const _s=()=>En||(En=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function nn(e){if(V(e)){const t={};for(let s=0;s{if(s){const n=s.split(Ir);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function rn(e){let t="";if(ie(e))t=e;else if(V(e))for(let s=0;swt(s,t))}const mi=e=>!!(e&&e.__v_isRef===!0),jr=e=>ie(e)?e:e==null?"":V(e)||z(e)&&(e.toString===ai||!K(e.toString))?mi(e)?jr(e.value):JSON.stringify(e,_i,2):String(e),_i=(e,t)=>mi(t)?_i(e,t.value):ht(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((s,[n,i],r)=>(s[Es(n,r)+" =>"]=i,s),{})}:vt(t)?{[`Set(${t.size})`]:[...t.values()].map(s=>Es(s))}:Ne(t)?Es(t):z(t)&&!V(t)&&!hi(t)?String(t):t,Es=(e,t="")=>{var s;return Ne(e)?`Symbol(${(s=e.description)!=null?s:t})`:e};/** +* @vue/reactivity v3.5.28 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let _e;class Vr{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.__v_skip=!0,this.parent=_e,!t&&_e&&(this.index=(_e.scopes||(_e.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,s;if(this.scopes)for(t=0,s=this.scopes.length;t0&&--this._on===0&&(_e=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let s,n;for(s=0,n=this.effects.length;s0)return;if(Ft){let t=Ft;for(Ft=void 0;t;){const s=t.next;t.next=void 0,t.flags&=-9,t=s}}let e;for(;Mt;){let t=Mt;for(Mt=void 0;t;){const s=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(n){e||(e=n)}t=s}}if(e)throw e}function Ti(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function vi(e){let t,s=e.depsTail,n=s;for(;n;){const i=n.prevDep;n.version===-1?(n===s&&(s=i),fn(n),Kr(n)):t=n,n.dep.activeLink=n.prevActiveLink,n.prevActiveLink=void 0,n=i}e.deps=t,e.depsTail=s}function Bs(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(wi(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function wi(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Dt)||(e.globalVersion=Dt,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Bs(e))))return;e.flags|=2;const t=e.dep,s=se,n=Ee;se=e,Ee=!0;try{Ti(e);const i=e.fn(e._value);(t.version===0||Ze(i,e._value))&&(e.flags|=128,e._value=i,t.version++)}catch(i){throw t.version++,i}finally{se=s,Ee=n,vi(e),e.flags&=-3}}function fn(e,t=!1){const{dep:s,prevSub:n,nextSub:i}=e;if(n&&(n.nextSub=i,e.prevSub=void 0),i&&(i.prevSub=n,e.nextSub=void 0),s.subs===e&&(s.subs=n,!n&&s.computed)){s.computed.flags&=-5;for(let r=s.computed.deps;r;r=r.nextDep)fn(r,!0)}!t&&!--s.sc&&s.map&&s.map.delete(s.key)}function Kr(e){const{prevDep:t,nextDep:s}=e;t&&(t.nextDep=s,e.prevDep=void 0),s&&(s.prevDep=t,e.nextDep=void 0)}let Ee=!0;const Si=[];function Ue(){Si.push(Ee),Ee=!1}function We(){const e=Si.pop();Ee=e===void 0?!0:e}function Mn(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const s=se;se=void 0;try{t()}finally{se=s}}}let Dt=0;class Ur{constructor(t,s){this.sub=t,this.dep=s,this.version=s.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class un{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!se||!Ee||se===this.computed)return;let s=this.activeLink;if(s===void 0||s.sub!==se)s=this.activeLink=new Ur(se,this),se.deps?(s.prevDep=se.depsTail,se.depsTail.nextDep=s,se.depsTail=s):se.deps=se.depsTail=s,Ci(s);else if(s.version===-1&&(s.version=this.version,s.nextDep)){const n=s.nextDep;n.prevDep=s.prevDep,s.prevDep&&(s.prevDep.nextDep=n),s.prevDep=se.depsTail,s.nextDep=void 0,se.depsTail.nextDep=s,se.depsTail=s,se.deps===s&&(se.deps=n)}return s}trigger(t){this.version++,Dt++,this.notify(t)}notify(t){on();try{for(let s=this.subs;s;s=s.prevSub)s.sub.notify()&&s.sub.dep.notify()}finally{cn()}}}function Ci(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let n=t.deps;n;n=n.nextDep)Ci(n)}const s=e.dep.subs;s!==e&&(e.prevSub=s,s&&(s.nextSub=e)),e.dep.subs=e}}const Ls=new WeakMap,rt=Symbol(""),js=Symbol(""),Nt=Symbol("");function ue(e,t,s){if(Ee&&se){let n=Ls.get(e);n||Ls.set(e,n=new Map);let i=n.get(s);i||(n.set(s,i=new un),i.map=n,i.key=s),i.track()}}function Ve(e,t,s,n,i,r){const l=Ls.get(e);if(!l){Dt++;return}const o=c=>{c&&c.trigger()};if(on(),t==="clear")l.forEach(o);else{const c=V(e),d=c&&sn(s);if(c&&s==="length"){const a=Number(n);l.forEach((h,b)=>{(b==="length"||b===Nt||!Ne(b)&&b>=a)&&o(h)})}else switch((s!==void 0||l.has(void 0))&&o(l.get(s)),d&&o(l.get(Nt)),t){case"add":c?d&&o(l.get("length")):(o(l.get(rt)),ht(e)&&o(l.get(js)));break;case"delete":c||(o(l.get(rt)),ht(e)&&o(l.get(js)));break;case"set":ht(e)&&o(l.get(rt));break}}cn()}function ct(e){const t=X(e);return t===e?t:(ue(t,"iterate",Nt),Se(e)?t:t.map(Me))}function bs(e){return ue(e=X(e),"iterate",Nt),e}function Ge(e,t){return ke(e)?bt(Qe(e)?Me(t):t):Me(t)}const Wr={__proto__:null,[Symbol.iterator](){return Fs(this,Symbol.iterator,e=>Ge(this,e))},concat(...e){return ct(this).concat(...e.map(t=>V(t)?ct(t):t))},entries(){return Fs(this,"entries",e=>(e[1]=Ge(this,e[1]),e))},every(e,t){return Be(this,"every",e,t,void 0,arguments)},filter(e,t){return Be(this,"filter",e,t,s=>s.map(n=>Ge(this,n)),arguments)},find(e,t){return Be(this,"find",e,t,s=>Ge(this,s),arguments)},findIndex(e,t){return Be(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Be(this,"findLast",e,t,s=>Ge(this,s),arguments)},findLastIndex(e,t){return Be(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Be(this,"forEach",e,t,void 0,arguments)},includes(...e){return Os(this,"includes",e)},indexOf(...e){return Os(this,"indexOf",e)},join(e){return ct(this).join(e)},lastIndexOf(...e){return Os(this,"lastIndexOf",e)},map(e,t){return Be(this,"map",e,t,void 0,arguments)},pop(){return At(this,"pop")},push(...e){return At(this,"push",e)},reduce(e,...t){return Fn(this,"reduce",e,t)},reduceRight(e,...t){return Fn(this,"reduceRight",e,t)},shift(){return At(this,"shift")},some(e,t){return Be(this,"some",e,t,void 0,arguments)},splice(...e){return At(this,"splice",e)},toReversed(){return ct(this).toReversed()},toSorted(e){return ct(this).toSorted(e)},toSpliced(...e){return ct(this).toSpliced(...e)},unshift(...e){return At(this,"unshift",e)},values(){return Fs(this,"values",e=>Ge(this,e))}};function Fs(e,t,s){const n=bs(e),i=n[t]();return n!==e&&!Se(e)&&(i._next=i.next,i.next=()=>{const r=i._next();return r.done||(r.value=s(r.value)),r}),i}const kr=Array.prototype;function Be(e,t,s,n,i,r){const l=bs(e),o=l!==e&&!Se(e),c=l[t];if(c!==kr[t]){const h=c.apply(e,r);return o?Me(h):h}let d=s;l!==e&&(o?d=function(h,b){return s.call(this,Ge(e,h),b,e)}:s.length>2&&(d=function(h,b){return s.call(this,h,b,e)}));const a=c.call(l,d,n);return o&&i?i(a):a}function Fn(e,t,s,n){const i=bs(e);let r=s;return i!==e&&(Se(e)?s.length>3&&(r=function(l,o,c){return s.call(this,l,o,c,e)}):r=function(l,o,c){return s.call(this,l,Ge(e,o),c,e)}),i[t](r,...n)}function Os(e,t,s){const n=X(e);ue(n,"iterate",Nt);const i=n[t](...s);return(i===-1||i===!1)&&pn(s[0])?(s[0]=X(s[0]),n[t](...s)):i}function At(e,t,s=[]){Ue(),on();const n=X(e)[t].apply(e,s);return cn(),We(),n}const qr=zs("__proto__,__v_isRef,__isVue"),Ai=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Ne));function Gr(e){Ne(e)||(e=String(e));const t=X(this);return ue(t,"has",e),t.hasOwnProperty(e)}class Ei{constructor(t=!1,s=!1){this._isReadonly=t,this._isShallow=s}get(t,s,n){if(s==="__v_skip")return t.__v_skip;const i=this._isReadonly,r=this._isShallow;if(s==="__v_isReactive")return!i;if(s==="__v_isReadonly")return i;if(s==="__v_isShallow")return r;if(s==="__v_raw")return n===(i?r?nl:Pi:r?Oi:Fi).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(n)?t:void 0;const l=V(t);if(!i){let c;if(l&&(c=Wr[s]))return c;if(s==="hasOwnProperty")return Gr}const o=Reflect.get(t,s,he(t)?t:n);if((Ne(s)?Ai.has(s):qr(s))||(i||ue(t,"get",s),r))return o;if(he(o)){const c=l&&sn(s)?o:o.value;return i&&z(c)?$s(c):c}return z(o)?i?$s(o):hn(o):o}}class Mi extends Ei{constructor(t=!1){super(!1,t)}set(t,s,n,i){let r=t[s];const l=V(t)&&sn(s);if(!this._isShallow){const d=ke(r);if(!Se(n)&&!ke(n)&&(r=X(r),n=X(n)),!l&&he(r)&&!he(n))return d||(r.value=n),!0}const o=l?Number(s)e,Jt=e=>Reflect.getPrototypeOf(e);function Qr(e,t,s){return function(...n){const i=this.__v_raw,r=X(i),l=ht(r),o=e==="entries"||e===Symbol.iterator&&l,c=e==="keys"&&l,d=i[e](...n),a=s?Vs:t?bt:Me;return!t&&ue(r,"iterate",c?js:rt),ce(Object.create(d),{next(){const{value:h,done:b}=d.next();return b?{value:h,done:b}:{value:o?[a(h[0]),a(h[1])]:a(h),done:b}}})}}function Yt(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function zr(e,t){const s={get(i){const r=this.__v_raw,l=X(r),o=X(i);e||(Ze(i,o)&&ue(l,"get",i),ue(l,"get",o));const{has:c}=Jt(l),d=t?Vs:e?bt:Me;if(c.call(l,i))return d(r.get(i));if(c.call(l,o))return d(r.get(o));r!==l&&r.get(i)},get size(){const i=this.__v_raw;return!e&&ue(X(i),"iterate",rt),i.size},has(i){const r=this.__v_raw,l=X(r),o=X(i);return e||(Ze(i,o)&&ue(l,"has",i),ue(l,"has",o)),i===o?r.has(i):r.has(i)||r.has(o)},forEach(i,r){const l=this,o=l.__v_raw,c=X(o),d=t?Vs:e?bt:Me;return!e&&ue(c,"iterate",rt),o.forEach((a,h)=>i.call(r,d(a),d(h),l))}};return ce(s,e?{add:Yt("add"),set:Yt("set"),delete:Yt("delete"),clear:Yt("clear")}:{add(i){!t&&!Se(i)&&!ke(i)&&(i=X(i));const r=X(this);return Jt(r).has.call(r,i)||(r.add(i),Ve(r,"add",i,i)),this},set(i,r){!t&&!Se(r)&&!ke(r)&&(r=X(r));const l=X(this),{has:o,get:c}=Jt(l);let d=o.call(l,i);d||(i=X(i),d=o.call(l,i));const a=c.call(l,i);return l.set(i,r),d?Ze(r,a)&&Ve(l,"set",i,r):Ve(l,"add",i,r),this},delete(i){const r=X(this),{has:l,get:o}=Jt(r);let c=l.call(r,i);c||(i=X(i),c=l.call(r,i)),o&&o.call(r,i);const d=r.delete(i);return c&&Ve(r,"delete",i,void 0),d},clear(){const i=X(this),r=i.size!==0,l=i.clear();return r&&Ve(i,"clear",void 0,void 0),l}}),["keys","values","entries",Symbol.iterator].forEach(i=>{s[i]=Qr(i,e,t)}),s}function an(e,t){const s=zr(e,t);return(n,i,r)=>i==="__v_isReactive"?!e:i==="__v_isReadonly"?e:i==="__v_raw"?n:Reflect.get(Z(s,i)&&i in n?s:n,i,r)}const el={get:an(!1,!1)},tl={get:an(!1,!0)},sl={get:an(!0,!1)};const Fi=new WeakMap,Oi=new WeakMap,Pi=new WeakMap,nl=new WeakMap;function il(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function rl(e){return e.__v_skip||!Object.isExtensible(e)?0:il(Mr(e))}function hn(e){return ke(e)?e:dn(e,!1,Yr,el,Fi)}function ll(e){return dn(e,!1,Zr,tl,Oi)}function $s(e){return dn(e,!0,Xr,sl,Pi)}function dn(e,t,s,n,i){if(!z(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const r=rl(e);if(r===0)return e;const l=i.get(e);if(l)return l;const o=new Proxy(e,r===2?n:s);return i.set(e,o),o}function Qe(e){return ke(e)?Qe(e.__v_raw):!!(e&&e.__v_isReactive)}function ke(e){return!!(e&&e.__v_isReadonly)}function Se(e){return!!(e&&e.__v_isShallow)}function pn(e){return e?!!e.__v_raw:!1}function X(e){const t=e&&e.__v_raw;return t?X(t):e}function ol(e){return!Z(e,"__v_skip")&&Object.isExtensible(e)&&pi(e,"__v_skip",!0),e}const Me=e=>z(e)?hn(e):e,bt=e=>z(e)?$s(e):e;function he(e){return e?e.__v_isRef===!0:!1}function lc(e){return cl(e,!1)}function cl(e,t){return he(e)?e:new fl(e,t)}class fl{constructor(t,s){this.dep=new un,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=s?t:X(t),this._value=s?t:Me(t),this.__v_isShallow=s}get value(){return this.dep.track(),this._value}set value(t){const s=this._rawValue,n=this.__v_isShallow||Se(t)||ke(t);t=n?t:X(t),Ze(t,s)&&(this._rawValue=t,this._value=n?t:Me(t),this.dep.trigger())}}function ul(e){return he(e)?e.value:e}const al={get:(e,t,s)=>t==="__v_raw"?e:ul(Reflect.get(e,t,s)),set:(e,t,s,n)=>{const i=e[t];return he(i)&&!he(s)?(i.value=s,!0):Reflect.set(e,t,s,n)}};function Ri(e){return Qe(e)?e:new Proxy(e,al)}class hl{constructor(t,s,n){this.fn=t,this.setter=s,this._value=void 0,this.dep=new un(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Dt-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!s,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&se!==this)return xi(this,!0),!0}get value(){const t=this.dep.track();return wi(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function dl(e,t,s=!1){let n,i;return K(e)?n=e:(n=e.get,i=e.set),new hl(n,i,s)}const Xt={},os=new WeakMap;let nt;function pl(e,t=!1,s=nt){if(s){let n=os.get(s);n||os.set(s,n=[]),n.push(e)}}function gl(e,t,s=ee){const{immediate:n,deep:i,once:r,scheduler:l,augmentJob:o,call:c}=s,d=m=>i?m:Se(m)||i===!1||i===0?$e(m,1):$e(m);let a,h,b,S,O=!1,F=!1;if(he(e)?(h=()=>e.value,O=Se(e)):Qe(e)?(h=()=>d(e),O=!0):V(e)?(F=!0,O=e.some(m=>Qe(m)||Se(m)),h=()=>e.map(m=>{if(he(m))return m.value;if(Qe(m))return d(m);if(K(m))return c?c(m,2):m()})):K(e)?t?h=c?()=>c(e,2):e:h=()=>{if(b){Ue();try{b()}finally{We()}}const m=nt;nt=a;try{return c?c(e,3,[S]):e(S)}finally{nt=m}}:h=De,t&&i){const m=h,T=i===!0?1/0:i;h=()=>$e(m(),T)}const k=$r(),U=()=>{a.stop(),k&&k.active&&tn(k.effects,a)};if(r&&t){const m=t;t=(...T)=>{m(...T),U()}}let D=F?new Array(e.length).fill(Xt):Xt;const p=m=>{if(!(!(a.flags&1)||!a.dirty&&!m))if(t){const T=a.run();if(i||O||(F?T.some((M,B)=>Ze(M,D[B])):Ze(T,D))){b&&b();const M=nt;nt=a;try{const B=[T,D===Xt?void 0:F&&D[0]===Xt?[]:D,S];D=T,c?c(t,3,B):t(...B)}finally{nt=M}}}else a.run()};return o&&o(p),a=new bi(h),a.scheduler=l?()=>l(p,!1):p,S=m=>pl(m,!1,a),b=a.onStop=()=>{const m=os.get(a);if(m){if(c)c(m,4);else for(const T of m)T();os.delete(a)}},t?n?p(!0):D=a.run():l?l(p.bind(null,!0),!0):a.run(),U.pause=a.pause.bind(a),U.resume=a.resume.bind(a),U.stop=U,U}function $e(e,t=1/0,s){if(t<=0||!z(e)||e.__v_skip||(s=s||new Map,(s.get(e)||0)>=t))return e;if(s.set(e,t),t--,he(e))$e(e.value,t,s);else if(V(e))for(let n=0;n{$e(n,t,s)});else if(hi(e)){for(const n in e)$e(e[n],t,s);for(const n of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,n)&&$e(e[n],t,s)}return e}/** +* @vue/runtime-core v3.5.28 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Ut(e,t,s,n){try{return n?e(...n):e()}catch(i){Wt(i,t,s)}}function He(e,t,s,n){if(K(e)){const i=Ut(e,t,s,n);return i&&ui(i)&&i.catch(r=>{Wt(r,t,s)}),i}if(V(e)){const i=[];for(let r=0;r>>1,i=pe[n],r=Ht(i);r=Ht(s)?pe.push(e):pe.splice(_l(t),0,e),e.flags|=1,Ni()}}function Ni(){cs||(cs=Ii.then(Hi))}function Ks(e){V(e)?dt.push(...e):Je&&e.id===-1?Je.splice(ut+1,0,e):e.flags&1||(dt.push(e),e.flags|=1),Ni()}function On(e,t,s=Re+1){for(;sHt(s)-Ht(n));if(dt.length=0,Je){Je.push(...t);return}for(Je=t,ut=0;ute.id==null?e.flags&2?-1:1/0:e.id;function Hi(e){try{for(Re=0;Re{n._d&&ds(-1);const r=us(t);let l;try{l=e(...i)}finally{us(r),n._d&&ds(1)}return l};return n._n=!0,n._c=!0,n._d=!0,n}function oc(e,t){if(we===null)return e;const s=vs(we),n=e.dirs||(e.dirs=[]);for(let i=0;i1)return s&&K(t)?t.call(n&&n.proxy):t}}const xl=Symbol.for("v-scx"),Tl=()=>ss(xl);function Ps(e,t,s){return Li(e,t,s)}function Li(e,t,s=ee){const{immediate:n,deep:i,flush:r,once:l}=s,o=ce({},s),c=t&&n||!t&&r!=="post";let d;if(jt){if(r==="sync"){const S=Tl();d=S.__watcherHandles||(S.__watcherHandles=[])}else if(!c){const S=()=>{};return S.stop=De,S.resume=De,S.pause=De,S}}const a=ge;o.call=(S,O,F)=>He(S,a,O,F);let h=!1;r==="post"?o.scheduler=S=>{oe(S,a&&a.suspense)}:r!=="sync"&&(h=!0,o.scheduler=(S,O)=>{O?S():gn(S)}),o.augmentJob=S=>{t&&(S.flags|=4),h&&(S.flags|=2,a&&(S.id=a.uid,S.i=a))};const b=gl(e,t,o);return jt&&(d?d.push(b):c&&b()),b}function vl(e,t,s){const n=this.proxy,i=ie(e)?e.includes(".")?ji(n,e):()=>n[e]:e.bind(n,n);let r;K(t)?r=t:(r=t.handler,s=t);const l=kt(this),o=Li(i,r.bind(n),s);return l(),o}function ji(e,t){const s=t.split(".");return()=>{let n=e;for(let i=0;ie.__isTeleport,Ot=e=>e&&(e.disabled||e.disabled===""),Pn=e=>e&&(e.defer||e.defer===""),Rn=e=>typeof SVGElement<"u"&&e instanceof SVGElement,In=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,Us=(e,t)=>{const s=e&&e.to;return ie(s)?t?t(s):null:s},$i={name:"Teleport",__isTeleport:!0,process(e,t,s,n,i,r,l,o,c,d){const{mc:a,pc:h,pbc:b,o:{insert:S,querySelector:O,createText:F,createComment:k}}=d,U=Ot(t.props);let{shapeFlag:D,children:p,dynamicChildren:m}=t;if(e==null){const T=t.el=F(""),M=t.anchor=F("");S(T,s,n),S(M,s,n);const B=(H,P)=>{D&16&&a(p,H,P,i,r,l,o,c)},L=()=>{const H=t.target=Us(t.props,O),P=Ws(H,t,F,S);H&&(l!=="svg"&&Rn(H)?l="svg":l!=="mathml"&&In(H)&&(l="mathml"),i&&i.isCE&&(i.ce._teleportTargets||(i.ce._teleportTargets=new Set)).add(H),U||(B(H,P),ns(t,!1)))};U&&(B(s,M),ns(t,!0)),Pn(t.props)?(t.el.__isMounted=!1,oe(()=>{L(),delete t.el.__isMounted},r)):L()}else{if(Pn(t.props)&&e.el.__isMounted===!1){oe(()=>{$i.process(e,t,s,n,i,r,l,o,c,d)},r);return}t.el=e.el,t.targetStart=e.targetStart;const T=t.anchor=e.anchor,M=t.target=e.target,B=t.targetAnchor=e.targetAnchor,L=Ot(e.props),H=L?s:M,P=L?T:B;if(l==="svg"||Rn(M)?l="svg":(l==="mathml"||In(M))&&(l="mathml"),m?(b(e.dynamicChildren,m,H,i,r,l,o),yn(e,t,!0)):c||h(e,t,H,P,i,r,l,o,!1),U)L?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):Zt(t,s,T,d,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const q=t.target=Us(t.props,O);q&&Zt(t,q,null,d,0)}else L&&Zt(t,M,B,d,1);ns(t,U)}},remove(e,t,s,{um:n,o:{remove:i}},r){const{shapeFlag:l,children:o,anchor:c,targetStart:d,targetAnchor:a,target:h,props:b}=e;if(h&&(i(d),i(a)),r&&i(c),l&16){const S=r||!Ot(b);for(let O=0;Opt(F,t&&(V(t)?t[k]:t),s,n,i));return}if(gt(n)&&!i){n.shapeFlag&512&&n.type.__asyncResolved&&n.component.subTree.component&&pt(e,t,s,n.component.subTree);return}const r=n.shapeFlag&4?vs(n.component):n.el,l=i?null:r,{i:o,r:c}=e,d=t&&t.r,a=o.refs===ee?o.refs={}:o.refs,h=o.setupState,b=X(h),S=h===ee?fi:F=>Dn(a,F)?!1:Z(b,F),O=(F,k)=>!(k&&Dn(a,k));if(d!=null&&d!==c){if(Nn(t),ie(d))a[d]=null,S(d)&&(h[d]=null);else if(he(d)){const F=t;O(d,F.k)&&(d.value=null),F.k&&(a[F.k]=null)}}if(K(c))Ut(c,o,12,[l,a]);else{const F=ie(c),k=he(c);if(F||k){const U=()=>{if(e.f){const D=F?S(c)?h[c]:a[c]:O()||!e.k?c.value:a[e.k];if(i)V(D)&&tn(D,r);else if(V(D))D.includes(r)||D.push(r);else if(F)a[c]=[r],S(c)&&(h[c]=a[c]);else{const p=[r];O(c,e.k)&&(c.value=p),e.k&&(a[e.k]=p)}}else F?(a[c]=l,S(c)&&(h[c]=l)):k&&(O(c,e.k)&&(c.value=l),e.k&&(a[e.k]=l))};if(l){const D=()=>{U(),as.delete(e)};D.id=-1,as.set(e,D),oe(D,s)}else Nn(e),U()}}}function Nn(e){const t=as.get(e);t&&(t.flags|=8,as.delete(e))}let Hn=!1;const ft=()=>{Hn||(console.error("Hydration completed but contains mismatches."),Hn=!0)},Al=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",El=e=>e.namespaceURI.includes("MathML"),Qt=e=>{if(e.nodeType===1){if(Al(e))return"svg";if(El(e))return"mathml"}},zt=e=>e.nodeType===8;function Ml(e){const{mt:t,p:s,o:{patchProp:n,createText:i,nextSibling:r,parentNode:l,remove:o,insert:c,createComment:d}}=e,a=(p,m)=>{if(!m.hasChildNodes()){s(null,p,m),fs(),m._vnode=p;return}h(m.firstChild,p,null,null,null),fs(),m._vnode=p},h=(p,m,T,M,B,L=!1)=>{L=L||!!m.dynamicChildren;const H=zt(p)&&p.data==="[",P=()=>F(p,m,T,M,B,H),{type:q,ref:J,shapeFlag:Y,patchFlag:re}=m;let le=p.nodeType;m.el=p,re===-2&&(L=!1,m.dynamicChildren=null);let N=null;switch(q){case lt:le!==3?m.children===""?(c(m.el=i(""),l(p),p),N=p):N=P():(p.data!==m.children&&(ft(),p.data=m.children),N=r(p));break;case Fe:D(p)?(N=r(p),U(m.el=p.content.firstChild,p,T)):le!==8||H?N=P():N=r(p);break;case is:if(H&&(p=r(p),le=p.nodeType),le===1||le===3){N=p;const W=!m.children.length;for(let R=0;R{L=L||!!m.dynamicChildren;const{type:H,props:P,patchFlag:q,shapeFlag:J,dirs:Y,transition:re}=m,le=H==="input"||H==="option";if(le||q!==-1){Y&&Ie(m,null,T,"created");let N=!1;if(D(p)){N=lr(null,re)&&T&&T.vnode.props&&T.vnode.props.appear;const R=p.content.firstChild;if(N){const ne=R.getAttribute("class");ne&&(R.$cls=ne),re.beforeEnter(R)}U(R,p,T),m.el=p=R}if(J&16&&!(P&&(P.innerHTML||P.textContent))){let R=S(p.firstChild,m,p,T,M,B,L);for(;R;){es(p,1)||ft();const ne=R;R=R.nextSibling,o(ne)}}else if(J&8){let R=m.children;R[0]===` +`&&(p.tagName==="PRE"||p.tagName==="TEXTAREA")&&(R=R.slice(1));const{textContent:ne}=p;ne!==R&&ne!==R.replace(/\r\n|\r/g,` +`)&&(es(p,0)||ft(),p.textContent=m.children)}if(P){if(le||!L||q&48){const R=p.tagName.includes("-");for(const ne in P)(le&&(ne.endsWith("value")||ne==="indeterminate")||$t(ne)&&!it(ne)||ne[0]==="."||R&&!it(ne))&&n(p,ne,null,P[ne],void 0,T)}else if(P.onClick)n(p,"onClick",null,P.onClick,void 0,T);else if(q&4&&Qe(P.style))for(const R in P.style)P.style[R]}let W;(W=P&&P.onVnodeBeforeMount)&&ve(W,T,m),Y&&Ie(m,null,T,"beforeMount"),((W=P&&P.onVnodeMounted)||Y||N)&&ar(()=>{W&&ve(W,T,m),N&&re.enter(p),Y&&Ie(m,null,T,"mounted")},M)}return p.nextSibling},S=(p,m,T,M,B,L,H)=>{H=H||!!m.dynamicChildren;const P=m.children,q=P.length;for(let J=0;J{const{slotScopeIds:H}=m;H&&(B=B?B.concat(H):H);const P=l(p),q=S(r(p),m,P,T,M,B,L);return q&&zt(q)&&q.data==="]"?r(m.anchor=q):(ft(),c(m.anchor=d("]"),P,q),q)},F=(p,m,T,M,B,L)=>{if(es(p.parentElement,1)||ft(),m.el=null,L){const q=k(p);for(;;){const J=r(p);if(J&&J!==q)o(J);else break}}const H=r(p),P=l(p);return o(p),s(null,m,P,H,T,M,Qt(P),B),T&&(T.vnode.el=m.el,Ts(T,m.el)),H},k=(p,m="[",T="]")=>{let M=0;for(;p;)if(p=r(p),p&&zt(p)&&(p.data===m&&M++,p.data===T)){if(M===0)return r(p);M--}return p},U=(p,m,T)=>{const M=m.parentNode;M&&M.replaceChild(p,m);let B=T;for(;B;)B.vnode.el===m&&(B.vnode.el=B.subTree.el=p),B=B.parent},D=p=>p.nodeType===1&&p.tagName==="TEMPLATE";return[a,h]}const Bn="data-allow-mismatch",Fl={0:"text",1:"children",2:"class",3:"style",4:"attribute"};function es(e,t){if(t===0||t===1)for(;e&&!e.hasAttribute(Bn);)e=e.parentElement;const s=e&&e.getAttribute(Bn);if(s==null)return!1;if(s==="")return!0;{const n=s.split(",");return t===0&&n.includes("children")?!0:n.includes(Fl[t])}}_s().requestIdleCallback;_s().cancelIdleCallback;const gt=e=>!!e.type.__asyncLoader,Ui=e=>e.type.__isKeepAlive;function Ol(e,t){Wi(e,"a",t)}function Pl(e,t){Wi(e,"da",t)}function Wi(e,t,s=ge){const n=e.__wdc||(e.__wdc=()=>{let i=s;for(;i;){if(i.isDeactivated)return;i=i.parent}return e()});if(ys(t,n,s),s){let i=s.parent;for(;i&&i.parent;)Ui(i.parent.vnode)&&Rl(n,t,s,i),i=i.parent}}function Rl(e,t,s,n){const i=ys(t,e,n,!0);ki(()=>{tn(n[t],i)},s)}function ys(e,t,s=ge,n=!1){if(s){const i=s[e]||(s[e]=[]),r=t.__weh||(t.__weh=(...l)=>{Ue();const o=kt(s),c=He(t,s,e,l);return o(),We(),c});return n?i.unshift(r):i.push(r),r}}const qe=e=>(t,s=ge)=>{(!jt||e==="sp")&&ys(e,(...n)=>t(...n),s)},Il=qe("bm"),Dl=qe("m"),Nl=qe("bu"),Hl=qe("u"),Bl=qe("bum"),ki=qe("um"),Ll=qe("sp"),jl=qe("rtg"),Vl=qe("rtc");function $l(e,t=ge){ys("ec",e,t)}const Kl=Symbol.for("v-ndc");function uc(e,t,s,n){let i;const r=s,l=V(e);if(l||ie(e)){const o=l&&Qe(e);let c=!1,d=!1;o&&(c=!Se(e),d=ke(e),e=bs(e)),i=new Array(e.length);for(let a=0,h=e.length;at(o,c,void 0,r));else{const o=Object.keys(e);i=new Array(o.length);for(let c=0,d=o.length;ce?br(e)?vs(e):ks(e.parent):null,Pt=ce(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>ks(e.parent),$root:e=>ks(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Gi(e),$forceUpdate:e=>e.f||(e.f=()=>{gn(e.update)}),$nextTick:e=>e.n||(e.n=Di.bind(e.proxy)),$watch:e=>vl.bind(e)}),Rs=(e,t)=>e!==ee&&!e.__isScriptSetup&&Z(e,t),Ul={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:s,setupState:n,data:i,props:r,accessCache:l,type:o,appContext:c}=e;if(t[0]!=="$"){const b=l[t];if(b!==void 0)switch(b){case 1:return n[t];case 2:return i[t];case 4:return s[t];case 3:return r[t]}else{if(Rs(n,t))return l[t]=1,n[t];if(i!==ee&&Z(i,t))return l[t]=2,i[t];if(Z(r,t))return l[t]=3,r[t];if(s!==ee&&Z(s,t))return l[t]=4,s[t];qs&&(l[t]=0)}}const d=Pt[t];let a,h;if(d)return t==="$attrs"&&ue(e.attrs,"get",""),d(e);if((a=o.__cssModules)&&(a=a[t]))return a;if(s!==ee&&Z(s,t))return l[t]=4,s[t];if(h=c.config.globalProperties,Z(h,t))return h[t]},set({_:e},t,s){const{data:n,setupState:i,ctx:r}=e;return Rs(i,t)?(i[t]=s,!0):n!==ee&&Z(n,t)?(n[t]=s,!0):Z(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(r[t]=s,!0)},has({_:{data:e,setupState:t,accessCache:s,ctx:n,appContext:i,props:r,type:l}},o){let c;return!!(s[o]||e!==ee&&o[0]!=="$"&&Z(e,o)||Rs(t,o)||Z(r,o)||Z(n,o)||Z(Pt,o)||Z(i.config.globalProperties,o)||(c=l.__cssModules)&&c[o])},defineProperty(e,t,s){return s.get!=null?e._.accessCache[t]=0:Z(s,"value")&&this.set(e,t,s.value,null),Reflect.defineProperty(e,t,s)}};function Ln(e){return V(e)?e.reduce((t,s)=>(t[s]=null,t),{}):e}let qs=!0;function Wl(e){const t=Gi(e),s=e.proxy,n=e.ctx;qs=!1,t.beforeCreate&&jn(t.beforeCreate,e,"bc");const{data:i,computed:r,methods:l,watch:o,provide:c,inject:d,created:a,beforeMount:h,mounted:b,beforeUpdate:S,updated:O,activated:F,deactivated:k,beforeDestroy:U,beforeUnmount:D,destroyed:p,unmounted:m,render:T,renderTracked:M,renderTriggered:B,errorCaptured:L,serverPrefetch:H,expose:P,inheritAttrs:q,components:J,directives:Y,filters:re}=t;if(d&&kl(d,n,null),l)for(const W in l){const R=l[W];K(R)&&(n[W]=R.bind(s))}if(i){const W=i.call(s,s);z(W)&&(e.data=hn(W))}if(qs=!0,r)for(const W in r){const R=r[W],ne=K(R)?R.bind(s,s):K(R.get)?R.get.bind(s,s):De,qt=!K(R)&&K(R.set)?R.set.bind(s):De,tt=Io({get:ne,set:qt});Object.defineProperty(n,W,{enumerable:!0,configurable:!0,get:()=>tt.value,set:Oe=>tt.value=Oe})}if(o)for(const W in o)qi(o[W],n,s,W);if(c){const W=K(c)?c.call(s):c;Reflect.ownKeys(W).forEach(R=>{yl(R,W[R])})}a&&jn(a,e,"c");function N(W,R){V(R)?R.forEach(ne=>W(ne.bind(s))):R&&W(R.bind(s))}if(N(Il,h),N(Dl,b),N(Nl,S),N(Hl,O),N(Ol,F),N(Pl,k),N($l,L),N(Vl,M),N(jl,B),N(Bl,D),N(ki,m),N(Ll,H),V(P))if(P.length){const W=e.exposed||(e.exposed={});P.forEach(R=>{Object.defineProperty(W,R,{get:()=>s[R],set:ne=>s[R]=ne,enumerable:!0})})}else e.exposed||(e.exposed={});T&&e.render===De&&(e.render=T),q!=null&&(e.inheritAttrs=q),J&&(e.components=J),Y&&(e.directives=Y),H&&Ki(e)}function kl(e,t,s=De){V(e)&&(e=Gs(e));for(const n in e){const i=e[n];let r;z(i)?"default"in i?r=ss(i.from||n,i.default,!0):r=ss(i.from||n):r=ss(i),he(r)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>r.value,set:l=>r.value=l}):t[n]=r}}function jn(e,t,s){He(V(e)?e.map(n=>n.bind(t.proxy)):e.bind(t.proxy),t,s)}function qi(e,t,s,n){let i=n.includes(".")?ji(s,n):()=>s[n];if(ie(e)){const r=t[e];K(r)&&Ps(i,r)}else if(K(e))Ps(i,e.bind(s));else if(z(e))if(V(e))e.forEach(r=>qi(r,t,s,n));else{const r=K(e.handler)?e.handler.bind(s):t[e.handler];K(r)&&Ps(i,r,e)}}function Gi(e){const t=e.type,{mixins:s,extends:n}=t,{mixins:i,optionsCache:r,config:{optionMergeStrategies:l}}=e.appContext,o=r.get(t);let c;return o?c=o:!i.length&&!s&&!n?c=t:(c={},i.length&&i.forEach(d=>hs(c,d,l,!0)),hs(c,t,l)),z(t)&&r.set(t,c),c}function hs(e,t,s,n=!1){const{mixins:i,extends:r}=t;r&&hs(e,r,s,!0),i&&i.forEach(l=>hs(e,l,s,!0));for(const l in t)if(!(n&&l==="expose")){const o=ql[l]||s&&s[l];e[l]=o?o(e[l],t[l]):t[l]}return e}const ql={data:Vn,props:$n,emits:$n,methods:Et,computed:Et,beforeCreate:de,created:de,beforeMount:de,mounted:de,beforeUpdate:de,updated:de,beforeDestroy:de,beforeUnmount:de,destroyed:de,unmounted:de,activated:de,deactivated:de,errorCaptured:de,serverPrefetch:de,components:Et,directives:Et,watch:Jl,provide:Vn,inject:Gl};function Vn(e,t){return t?e?function(){return ce(K(e)?e.call(this,this):e,K(t)?t.call(this,this):t)}:t:e}function Gl(e,t){return Et(Gs(e),Gs(t))}function Gs(e){if(V(e)){const t={};for(let s=0;st==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${ze(t)}Modifiers`]||e[`${et(t)}Modifiers`];function Ql(e,t,...s){if(e.isUnmounted)return;const n=e.vnode.props||ee;let i=s;const r=t.startsWith("update:"),l=r&&Zl(n,t.slice(7));l&&(l.trim&&(i=s.map(a=>ie(a)?a.trim():a)),l.number&&(i=s.map(ms)));let o,c=n[o=As(t)]||n[o=As(ze(t))];!c&&r&&(c=n[o=As(et(t))]),c&&He(c,e,6,i);const d=n[o+"Once"];if(d){if(!e.emitted)e.emitted={};else if(e.emitted[o])return;e.emitted[o]=!0,He(d,e,6,i)}}const zl=new WeakMap;function Yi(e,t,s=!1){const n=s?zl:t.emitsCache,i=n.get(e);if(i!==void 0)return i;const r=e.emits;let l={},o=!1;if(!K(e)){const c=d=>{const a=Yi(d,t,!0);a&&(o=!0,ce(l,a))};!s&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!r&&!o?(z(e)&&n.set(e,null),null):(V(r)?r.forEach(c=>l[c]=null):ce(l,r),z(e)&&n.set(e,l),l)}function xs(e,t){return!e||!$t(t)?!1:(t=t.slice(2).replace(/Once$/,""),Z(e,t[0].toLowerCase()+t.slice(1))||Z(e,et(t))||Z(e,t))}function Is(e){const{type:t,vnode:s,proxy:n,withProxy:i,propsOptions:[r],slots:l,attrs:o,emit:c,render:d,renderCache:a,props:h,data:b,setupState:S,ctx:O,inheritAttrs:F}=e,k=us(e);let U,D;try{if(s.shapeFlag&4){const m=i||n,T=m;U=Te(d.call(T,m,a,h,S,b,O)),D=o}else{const m=t;U=Te(m.length>1?m(h,{attrs:o,slots:l,emit:c}):m(h,null)),D=t.props?o:to(o)}}catch(m){Rt.length=0,Wt(m,e,1),U=ae(Fe)}let p=U;if(D&&F!==!1){const m=Object.keys(D),{shapeFlag:T}=p;m.length&&T&7&&(r&&m.some(en)&&(D=so(D,r)),p=xt(p,D,!1,!0))}return s.dirs&&(p=xt(p,null,!1,!0),p.dirs=p.dirs?p.dirs.concat(s.dirs):s.dirs),s.transition&&mn(p,s.transition),U=p,us(k),U}function eo(e,t=!0){let s;for(let n=0;n{let t;for(const s in e)(s==="class"||s==="style"||$t(s))&&((t||(t={}))[s]=e[s]);return t},so=(e,t)=>{const s={};for(const n in e)(!en(n)||!(n.slice(9)in t))&&(s[n]=e[n]);return s};function no(e,t,s){const{props:n,children:i,component:r}=e,{props:l,children:o,patchFlag:c}=t,d=r.emitsOptions;if(t.dirs||t.transition)return!0;if(s&&c>=0){if(c&1024)return!0;if(c&16)return n?Kn(n,l,d):!!l;if(c&8){const a=t.dynamicProps;for(let h=0;hObject.create(Zi),zi=e=>Object.getPrototypeOf(e)===Zi;function io(e,t,s,n=!1){const i={},r=Qi();e.propsDefaults=Object.create(null),er(e,t,i,r);for(const l in e.propsOptions[0])l in i||(i[l]=void 0);s?e.props=n?i:ll(i):e.type.props?e.props=i:e.props=r,e.attrs=r}function ro(e,t,s,n){const{props:i,attrs:r,vnode:{patchFlag:l}}=e,o=X(i),[c]=e.propsOptions;let d=!1;if((n||l>0)&&!(l&16)){if(l&8){const a=e.vnode.dynamicProps;for(let h=0;h{c=!0;const[b,S]=tr(h,t,!0);ce(l,b),S&&o.push(...S)};!s&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}if(!r&&!c)return z(e)&&n.set(e,at),at;if(V(r))for(let a=0;ae==="_"||e==="_ctx"||e==="$stable",bn=e=>V(e)?e.map(Te):[Te(e)],oo=(e,t,s)=>{if(t._n)return t;const n=bl((...i)=>bn(t(...i)),s);return n._c=!1,n},sr=(e,t,s)=>{const n=e._ctx;for(const i in e){if(_n(i))continue;const r=e[i];if(K(r))t[i]=oo(i,r,n);else if(r!=null){const l=bn(r);t[i]=()=>l}}},nr=(e,t)=>{const s=bn(t);e.slots.default=()=>s},ir=(e,t,s)=>{for(const n in t)(s||!_n(n))&&(e[n]=t[n])},co=(e,t,s)=>{const n=e.slots=Qi();if(e.vnode.shapeFlag&32){const i=t._;i?(ir(n,t,s),s&&pi(n,"_",i,!0)):sr(t,n)}else t&&nr(e,t)},fo=(e,t,s)=>{const{vnode:n,slots:i}=e;let r=!0,l=ee;if(n.shapeFlag&32){const o=t._;o?s&&o===1?r=!1:ir(i,t,s):(r=!t.$stable,sr(t,i)),l=t}else t&&(nr(e,t),l={default:1});if(r)for(const o in i)!_n(o)&&l[o]==null&&delete i[o]},oe=ar;function uo(e){return rr(e)}function ao(e){return rr(e,Ml)}function rr(e,t){const s=_s();s.__VUE__=!0;const{insert:n,remove:i,patchProp:r,createElement:l,createText:o,createComment:c,setText:d,setElementText:a,parentNode:h,nextSibling:b,setScopeId:S=De,insertStaticContent:O}=e,F=(f,u,g,v=null,_=null,y=null,A=void 0,C=null,w=!!u.dynamicChildren)=>{if(f===u)return;f&&!Ye(f,u)&&(v=Gt(f),Oe(f,_,y,!0),f=null),u.patchFlag===-2&&(w=!1,u.dynamicChildren=null);const{type:x,ref:j,shapeFlag:E}=u;switch(x){case lt:k(f,u,g,v);break;case Fe:U(f,u,g,v);break;case is:f==null&&D(u,g,v,A);break;case Ae:J(f,u,g,v,_,y,A,C,w);break;default:E&1?T(f,u,g,v,_,y,A,C,w):E&6?Y(f,u,g,v,_,y,A,C,w):(E&64||E&128)&&x.process(f,u,g,v,_,y,A,C,w,ot)}j!=null&&_?pt(j,f&&f.ref,y,u||f,!u):j==null&&f&&f.ref!=null&&pt(f.ref,null,y,f,!0)},k=(f,u,g,v)=>{if(f==null)n(u.el=o(u.children),g,v);else{const _=u.el=f.el;u.children!==f.children&&d(_,u.children)}},U=(f,u,g,v)=>{f==null?n(u.el=c(u.children||""),g,v):u.el=f.el},D=(f,u,g,v)=>{[f.el,f.anchor]=O(f.children,u,g,v,f.el,f.anchor)},p=({el:f,anchor:u},g,v)=>{let _;for(;f&&f!==u;)_=b(f),n(f,g,v),f=_;n(u,g,v)},m=({el:f,anchor:u})=>{let g;for(;f&&f!==u;)g=b(f),i(f),f=g;i(u)},T=(f,u,g,v,_,y,A,C,w)=>{if(u.type==="svg"?A="svg":u.type==="math"&&(A="mathml"),f==null)M(u,g,v,_,y,A,C,w);else{const x=f.el&&f.el._isVueCE?f.el:null;try{x&&x._beginPatch(),H(f,u,_,y,A,C,w)}finally{x&&x._endPatch()}}},M=(f,u,g,v,_,y,A,C)=>{let w,x;const{props:j,shapeFlag:E,transition:I,dirs:$}=f;if(w=f.el=l(f.type,y,j&&j.is,j),E&8?a(w,f.children):E&16&&L(f.children,w,null,v,_,Ds(f,y),A,C),$&&Ie(f,null,v,"created"),B(w,f,f.scopeId,A,v),j){for(const te in j)te!=="value"&&!it(te)&&r(w,te,null,j[te],y,v);"value"in j&&r(w,"value",null,j.value,y),(x=j.onVnodeBeforeMount)&&ve(x,v,f)}$&&Ie(f,null,v,"beforeMount");const G=lr(_,I);G&&I.beforeEnter(w),n(w,u,g),((x=j&&j.onVnodeMounted)||G||$)&&oe(()=>{x&&ve(x,v,f),G&&I.enter(w),$&&Ie(f,null,v,"mounted")},_)},B=(f,u,g,v,_)=>{if(g&&S(f,g),v)for(let y=0;y{for(let x=w;x{const C=u.el=f.el;let{patchFlag:w,dynamicChildren:x,dirs:j}=u;w|=f.patchFlag&16;const E=f.props||ee,I=u.props||ee;let $;if(g&&st(g,!1),($=I.onVnodeBeforeUpdate)&&ve($,g,u,f),j&&Ie(u,f,g,"beforeUpdate"),g&&st(g,!0),(E.innerHTML&&I.innerHTML==null||E.textContent&&I.textContent==null)&&a(C,""),x?P(f.dynamicChildren,x,C,g,v,Ds(u,_),y):A||R(f,u,C,null,g,v,Ds(u,_),y,!1),w>0){if(w&16)q(C,E,I,g,_);else if(w&2&&E.class!==I.class&&r(C,"class",null,I.class,_),w&4&&r(C,"style",E.style,I.style,_),w&8){const G=u.dynamicProps;for(let te=0;te{$&&ve($,g,u,f),j&&Ie(u,f,g,"updated")},v)},P=(f,u,g,v,_,y,A)=>{for(let C=0;C{if(u!==g){if(u!==ee)for(const y in u)!it(y)&&!(y in g)&&r(f,y,u[y],null,_,v);for(const y in g){if(it(y))continue;const A=g[y],C=u[y];A!==C&&y!=="value"&&r(f,y,C,A,_,v)}"value"in g&&r(f,"value",u.value,g.value,_)}},J=(f,u,g,v,_,y,A,C,w)=>{const x=u.el=f?f.el:o(""),j=u.anchor=f?f.anchor:o("");let{patchFlag:E,dynamicChildren:I,slotScopeIds:$}=u;$&&(C=C?C.concat($):$),f==null?(n(x,g,v),n(j,g,v),L(u.children||[],g,j,_,y,A,C,w)):E>0&&E&64&&I&&f.dynamicChildren&&f.dynamicChildren.length===I.length?(P(f.dynamicChildren,I,g,_,y,A,C),(u.key!=null||_&&u===_.subTree)&&yn(f,u,!0)):R(f,u,g,j,_,y,A,C,w)},Y=(f,u,g,v,_,y,A,C,w)=>{u.slotScopeIds=C,f==null?u.shapeFlag&512?_.ctx.activate(u,g,v,A,w):re(u,g,v,_,y,A,w):le(f,u,w)},re=(f,u,g,v,_,y,A)=>{const C=f.component=Ao(f,v,_);if(Ui(f)&&(C.ctx.renderer=ot),Mo(C,!1,A),C.asyncDep){if(_&&_.registerDep(C,N,A),!f.el){const w=C.subTree=ae(Fe);U(null,w,u,g),f.placeholder=w.el}}else N(C,f,u,g,_,y,A)},le=(f,u,g)=>{const v=u.component=f.component;if(no(f,u,g))if(v.asyncDep&&!v.asyncResolved){W(v,u,g);return}else v.next=u,v.update();else u.el=f.el,v.vnode=u},N=(f,u,g,v,_,y,A)=>{const C=()=>{if(f.isMounted){let{next:E,bu:I,u:$,parent:G,vnode:te}=f;{const ye=or(f);if(ye){E&&(E.el=te.el,W(f,E,A)),ye.asyncDep.then(()=>{oe(()=>{f.isUnmounted||x()},_)});return}}let Q=E,me;st(f,!1),E?(E.el=te.el,W(f,E,A)):E=te,I&&ts(I),(me=E.props&&E.props.onVnodeBeforeUpdate)&&ve(me,G,E,te),st(f,!0);const fe=Is(f),Ce=f.subTree;f.subTree=fe,F(Ce,fe,h(Ce.el),Gt(Ce),f,_,y),E.el=fe.el,Q===null&&Ts(f,fe.el),$&&oe($,_),(me=E.props&&E.props.onVnodeUpdated)&&oe(()=>ve(me,G,E,te),_)}else{let E;const{el:I,props:$}=u,{bm:G,m:te,parent:Q,root:me,type:fe}=f,Ce=gt(u);if(st(f,!1),G&&ts(G),!Ce&&(E=$&&$.onVnodeBeforeMount)&&ve(E,Q,u),st(f,!0),I&&Cs){const ye=()=>{f.subTree=Is(f),Cs(I,f.subTree,f,_,null)};Ce&&fe.__asyncHydrate?fe.__asyncHydrate(I,f,ye):ye()}else{me.ce&&me.ce._hasShadowRoot()&&me.ce._injectChildStyle(fe);const ye=f.subTree=Is(f);F(null,ye,g,v,f,_,y),u.el=ye.el}if(te&&oe(te,_),!Ce&&(E=$&&$.onVnodeMounted)){const ye=u;oe(()=>ve(E,Q,ye),_)}(u.shapeFlag&256||Q&>(Q.vnode)&&Q.vnode.shapeFlag&256)&&f.a&&oe(f.a,_),f.isMounted=!0,u=g=v=null}};f.scope.on();const w=f.effect=new bi(C);f.scope.off();const x=f.update=w.run.bind(w),j=f.job=w.runIfDirty.bind(w);j.i=f,j.id=f.uid,w.scheduler=()=>gn(j),st(f,!0),x()},W=(f,u,g)=>{u.component=f;const v=f.vnode.props;f.vnode=u,f.next=null,ro(f,u.props,v,g),fo(f,u.children,g),Ue(),On(f),We()},R=(f,u,g,v,_,y,A,C,w=!1)=>{const x=f&&f.children,j=f?f.shapeFlag:0,E=u.children,{patchFlag:I,shapeFlag:$}=u;if(I>0){if(I&128){qt(x,E,g,v,_,y,A,C,w);return}else if(I&256){ne(x,E,g,v,_,y,A,C,w);return}}$&8?(j&16&&St(x,_,y),E!==x&&a(g,E)):j&16?$&16?qt(x,E,g,v,_,y,A,C,w):St(x,_,y,!0):(j&8&&a(g,""),$&16&&L(E,g,v,_,y,A,C,w))},ne=(f,u,g,v,_,y,A,C,w)=>{f=f||at,u=u||at;const x=f.length,j=u.length,E=Math.min(x,j);let I;for(I=0;Ij?St(f,_,y,!0,!1,E):L(u,g,v,_,y,A,C,w,E)},qt=(f,u,g,v,_,y,A,C,w)=>{let x=0;const j=u.length;let E=f.length-1,I=j-1;for(;x<=E&&x<=I;){const $=f[x],G=u[x]=w?je(u[x]):Te(u[x]);if(Ye($,G))F($,G,g,null,_,y,A,C,w);else break;x++}for(;x<=E&&x<=I;){const $=f[E],G=u[I]=w?je(u[I]):Te(u[I]);if(Ye($,G))F($,G,g,null,_,y,A,C,w);else break;E--,I--}if(x>E){if(x<=I){const $=I+1,G=$I)for(;x<=E;)Oe(f[x],_,y,!0),x++;else{const $=x,G=x,te=new Map;for(x=G;x<=I;x++){const xe=u[x]=w?je(u[x]):Te(u[x]);xe.key!=null&&te.set(xe.key,x)}let Q,me=0;const fe=I-G+1;let Ce=!1,ye=0;const Ct=new Array(fe);for(x=0;x=fe){Oe(xe,_,y,!0);continue}let Pe;if(xe.key!=null)Pe=te.get(xe.key);else for(Q=G;Q<=I;Q++)if(Ct[Q-G]===0&&Ye(xe,u[Q])){Pe=Q;break}Pe===void 0?Oe(xe,_,y,!0):(Ct[Pe-G]=x+1,Pe>=ye?ye=Pe:Ce=!0,F(xe,u[Pe],g,null,_,y,A,C,w),me++)}const wn=Ce?ho(Ct):at;for(Q=wn.length-1,x=fe-1;x>=0;x--){const xe=G+x,Pe=u[xe],Sn=u[xe+1],Cn=xe+1{const{el:y,type:A,transition:C,children:w,shapeFlag:x}=f;if(x&6){tt(f.component.subTree,u,g,v);return}if(x&128){f.suspense.move(u,g,v);return}if(x&64){A.move(f,u,g,ot);return}if(A===Ae){n(y,u,g);for(let E=0;EC.enter(y),_);else{const{leave:E,delayLeave:I,afterLeave:$}=C,G=()=>{f.ctx.isUnmounted?i(y):n(y,u,g)},te=()=>{y._isLeaving&&y[Cl](!0),E(y,()=>{G(),$&&$()})};I?I(y,G,te):te()}else n(y,u,g)},Oe=(f,u,g,v=!1,_=!1)=>{const{type:y,props:A,ref:C,children:w,dynamicChildren:x,shapeFlag:j,patchFlag:E,dirs:I,cacheIndex:$}=f;if(E===-2&&(_=!1),C!=null&&(Ue(),pt(C,null,g,f,!0),We()),$!=null&&(u.renderCache[$]=void 0),j&256){u.ctx.deactivate(f);return}const G=j&1&&I,te=!gt(f);let Q;if(te&&(Q=A&&A.onVnodeBeforeUnmount)&&ve(Q,u,f),j&6)Ar(f.component,g,v);else{if(j&128){f.suspense.unmount(g,v);return}G&&Ie(f,null,u,"beforeUnmount"),j&64?f.type.remove(f,u,g,ot,v):x&&!x.hasOnce&&(y!==Ae||E>0&&E&64)?St(x,u,g,!1,!0):(y===Ae&&E&384||!_&&j&16)&&St(w,u,g),v&&Tn(f)}(te&&(Q=A&&A.onVnodeUnmounted)||G)&&oe(()=>{Q&&ve(Q,u,f),G&&Ie(f,null,u,"unmounted")},g)},Tn=f=>{const{type:u,el:g,anchor:v,transition:_}=f;if(u===Ae){Cr(g,v);return}if(u===is){m(f);return}const y=()=>{i(g),_&&!_.persisted&&_.afterLeave&&_.afterLeave()};if(f.shapeFlag&1&&_&&!_.persisted){const{leave:A,delayLeave:C}=_,w=()=>A(g,y);C?C(f.el,y,w):w()}else y()},Cr=(f,u)=>{let g;for(;f!==u;)g=b(f),i(f),f=g;i(u)},Ar=(f,u,g)=>{const{bum:v,scope:_,job:y,subTree:A,um:C,m:w,a:x}=f;Wn(w),Wn(x),v&&ts(v),_.stop(),y&&(y.flags|=8,Oe(A,f,u,g)),C&&oe(C,u),oe(()=>{f.isUnmounted=!0},u)},St=(f,u,g,v=!1,_=!1,y=0)=>{for(let A=y;A{if(f.shapeFlag&6)return Gt(f.component.subTree);if(f.shapeFlag&128)return f.suspense.next();const u=b(f.anchor||f.el),g=u&&u[Vi];return g?b(g):u};let ws=!1;const vn=(f,u,g)=>{let v;f==null?u._vnode&&(Oe(u._vnode,null,null,!0),v=u._vnode.component):F(u._vnode||null,f,u,null,null,null,g),u._vnode=f,ws||(ws=!0,On(v),fs(),ws=!1)},ot={p:F,um:Oe,m:tt,r:Tn,mt:re,mc:L,pc:R,pbc:P,n:Gt,o:e};let Ss,Cs;return t&&([Ss,Cs]=t(ot)),{render:vn,hydrate:Ss,createApp:Xl(vn,Ss)}}function Ds({type:e,props:t},s){return s==="svg"&&e==="foreignObject"||s==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:s}function st({effect:e,job:t},s){s?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function lr(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function yn(e,t,s=!1){const n=e.children,i=t.children;if(V(n)&&V(i))for(let r=0;r>1,e[s[o]]0&&(t[n]=s[r-1]),s[r]=n)}}for(r=s.length,l=s[r-1];r-- >0;)s[r]=l,l=t[l];return s}function or(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:or(t)}function Wn(e){if(e)for(let t=0;te.__isSuspense;let Ys=0;const po={name:"Suspense",__isSuspense:!0,process(e,t,s,n,i,r,l,o,c,d){if(e==null)go(t,s,n,i,r,l,o,c,d);else{if(r&&r.deps>0&&!e.suspense.isInFallback){t.suspense=e.suspense,t.suspense.vnode=t,t.el=e.el;return}mo(e,t,s,n,i,l,o,c,d)}},hydrate:_o,normalize:bo},ac=po;function Bt(e,t){const s=e.props&&e.props[t];K(s)&&s()}function go(e,t,s,n,i,r,l,o,c){const{p:d,o:{createElement:a}}=c,h=a("div"),b=e.suspense=ur(e,i,n,t,h,s,r,l,o,c);d(null,b.pendingBranch=e.ssContent,h,null,n,b,r,l),b.deps>0?(Bt(e,"onPending"),Bt(e,"onFallback"),d(null,e.ssFallback,t,s,n,null,r,l),_t(b,e.ssFallback)):b.resolve(!1,!0)}function mo(e,t,s,n,i,r,l,o,{p:c,um:d,o:{createElement:a}}){const h=t.suspense=e.suspense;h.vnode=t,t.el=e.el;const b=t.ssContent,S=t.ssFallback,{activeBranch:O,pendingBranch:F,isInFallback:k,isHydrating:U}=h;if(F)h.pendingBranch=b,Ye(F,b)?(c(F,b,h.hiddenContainer,null,i,h,r,l,o),h.deps<=0?h.resolve():k&&(U||(c(O,S,s,n,i,null,r,l,o),_t(h,S)))):(h.pendingId=Ys++,U?(h.isHydrating=!1,h.activeBranch=F):d(F,i,h),h.deps=0,h.effects.length=0,h.hiddenContainer=a("div"),k?(c(null,b,h.hiddenContainer,null,i,h,r,l,o),h.deps<=0?h.resolve():(c(O,S,s,n,i,null,r,l,o),_t(h,S))):O&&Ye(O,b)?(c(O,b,s,n,i,h,r,l,o),h.resolve(!0)):(c(null,b,h.hiddenContainer,null,i,h,r,l,o),h.deps<=0&&h.resolve()));else if(O&&Ye(O,b))c(O,b,s,n,i,h,r,l,o),_t(h,b);else if(Bt(t,"onPending"),h.pendingBranch=b,b.shapeFlag&512?h.pendingId=b.component.suspenseId:h.pendingId=Ys++,c(null,b,h.hiddenContainer,null,i,h,r,l,o),h.deps<=0)h.resolve();else{const{timeout:D,pendingId:p}=h;D>0?setTimeout(()=>{h.pendingId===p&&h.fallback(S)},D):D===0&&h.fallback(S)}}function ur(e,t,s,n,i,r,l,o,c,d,a=!1){const{p:h,m:b,um:S,n:O,o:{parentNode:F,remove:k}}=d;let U;const D=yo(e);D&&t&&t.pendingBranch&&(U=t.pendingId,t.deps++);const p=e.props?Pr(e.props.timeout):void 0,m=r,T={vnode:e,parent:t,parentComponent:s,namespace:l,container:n,hiddenContainer:i,deps:0,pendingId:Ys++,timeout:typeof p=="number"?p:-1,activeBranch:null,pendingBranch:null,isInFallback:!a,isHydrating:a,isUnmounted:!1,effects:[],resolve(M=!1,B=!1){const{vnode:L,activeBranch:H,pendingBranch:P,pendingId:q,effects:J,parentComponent:Y,container:re,isInFallback:le}=T;let N=!1;T.isHydrating?T.isHydrating=!1:M||(N=H&&P.transition&&P.transition.mode==="out-in",N&&(H.transition.afterLeave=()=>{q===T.pendingId&&(b(P,re,r===m?O(H):r,0),Ks(J),le&&L.ssFallback&&(L.ssFallback.el=null))}),H&&(F(H.el)===re&&(r=O(H)),S(H,Y,T,!0),!N&&le&&L.ssFallback&&oe(()=>L.ssFallback.el=null,T)),N||b(P,re,r,0)),_t(T,P),T.pendingBranch=null,T.isInFallback=!1;let W=T.parent,R=!1;for(;W;){if(W.pendingBranch){W.effects.push(...J),R=!0;break}W=W.parent}!R&&!N&&Ks(J),T.effects=[],D&&t&&t.pendingBranch&&U===t.pendingId&&(t.deps--,t.deps===0&&!B&&t.resolve()),Bt(L,"onResolve")},fallback(M){if(!T.pendingBranch)return;const{vnode:B,activeBranch:L,parentComponent:H,container:P,namespace:q}=T;Bt(B,"onFallback");const J=O(L),Y=()=>{T.isInFallback&&(h(null,M,P,J,H,null,q,o,c),_t(T,M))},re=M.transition&&M.transition.mode==="out-in";re&&(L.transition.afterLeave=Y),T.isInFallback=!0,S(L,H,null,!0),re||Y()},move(M,B,L){T.activeBranch&&b(T.activeBranch,M,B,L),T.container=M},next(){return T.activeBranch&&O(T.activeBranch)},registerDep(M,B,L){const H=!!T.pendingBranch;H&&T.deps++;const P=M.vnode.el;M.asyncDep.catch(q=>{Wt(q,M,0)}).then(q=>{if(M.isUnmounted||T.isUnmounted||T.pendingId!==M.suspenseId)return;M.asyncResolved=!0;const{vnode:J}=M;Zs(M,q),P&&(J.el=P);const Y=!P&&M.subTree.el;B(M,J,F(P||M.subTree.el),P?null:O(M.subTree),T,l,L),Y&&(J.placeholder=null,k(Y)),Ts(M,J.el),H&&--T.deps===0&&T.resolve()})},unmount(M,B){T.isUnmounted=!0,T.activeBranch&&S(T.activeBranch,s,M,B),T.pendingBranch&&S(T.pendingBranch,s,M,B)}};return T}function _o(e,t,s,n,i,r,l,o,c){const d=t.suspense=ur(t,n,s,e.parentNode,document.createElement("div"),null,i,r,l,o,!0),a=c(e,d.pendingBranch=t.ssContent,s,d,r,l);return d.deps===0&&d.resolve(!1,!0),a}function bo(e){const{shapeFlag:t,children:s}=e,n=t&32;e.ssContent=kn(n?s.default:s),e.ssFallback=n?kn(s.fallback):ae(Fe)}function kn(e){let t;if(K(e)){const s=yt&&e._c;s&&(e._d=!1,hr()),e=e(),s&&(e._d=!0,t=be,dr())}return V(e)&&(e=eo(e)),e=Te(e),t&&!e.dynamicChildren&&(e.dynamicChildren=t.filter(s=>s!==e)),e}function ar(e,t){t&&t.pendingBranch?V(e)?t.effects.push(...e):t.effects.push(e):Ks(e)}function _t(e,t){e.activeBranch=t;const{vnode:s,parentComponent:n}=e;let i=t.el;for(;!i&&t.component;)t=t.component.subTree,i=t.el;s.el=i,n&&n.subTree===s&&(n.vnode.el=i,Ts(n,i))}function yo(e){const t=e.props&&e.props.suspensible;return t!=null&&t!==!1}const Ae=Symbol.for("v-fgt"),lt=Symbol.for("v-txt"),Fe=Symbol.for("v-cmt"),is=Symbol.for("v-stc"),Rt=[];let be=null;function hr(e=!1){Rt.push(be=e?null:[])}function dr(){Rt.pop(),be=Rt[Rt.length-1]||null}let yt=1;function ds(e,t=!1){yt+=e,e<0&&be&&t&&(be.hasOnce=!0)}function pr(e){return e.dynamicChildren=yt>0?be||at:null,dr(),yt>0&&be&&be.push(e),e}function hc(e,t,s,n,i,r){return pr(mr(e,t,s,n,i,r,!0))}function xo(e,t,s,n,i){return pr(ae(e,t,s,n,i,!0))}function Lt(e){return e?e.__v_isVNode===!0:!1}function Ye(e,t){return e.type===t.type&&e.key===t.key}const gr=({key:e})=>e??null,rs=({ref:e,ref_key:t,ref_for:s})=>(typeof e=="number"&&(e=""+e),e!=null?ie(e)||he(e)||K(e)?{i:we,r:e,k:t,f:!!s}:e:null);function mr(e,t=null,s=null,n=0,i=null,r=e===Ae?0:1,l=!1,o=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&gr(t),ref:t&&rs(t),scopeId:Bi,slotScopeIds:null,children:s,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:r,patchFlag:n,dynamicProps:i,dynamicChildren:null,appContext:null,ctx:we};return o?(xn(c,s),r&128&&e.normalize(c)):s&&(c.shapeFlag|=ie(s)?8:16),yt>0&&!l&&be&&(c.patchFlag>0||r&6)&&c.patchFlag!==32&&be.push(c),c}const ae=To;function To(e,t=null,s=null,n=0,i=null,r=!1){if((!e||e===Kl)&&(e=Fe),Lt(e)){const o=xt(e,t,!0);return s&&xn(o,s),yt>0&&!r&&be&&(o.shapeFlag&6?be[be.indexOf(e)]=o:be.push(o)),o.patchFlag=-2,o}if(Ro(e)&&(e=e.__vccOpts),t){t=vo(t);let{class:o,style:c}=t;o&&!ie(o)&&(t.class=rn(o)),z(c)&&(pn(c)&&!V(c)&&(c=ce({},c)),t.style=nn(c))}const l=ie(e)?1:fr(e)?128:wl(e)?64:z(e)?4:K(e)?2:0;return mr(e,t,s,n,i,l,r,!0)}function vo(e){return e?pn(e)||zi(e)?ce({},e):e:null}function xt(e,t,s=!1,n=!1){const{props:i,ref:r,patchFlag:l,children:o,transition:c}=e,d=t?wo(i||{},t):i,a={__v_isVNode:!0,__v_skip:!0,type:e.type,props:d,key:d&&gr(d),ref:t&&t.ref?s&&r?V(r)?r.concat(rs(t)):[r,rs(t)]:rs(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:o,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Ae?l===-1?16:l|16:l,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&xt(e.ssContent),ssFallback:e.ssFallback&&xt(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&n&&mn(a,c.clone(a)),a}function _r(e=" ",t=0){return ae(lt,null,e,t)}function dc(e="",t=!1){return t?(hr(),xo(Fe,null,e)):ae(Fe,null,e)}function Te(e){return e==null||typeof e=="boolean"?ae(Fe):V(e)?ae(Ae,null,e.slice()):Lt(e)?je(e):ae(lt,null,String(e))}function je(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:xt(e)}function xn(e,t){let s=0;const{shapeFlag:n}=e;if(t==null)t=null;else if(V(t))s=16;else if(typeof t=="object")if(n&65){const i=t.default;i&&(i._c&&(i._d=!1),xn(e,i()),i._c&&(i._d=!0));return}else{s=32;const i=t._;!i&&!zi(t)?t._ctx=we:i===3&&we&&(we.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else K(t)?(t={default:t,_ctx:we},s=32):(t=String(t),n&64?(s=16,t=[_r(t)]):s=8);e.children=t,e.shapeFlag|=s}function wo(...e){const t={};for(let s=0;sge||we;let ps,Xs;{const e=_s(),t=(s,n)=>{let i;return(i=e[s])||(i=e[s]=[]),i.push(n),r=>{i.length>1?i.forEach(l=>l(r)):i[0](r)}};ps=t("__VUE_INSTANCE_SETTERS__",s=>ge=s),Xs=t("__VUE_SSR_SETTERS__",s=>jt=s)}const kt=e=>{const t=ge;return ps(e),e.scope.on(),()=>{e.scope.off(),ps(t)}},qn=()=>{ge&&ge.scope.off(),ps(null)};function br(e){return e.vnode.shapeFlag&4}let jt=!1;function Mo(e,t=!1,s=!1){t&&Xs(t);const{props:n,children:i}=e.vnode,r=br(e);io(e,n,r,t),co(e,i,s||t);const l=r?Fo(e,t):void 0;return t&&Xs(!1),l}function Fo(e,t){const s=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Ul);const{setup:n}=s;if(n){Ue();const i=e.setupContext=n.length>1?Po(e):null,r=kt(e),l=Ut(n,e,0,[e.props,i]),o=ui(l);if(We(),r(),(o||e.sp)&&!gt(e)&&Ki(e),o){if(l.then(qn,qn),t)return l.then(c=>{Zs(e,c)}).catch(c=>{Wt(c,e,0)});e.asyncDep=l}else Zs(e,l)}else yr(e)}function Zs(e,t,s){K(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:z(t)&&(e.setupState=Ri(t)),yr(e)}function yr(e,t,s){const n=e.type;e.render||(e.render=n.render||De);{const i=kt(e);Ue();try{Wl(e)}finally{We(),i()}}}const Oo={get(e,t){return ue(e,"get",""),e[t]}};function Po(e){const t=s=>{e.exposed=s||{}};return{attrs:new Proxy(e.attrs,Oo),slots:e.slots,emit:e.emit,expose:t}}function vs(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Ri(ol(e.exposed)),{get(t,s){if(s in t)return t[s];if(s in Pt)return Pt[s](e)},has(t,s){return s in t||s in Pt}})):e.proxy}function Ro(e){return K(e)&&"__vccOpts"in e}const Io=(e,t)=>dl(e,t,jt);function pc(e,t,s){try{ds(-1);const n=arguments.length;return n===2?z(t)&&!V(t)?Lt(t)?ae(e,null,[t]):ae(e,t):ae(e,null,t):(n>3?s=Array.prototype.slice.call(arguments,2):n===3&&Lt(s)&&(s=[s]),ae(e,t,s))}finally{ds(1)}}const Do="3.5.28";/** +* @vue/runtime-dom v3.5.28 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let Qs;const Gn=typeof window<"u"&&window.trustedTypes;if(Gn)try{Qs=Gn.createPolicy("vue",{createHTML:e=>e})}catch{}const xr=Qs?e=>Qs.createHTML(e):e=>e,No="http://www.w3.org/2000/svg",Ho="http://www.w3.org/1998/Math/MathML",Le=typeof document<"u"?document:null,Jn=Le&&Le.createElement("template"),Bo={insert:(e,t,s)=>{t.insertBefore(e,s||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,s,n)=>{const i=t==="svg"?Le.createElementNS(No,e):t==="mathml"?Le.createElementNS(Ho,e):s?Le.createElement(e,{is:s}):Le.createElement(e);return e==="select"&&n&&n.multiple!=null&&i.setAttribute("multiple",n.multiple),i},createText:e=>Le.createTextNode(e),createComment:e=>Le.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Le.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,s,n,i,r){const l=s?s.previousSibling:t.lastChild;if(i&&(i===r||i.nextSibling))for(;t.insertBefore(i.cloneNode(!0),s),!(i===r||!(i=i.nextSibling)););else{Jn.innerHTML=xr(n==="svg"?`${e}`:n==="mathml"?`${e}`:e);const o=Jn.content;if(n==="svg"||n==="mathml"){const c=o.firstChild;for(;c.firstChild;)o.appendChild(c.firstChild);o.removeChild(c)}t.insertBefore(o,s)}return[l?l.nextSibling:t.firstChild,s?s.previousSibling:t.lastChild]}},Lo=Symbol("_vtc");function jo(e,t,s){const n=e[Lo];n&&(t=(t?[t,...n]:[...n]).join(" ")),t==null?e.removeAttribute("class"):s?e.setAttribute("class",t):e.className=t}const Yn=Symbol("_vod"),Vo=Symbol("_vsh"),$o=Symbol(""),Ko=/(?:^|;)\s*display\s*:/;function Uo(e,t,s){const n=e.style,i=ie(s);let r=!1;if(s&&!i){if(t)if(ie(t))for(const l of t.split(";")){const o=l.slice(0,l.indexOf(":")).trim();s[o]==null&&ls(n,o,"")}else for(const l in t)s[l]==null&&ls(n,l,"");for(const l in s)l==="display"&&(r=!0),ls(n,l,s[l])}else if(i){if(t!==s){const l=n[$o];l&&(s+=";"+l),n.cssText=s,r=Ko.test(s)}}else t&&e.removeAttribute("style");Yn in e&&(e[Yn]=r?n.display:"",e[Vo]&&(n.display="none"))}const Xn=/\s*!important$/;function ls(e,t,s){if(V(s))s.forEach(n=>ls(e,t,n));else if(s==null&&(s=""),t.startsWith("--"))e.setProperty(t,s);else{const n=Wo(e,t);Xn.test(s)?e.setProperty(et(n),s.replace(Xn,""),"important"):e[n]=s}}const Zn=["Webkit","Moz","ms"],Ns={};function Wo(e,t){const s=Ns[t];if(s)return s;let n=ze(t);if(n!=="filter"&&n in e)return Ns[t]=n;n=di(n);for(let i=0;iHs||(Jo.then(()=>Hs=0),Hs=Date.now());function Xo(e,t){const s=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=s.attached)return;He(Zo(n,s.value),t,5,[n])};return s.value=e,s.attached=Yo(),s}function Zo(e,t){if(V(t)){const s=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{s.call(e),e._stopped=!0},t.map(n=>i=>!i._stopped&&n&&n(i))}else return t}const ni=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Qo=(e,t,s,n,i,r)=>{const l=i==="svg";t==="class"?jo(e,n,l):t==="style"?Uo(e,s,n):$t(t)?en(t)||qo(e,t,s,n,r):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):zo(e,t,n,l))?(ei(e,t,n),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&zn(e,t,n,l,r,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!ie(n))?ei(e,ze(t),n,r,t):(t==="true-value"?e._trueValue=n:t==="false-value"&&(e._falseValue=n),zn(e,t,n,l))};function zo(e,t,s,n){if(n)return!!(t==="innerHTML"||t==="textContent"||t in e&&ni(t)&&K(s));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const i=e.tagName;if(i==="IMG"||i==="VIDEO"||i==="CANVAS"||i==="SOURCE")return!1}return ni(t)&&ie(s)?!1:t in e}const Tt=e=>{const t=e.props["onUpdate:modelValue"]||!1;return V(t)?s=>ts(t,s):t};function ec(e){e.target.composing=!0}function ii(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Ke=Symbol("_assign");function ri(e,t,s){return t&&(e=e.trim()),s&&(e=ms(e)),e}const gc={created(e,{modifiers:{lazy:t,trim:s,number:n}},i){e[Ke]=Tt(i);const r=n||i.props&&i.props.type==="number";Xe(e,t?"change":"input",l=>{l.target.composing||e[Ke](ri(e.value,s,r))}),(s||r)&&Xe(e,"change",()=>{e.value=ri(e.value,s,r)}),t||(Xe(e,"compositionstart",ec),Xe(e,"compositionend",ii),Xe(e,"change",ii))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:s,modifiers:{lazy:n,trim:i,number:r}},l){if(e[Ke]=Tt(l),e.composing)return;const o=(r||e.type==="number")&&!/^0\d/.test(e.value)?ms(e.value):e.value,c=t??"";o!==c&&(document.activeElement===e&&e.type!=="range"&&(n&&t===s||i&&e.value.trim()===c)||(e.value=c))}},mc={deep:!0,created(e,t,s){e[Ke]=Tt(s),Xe(e,"change",()=>{const n=e._modelValue,i=Vt(e),r=e.checked,l=e[Ke];if(V(n)){const o=ln(n,i),c=o!==-1;if(r&&!c)l(n.concat(i));else if(!r&&c){const d=[...n];d.splice(o,1),l(d)}}else if(vt(n)){const o=new Set(n);r?o.add(i):o.delete(i),l(o)}else l(Tr(e,r))})},mounted:li,beforeUpdate(e,t,s){e[Ke]=Tt(s),li(e,t,s)}};function li(e,{value:t,oldValue:s},n){e._modelValue=t;let i;if(V(t))i=ln(t,n.props.value)>-1;else if(vt(t))i=t.has(n.props.value);else{if(t===s)return;i=wt(t,Tr(e,!0))}e.checked!==i&&(e.checked=i)}const _c={deep:!0,created(e,{value:t,modifiers:{number:s}},n){const i=vt(t);Xe(e,"change",()=>{const r=Array.prototype.filter.call(e.options,l=>l.selected).map(l=>s?ms(Vt(l)):Vt(l));e[Ke](e.multiple?i?new Set(r):r:r[0]),e._assigning=!0,Di(()=>{e._assigning=!1})}),e[Ke]=Tt(n)},mounted(e,{value:t}){oi(e,t)},beforeUpdate(e,t,s){e[Ke]=Tt(s)},updated(e,{value:t}){e._assigning||oi(e,t)}};function oi(e,t){const s=e.multiple,n=V(t);if(!(s&&!n&&!vt(t))){for(let i=0,r=e.options.length;iString(d)===String(o)):l.selected=ln(t,o)>-1}else l.selected=t.has(o);else if(wt(Vt(l),t)){e.selectedIndex!==i&&(e.selectedIndex=i);return}}!s&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function Vt(e){return"_value"in e?e._value:e.value}function Tr(e,t){const s=t?"_trueValue":"_falseValue";return s in e?e[s]:t}const tc=["ctrl","shift","alt","meta"],sc={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>tc.some(s=>e[`${s}Key`]&&!t.includes(s))},bc=(e,t)=>{if(!e)return e;const s=e._withMods||(e._withMods={}),n=t.join(".");return s[n]||(s[n]=((i,...r)=>{for(let l=0;l{const s=e._withKeys||(e._withKeys={}),n=t.join(".");return s[n]||(s[n]=(i=>{if(!("key"in i))return;const r=et(i.key);if(t.some(l=>l===r||nc[l]===r))return e(i)}))},vr=ce({patchProp:Qo},Bo);let It,ci=!1;function ic(){return It||(It=uo(vr))}function rc(){return It=ci?It:ao(vr),ci=!0,It}const xc=((...e)=>{const t=ic().createApp(...e),{mount:s}=t;return t.mount=n=>{const i=Sr(n);if(!i)return;const r=t._component;!K(r)&&!r.render&&!r.template&&(r.template=i.innerHTML),i.nodeType===1&&(i.textContent="");const l=s(i,!1,wr(i));return i instanceof Element&&(i.removeAttribute("v-cloak"),i.setAttribute("data-v-app","")),l},t}),Tc=((...e)=>{const t=rc().createApp(...e),{mount:s}=t;return t.mount=n=>{const i=Sr(n);if(i)return s(i,!0,wr(i))},t});function wr(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Sr(e){return ie(e)?document.querySelector(e):e}export{Ae as F,ac as S,cc as T,mr as a,dc as b,hc as c,_r as d,_c as e,mc as f,bc as g,fc as h,lc as i,Ps as j,Io as k,xo as l,Di as m,rn as n,hr as o,yc as p,Dl as q,uc as r,pc as s,jr as t,Tc as u,gc as v,oc as w,xc as x}; diff --git a/dist/client/_astro/runtime-dom.esm-bundler.ALO2-icn.js b/dist/client/_astro/runtime-dom.esm-bundler.ALO2-icn.js deleted file mode 100644 index cf06536..0000000 --- a/dist/client/_astro/runtime-dom.esm-bundler.ALO2-icn.js +++ /dev/null @@ -1,5 +0,0 @@ -import{l as M,j as A,k as m,m as _,p as q,q as Q,s as B,u as Y,v as g,x as k,y as tt,z as et,A as nt,B as it,C as $,D as z,E as st,G as ot,H as W,I as rt,J as ct}from"./runtime-core.esm-bundler.D9KZBfyO.js";/** -* @vue/runtime-dom v3.5.28 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let v;const w=typeof window<"u"&&window.trustedTypes;if(w)try{v=w.createPolicy("vue",{createHTML:t=>t})}catch{}const j=v?t=>v.createHTML(t):t=>t,ft="http://www.w3.org/2000/svg",at="http://www.w3.org/1998/Math/MathML",a=typeof document<"u"?document:null,T=a&&a.createElement("template"),ut={insert:(t,e,n)=>{e.insertBefore(t,n||null)},remove:t=>{const e=t.parentNode;e&&e.removeChild(t)},createElement:(t,e,n,i)=>{const s=e==="svg"?a.createElementNS(ft,t):e==="mathml"?a.createElementNS(at,t):n?a.createElement(t,{is:n}):a.createElement(t);return t==="select"&&i&&i.multiple!=null&&s.setAttribute("multiple",i.multiple),s},createText:t=>a.createTextNode(t),createComment:t=>a.createComment(t),setText:(t,e)=>{t.nodeValue=e},setElementText:(t,e)=>{t.textContent=e},parentNode:t=>t.parentNode,nextSibling:t=>t.nextSibling,querySelector:t=>a.querySelector(t),setScopeId(t,e){t.setAttribute(e,"")},insertStaticContent(t,e,n,i,s,r){const o=n?n.previousSibling:e.lastChild;if(s&&(s===r||s.nextSibling))for(;e.insertBefore(s.cloneNode(!0),n),!(s===r||!(s=s.nextSibling)););else{T.innerHTML=j(i==="svg"?`${t}`:i==="mathml"?`${t}`:t);const c=T.content;if(i==="svg"||i==="mathml"){const f=c.firstChild;for(;f.firstChild;)c.appendChild(f.firstChild);c.removeChild(f)}e.insertBefore(c,n)}return[o?o.nextSibling:e.firstChild,n?n.previousSibling:e.lastChild]}},lt=Symbol("_vtc");function dt(t,e,n){const i=t[lt];i&&(e=(e?[e,...i]:[...i]).join(" ")),e==null?t.removeAttribute("class"):n?t.setAttribute("class",e):t.className=e}const N=Symbol("_vod"),pt=Symbol("_vsh"),mt=Symbol(""),ht=/(?:^|;)\s*display\s*:/;function gt(t,e,n){const i=t.style,s=g(n);let r=!1;if(n&&!s){if(e)if(g(e))for(const o of e.split(";")){const c=o.slice(0,o.indexOf(":")).trim();n[c]==null&&b(i,c,"")}else for(const o in e)n[o]==null&&b(i,o,"");for(const o in n)o==="display"&&(r=!0),b(i,o,n[o])}else if(s){if(e!==n){const o=i[mt];o&&(n+=";"+o),i.cssText=n,r=ht.test(n)}}else e&&t.removeAttribute("style");N in t&&(t[N]=r?i.display:"",t[pt]&&(i.display="none"))}const x=/\s*!important$/;function b(t,e,n){if(m(n))n.forEach(i=>b(t,e,i));else if(n==null&&(n=""),e.startsWith("--"))t.setProperty(e,n);else{const i=St(t,e);x.test(n)?t.setProperty(W(i),n.replace(x,""),"important"):t[i]=n}}const I=["Webkit","Moz","ms"],C={};function St(t,e){const n=C[e];if(n)return n;let i=$(e);if(i!=="filter"&&i in t)return C[e]=i;i=rt(i);for(let s=0;sE||(Et.then(()=>E=0),E=Date.now());function Mt(t,e){const n=i=>{if(!i._vts)i._vts=Date.now();else if(i._vts<=n.attached)return;ct(_t(i,n.value),e,5,[i])};return n.value=t,n.attached=vt(),n}function _t(t,e){if(m(e)){const n=t.stopImmediatePropagation;return t.stopImmediatePropagation=()=>{n.call(t),t._stopped=!0},e.map(i=>s=>!s._stopped&&i&&i(s))}else return e}const V=t=>t.charCodeAt(0)===111&&t.charCodeAt(1)===110&&t.charCodeAt(2)>96&&t.charCodeAt(2)<123,wt=(t,e,n,i,s,r)=>{const o=s==="svg";e==="class"?dt(t,i,o):e==="style"?gt(t,n,i):nt(e)?it(e)||At(t,e,n,i,r):(e[0]==="."?(e=e.slice(1),!0):e[0]==="^"?(e=e.slice(1),!1):Tt(t,e,i,o))?(R(t,e,i),!t.tagName.includes("-")&&(e==="value"||e==="checked"||e==="selected")&&P(t,e,i,o,r,e!=="value")):t._isVueCE&&(/[A-Z]/.test(e)||!g(i))?R(t,$(e),i,r,e):(e==="true-value"?t._trueValue=i:e==="false-value"&&(t._falseValue=i),P(t,e,i,o))};function Tt(t,e,n,i){if(i)return!!(e==="innerHTML"||e==="textContent"||e in t&&V(e)&&B(n));if(e==="spellcheck"||e==="draggable"||e==="translate"||e==="autocorrect"||e==="sandbox"&&t.tagName==="IFRAME"||e==="form"||e==="list"&&t.tagName==="INPUT"||e==="type"&&t.tagName==="TEXTAREA")return!1;if(e==="width"||e==="height"){const s=t.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return V(e)&&g(n)?!1:e in t}const p=t=>{const e=t.props["onUpdate:modelValue"]||!1;return m(e)?n=>Q(e,n):e};function Nt(t){t.target.composing=!0}function y(t){const e=t.target;e.composing&&(e.composing=!1,e.dispatchEvent(new Event("input")))}const u=Symbol("_assign");function K(t,e,n){return e&&(t=t.trim()),n&&(t=M(t)),t}const Ht={created(t,{modifiers:{lazy:e,trim:n,number:i}},s){t[u]=p(s);const r=i||s.props&&s.props.type==="number";l(t,e?"change":"input",o=>{o.target.composing||t[u](K(t.value,n,r))}),(n||r)&&l(t,"change",()=>{t.value=K(t.value,n,r)}),e||(l(t,"compositionstart",Nt),l(t,"compositionend",y),l(t,"change",y))},mounted(t,{value:e}){t.value=e??""},beforeUpdate(t,{value:e,oldValue:n,modifiers:{lazy:i,trim:s,number:r}},o){if(t[u]=p(o),t.composing)return;const c=(r||t.type==="number")&&!/^0\d/.test(t.value)?M(t.value):t.value,f=e??"";c!==f&&(document.activeElement===t&&t.type!=="range"&&(i&&e===n||s&&t.value.trim()===f)||(t.value=f))}},Ot={deep:!0,created(t,e,n){t[u]=p(n),l(t,"change",()=>{const i=t._modelValue,s=S(t),r=t.checked,o=t[u];if(m(i)){const c=_(i,s),f=c!==-1;if(r&&!f)o(i.concat(s));else if(!r&&f){const d=[...i];d.splice(c,1),o(d)}}else if(A(i)){const c=new Set(i);r?c.add(s):c.delete(s),o(c)}else o(F(t,r))})},mounted:D,beforeUpdate(t,e,n){t[u]=p(n),D(t,e,n)}};function D(t,{value:e,oldValue:n},i){t._modelValue=e;let s;if(m(e))s=_(e,i.props.value)>-1;else if(A(e))s=e.has(i.props.value);else{if(e===n)return;s=q(e,F(t,!0))}t.checked!==s&&(t.checked=s)}const Vt={deep:!0,created(t,{value:e,modifiers:{number:n}},i){const s=A(e);l(t,"change",()=>{const r=Array.prototype.filter.call(t.options,o=>o.selected).map(o=>n?M(S(o)):S(o));t[u](t.multiple?s?new Set(r):r:r[0]),t._assigning=!0,tt(()=>{t._assigning=!1})}),t[u]=p(i)},mounted(t,{value:e}){G(t,e)},beforeUpdate(t,e,n){t[u]=p(n)},updated(t,{value:e}){t._assigning||G(t,e)}};function G(t,e){const n=t.multiple,i=m(e);if(!(n&&!i&&!A(e))){for(let s=0,r=t.options.length;sString(d)===String(c)):o.selected=_(e,c)>-1}else o.selected=e.has(c);else if(q(S(o),e)){t.selectedIndex!==s&&(t.selectedIndex=s);return}}!n&&t.selectedIndex!==-1&&(t.selectedIndex=-1)}}function S(t){return"_value"in t?t._value:t.value}function F(t,e){const n=e?"_trueValue":"_falseValue";return n in t?t[n]:e}const xt=["ctrl","shift","alt","meta"],It={stop:t=>t.stopPropagation(),prevent:t=>t.preventDefault(),self:t=>t.target!==t.currentTarget,ctrl:t=>!t.ctrlKey,shift:t=>!t.shiftKey,alt:t=>!t.altKey,meta:t=>!t.metaKey,left:t=>"button"in t&&t.button!==0,middle:t=>"button"in t&&t.button!==1,right:t=>"button"in t&&t.button!==2,exact:(t,e)=>xt.some(n=>t[`${n}Key`]&&!e.includes(n))},yt=(t,e)=>{if(!t)return t;const n=t._withMods||(t._withMods={}),i=e.join(".");return n[i]||(n[i]=((s,...r)=>{for(let o=0;o{const e=Lt().createApp(...t),{mount:n}=e;return e.mount=i=>{const s=Z(i);if(!s)return;const r=e._component;!B(r)&&!r.render&&!r.template&&(r.template=s.innerHTML),s.nodeType===1&&(s.textContent="");const o=n(s,!1,J(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),o},e}),Dt=((...t)=>{const e=Pt().createApp(...t),{mount:n}=e;return e.mount=i=>{const s=Z(i);if(s)return n(s,!0,J(s))},e});function J(t){if(t instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&t instanceof MathMLElement)return"mathml"}function Z(t){return g(t)?document.querySelector(t):t}export{Vt as a,Ot as b,Dt as c,Kt as d,Ht as v,yt as w}; diff --git a/dist/client/favicon.svg b/dist/client/favicon.svg new file mode 100644 index 0000000..1726c13 --- /dev/null +++ b/dist/client/favicon.svg @@ -0,0 +1,21 @@ + + + + + + + + + diff --git a/dist/server/_@astrojs-ssr-adapter.mjs b/dist/server/_@astrojs-ssr-adapter.mjs index be23b21..e53f9f6 100644 --- a/dist/server/_@astrojs-ssr-adapter.mjs +++ b/dist/server/_@astrojs-ssr-adapter.mjs @@ -1 +1 @@ -export { c as createExports, a as start } from './chunks/_@astrojs-ssr-adapter_DIu76Dvd.mjs'; +export { c as createExports, a as start } from './chunks/_@astrojs-ssr-adapter_BeL8VyJ8.mjs'; diff --git a/dist/server/chunks/_@astrojs-ssr-adapter_DIu76Dvd.mjs b/dist/server/chunks/_@astrojs-ssr-adapter_BeL8VyJ8.mjs similarity index 99% rename from dist/server/chunks/_@astrojs-ssr-adapter_DIu76Dvd.mjs rename to dist/server/chunks/_@astrojs-ssr-adapter_BeL8VyJ8.mjs index 50332bc..2db951c 100644 --- a/dist/server/chunks/_@astrojs-ssr-adapter_DIu76Dvd.mjs +++ b/dist/server/chunks/_@astrojs-ssr-adapter_BeL8VyJ8.mjs @@ -1,7 +1,7 @@ -import { q as decryptString, v as createSlotValueFromString, w as isAstroComponentFactory, k as renderComponent, r as renderTemplate, R as ROUTE_TYPE_HEADER, x as REROUTE_DIRECTIVE_HEADER, A as AstroError, y as i18nNoLocaleFoundInPath, z as ResponseSentError, B as ActionNotFoundError, C as MiddlewareNoDataOrNextCalled, D as MiddlewareNotAResponse, G as originPathnameSymbol, H as RewriteWithBodyUsed, J as GetStaticPathsRequired, K as InvalidGetStaticPathsReturn, O as InvalidGetStaticPathsEntry, P as GetStaticPathsExpectedParams, Q as GetStaticPathsInvalidRouteParam, S as PageNumberParamNotFound, T as DEFAULT_404_COMPONENT, V as NoMatchingStaticPathFound, W as PrerenderDynamicEndpointPathCollide, X as ReservedSlotName, Y as renderSlotToString, Z as renderJSX, _ as chunkToString, $ as isRenderInstruction, a0 as ForbiddenRewrite, a1 as SessionStorageInitError, a2 as SessionStorageSaveError, a3 as ASTRO_VERSION, a4 as CspNotEnabled, a5 as LocalsReassigned, a6 as generateCspDigest, a7 as PrerenderClientAddressNotAvailable, a8 as clientAddressSymbol, a9 as ClientAddressNotAvailable, aa as StaticClientAddressNotAvailable, ab as AstroResponseHeadersReassigned, ac as responseSentSymbol$1, ad as renderPage, ae as REWRITE_DIRECTIVE_HEADER_KEY, af as REWRITE_DIRECTIVE_HEADER_VALUE, ag as renderEndpoint, ah as LocalsNotAnObject, ai as FailedToFindPageMapSSR, aj as REROUTABLE_STATUS_CODES, ak as nodeRequestAbortControllerCleanupSymbol } from './astro/server_B-2LxKLH.mjs'; +import { q as decryptString, v as createSlotValueFromString, w as isAstroComponentFactory, k as renderComponent, r as renderTemplate, R as ROUTE_TYPE_HEADER, x as REROUTE_DIRECTIVE_HEADER, A as AstroError, y as i18nNoLocaleFoundInPath, z as ResponseSentError, B as ActionNotFoundError, C as MiddlewareNoDataOrNextCalled, D as MiddlewareNotAResponse, G as originPathnameSymbol, H as RewriteWithBodyUsed, J as GetStaticPathsRequired, K as InvalidGetStaticPathsReturn, O as InvalidGetStaticPathsEntry, P as GetStaticPathsExpectedParams, Q as GetStaticPathsInvalidRouteParam, S as PageNumberParamNotFound, T as DEFAULT_404_COMPONENT, V as NoMatchingStaticPathFound, W as PrerenderDynamicEndpointPathCollide, X as ReservedSlotName, Y as renderSlotToString, Z as renderJSX, _ as chunkToString, $ as isRenderInstruction, a0 as ForbiddenRewrite, a1 as SessionStorageInitError, a2 as SessionStorageSaveError, a3 as ASTRO_VERSION, a4 as CspNotEnabled, a5 as LocalsReassigned, a6 as generateCspDigest, a7 as PrerenderClientAddressNotAvailable, a8 as clientAddressSymbol, a9 as ClientAddressNotAvailable, aa as StaticClientAddressNotAvailable, ab as AstroResponseHeadersReassigned, ac as responseSentSymbol$1, ad as renderPage, ae as REWRITE_DIRECTIVE_HEADER_KEY, af as REWRITE_DIRECTIVE_HEADER_VALUE, ag as renderEndpoint, ah as LocalsNotAnObject, ai as FailedToFindPageMapSSR, aj as REROUTABLE_STATUS_CODES, ak as nodeRequestAbortControllerCleanupSymbol } from './astro/server_CF97kUu8.mjs'; import colors from 'piccolore'; import 'clsx'; -import { A as ActionError, d as deserializeActionResult, s as serializeActionResult, a as ACTION_RPC_ROUTE_PATTERN, b as ACTION_QUERY_PARAMS, g as getActionQueryString, D as DEFAULT_404_ROUTE, c as default404Instance, N as NOOP_MIDDLEWARE_FN, e as ensure404Route } from './astro-designed-error-pages_B_BAqCrl.mjs'; +import { A as ActionError, d as deserializeActionResult, s as serializeActionResult, a as ACTION_RPC_ROUTE_PATTERN, b as ACTION_QUERY_PARAMS, g as getActionQueryString, D as DEFAULT_404_ROUTE, c as default404Instance, N as NOOP_MIDDLEWARE_FN, e as ensure404Route } from './astro-designed-error-pages_DSexancP.mjs'; import 'es-module-lexer'; import buffer from 'node:buffer'; import crypto$1 from 'node:crypto'; diff --git a/dist/server/chunks/_plugin-vue_export-helper_B1lnwsE2.mjs b/dist/server/chunks/_plugin-vue_export-helper_B1lnwsE2.mjs deleted file mode 100644 index 17fca43..0000000 --- a/dist/server/chunks/_plugin-vue_export-helper_B1lnwsE2.mjs +++ /dev/null @@ -1,24 +0,0 @@ -import { e as createComponent, n as renderHead, o as renderSlot, r as renderTemplate, h as createAstro } from './astro/server_B-2LxKLH.mjs'; -import 'piccolore'; -import 'clsx'; -/* empty css */ - -const $$Astro = createAstro(); -const $$Base = createComponent(($$result, $$props, $$slots) => { - const Astro2 = $$result.createAstro($$Astro, $$props, $$slots); - Astro2.self = $$Base; - const { title = "Skillit" } = Astro2.props; - return renderTemplate` ${title}${renderHead()}
    ${renderSlot($$result, $$slots["default"])}
    `; -}, "/Users/alex/projects/skillit/src/layouts/Base.astro", void 0); - -const _export_sfc = (sfc, props) => { - const target = sfc.__vccOpts || sfc; - for (const [key, val] of props) { - target[key] = val; - } - return target; -}; - -export { $$Base as $, _export_sfc as _ }; diff --git a/dist/server/chunks/_plugin-vue_export-helper_CEgY73aA.mjs b/dist/server/chunks/_plugin-vue_export-helper_CEgY73aA.mjs new file mode 100644 index 0000000..cd4a30a --- /dev/null +++ b/dist/server/chunks/_plugin-vue_export-helper_CEgY73aA.mjs @@ -0,0 +1,24 @@ +import { e as createAstro, f as createComponent, n as renderHead, o as renderSlot, r as renderTemplate } from './astro/server_CF97kUu8.mjs'; +import 'piccolore'; +import 'clsx'; +/* empty css */ + +const $$Astro = createAstro("https://skills.here.run.place"); +const $$Base = createComponent(($$result, $$props, $$slots) => { + const Astro2 = $$result.createAstro($$Astro, $$props, $$slots); + Astro2.self = $$Base; + const { title = "Skills Here" } = Astro2.props; + return renderTemplate` ${title}${renderHead()}
    ${renderSlot($$result, $$slots["default"])}
    `; +}, "/Users/alex/projects/skillit/src/layouts/Base.astro", void 0); + +const _export_sfc = (sfc, props) => { + const target = sfc.__vccOpts || sfc; + for (const [key, val] of props) { + target[key] = val; + } + return target; +}; + +export { $$Base as $, _export_sfc as _ }; diff --git a/dist/server/chunks/astro-designed-error-pages_B_BAqCrl.mjs b/dist/server/chunks/astro-designed-error-pages_DSexancP.mjs similarity index 99% rename from dist/server/chunks/astro-designed-error-pages_B_BAqCrl.mjs rename to dist/server/chunks/astro-designed-error-pages_DSexancP.mjs index 91acbe2..24fd071 100644 --- a/dist/server/chunks/astro-designed-error-pages_B_BAqCrl.mjs +++ b/dist/server/chunks/astro-designed-error-pages_DSexancP.mjs @@ -1,4 +1,4 @@ -import { al as NOOP_MIDDLEWARE_HEADER, am as REDIRECT_STATUS_CODES, A as AstroError, an as ActionsReturnedInvalidDataError, T as DEFAULT_404_COMPONENT } from './astro/server_B-2LxKLH.mjs'; +import { al as NOOP_MIDDLEWARE_HEADER, am as REDIRECT_STATUS_CODES, A as AstroError, an as ActionsReturnedInvalidDataError, T as DEFAULT_404_COMPONENT } from './astro/server_CF97kUu8.mjs'; import { parse, stringify } from 'devalue'; import { escape } from 'html-escaper'; @@ -12,7 +12,7 @@ const ACTION_QUERY_PARAMS$1 = { actionName: "_action"}; const ACTION_RPC_ROUTE_PATTERN = "/_actions/[...path]"; -const __vite_import_meta_env__ = {"ASSETS_PREFIX": undefined, "BASE_URL": "/", "DEV": false, "MODE": "production", "PROD": true, "SITE": undefined, "SSR": true}; +const __vite_import_meta_env__ = {"ASSETS_PREFIX": undefined, "BASE_URL": "/", "DEV": false, "MODE": "production", "PROD": true, "SITE": "https://skills.here.run.place", "SSR": true}; const ACTION_QUERY_PARAMS = ACTION_QUERY_PARAMS$1; const codeToStatusMap = { // Implemented from IANA HTTP Status Code Registry diff --git a/dist/server/chunks/astro/server_B-2LxKLH.mjs b/dist/server/chunks/astro/server_CF97kUu8.mjs similarity index 99% rename from dist/server/chunks/astro/server_B-2LxKLH.mjs rename to dist/server/chunks/astro/server_CF97kUu8.mjs index 13bc881..6104092 100644 --- a/dist/server/chunks/astro/server_B-2LxKLH.mjs +++ b/dist/server/chunks/astro/server_CF97kUu8.mjs @@ -455,7 +455,7 @@ Use import.meta.glob instead: https://vitejs.dev/guide/features.html#glob-import } function createAstro(site) { return { - site: void 0, + site: new URL(site) , generator: `Astro v${ASTRO_VERSION}`, glob: createAstroGlobFn() }; @@ -2837,4 +2837,4 @@ function spreadAttributes(values = {}, _name, { class: scopedClassName } = {}) { return markHTMLString(output); } -export { isRenderInstruction as $, AstroError as A, ActionNotFoundError as B, MiddlewareNoDataOrNextCalled as C, MiddlewareNotAResponse as D, ExpectedImage as E, FailedToFetchRemoteImageDimensions as F, originPathnameSymbol as G, RewriteWithBodyUsed as H, IncompatibleDescriptorOptions as I, GetStaticPathsRequired as J, InvalidGetStaticPathsReturn as K, LocalImageUsedWrongly as L, MissingImageDimension as M, NoImageMetadata as N, InvalidGetStaticPathsEntry as O, GetStaticPathsExpectedParams as P, GetStaticPathsInvalidRouteParam as Q, ROUTE_TYPE_HEADER as R, PageNumberParamNotFound as S, DEFAULT_404_COMPONENT as T, UnsupportedImageFormat as U, NoMatchingStaticPathFound as V, PrerenderDynamicEndpointPathCollide as W, ReservedSlotName as X, renderSlotToString as Y, renderJSX as Z, chunkToString as _, UnsupportedImageConversion as a, ForbiddenRewrite as a0, SessionStorageInitError as a1, SessionStorageSaveError as a2, ASTRO_VERSION as a3, CspNotEnabled as a4, LocalsReassigned as a5, generateCspDigest as a6, PrerenderClientAddressNotAvailable as a7, clientAddressSymbol as a8, ClientAddressNotAvailable as a9, StaticClientAddressNotAvailable as aa, AstroResponseHeadersReassigned as ab, responseSentSymbol as ac, renderPage as ad, REWRITE_DIRECTIVE_HEADER_KEY as ae, REWRITE_DIRECTIVE_HEADER_VALUE as af, renderEndpoint as ag, LocalsNotAnObject as ah, FailedToFindPageMapSSR as ai, REROUTABLE_STATUS_CODES as aj, nodeRequestAbortControllerCleanupSymbol as ak, NOOP_MIDDLEWARE_HEADER as al, REDIRECT_STATUS_CODES as am, ActionsReturnedInvalidDataError as an, MissingSharp as ao, ExpectedImageOptions as b, ExpectedNotESMImage as c, InvalidImageService as d, createComponent as e, ImageMissingAlt as f, addAttribute as g, createAstro as h, ExperimentalFontsNotEnabled as i, FontFamilyNotFound as j, renderComponent as k, renderScript as l, maybeRenderHead as m, renderHead as n, renderSlot as o, decodeKey as p, decryptString as q, renderTemplate as r, spreadAttributes as s, toStyleString as t, unescapeHTML as u, createSlotValueFromString as v, isAstroComponentFactory as w, REROUTE_DIRECTIVE_HEADER as x, i18nNoLocaleFoundInPath as y, ResponseSentError as z }; +export { isRenderInstruction as $, AstroError as A, ActionNotFoundError as B, MiddlewareNoDataOrNextCalled as C, MiddlewareNotAResponse as D, ExpectedImage as E, FailedToFetchRemoteImageDimensions as F, originPathnameSymbol as G, RewriteWithBodyUsed as H, IncompatibleDescriptorOptions as I, GetStaticPathsRequired as J, InvalidGetStaticPathsReturn as K, LocalImageUsedWrongly as L, MissingImageDimension as M, NoImageMetadata as N, InvalidGetStaticPathsEntry as O, GetStaticPathsExpectedParams as P, GetStaticPathsInvalidRouteParam as Q, ROUTE_TYPE_HEADER as R, PageNumberParamNotFound as S, DEFAULT_404_COMPONENT as T, UnsupportedImageFormat as U, NoMatchingStaticPathFound as V, PrerenderDynamicEndpointPathCollide as W, ReservedSlotName as X, renderSlotToString as Y, renderJSX as Z, chunkToString as _, UnsupportedImageConversion as a, ForbiddenRewrite as a0, SessionStorageInitError as a1, SessionStorageSaveError as a2, ASTRO_VERSION as a3, CspNotEnabled as a4, LocalsReassigned as a5, generateCspDigest as a6, PrerenderClientAddressNotAvailable as a7, clientAddressSymbol as a8, ClientAddressNotAvailable as a9, StaticClientAddressNotAvailable as aa, AstroResponseHeadersReassigned as ab, responseSentSymbol as ac, renderPage as ad, REWRITE_DIRECTIVE_HEADER_KEY as ae, REWRITE_DIRECTIVE_HEADER_VALUE as af, renderEndpoint as ag, LocalsNotAnObject as ah, FailedToFindPageMapSSR as ai, REROUTABLE_STATUS_CODES as aj, nodeRequestAbortControllerCleanupSymbol as ak, NOOP_MIDDLEWARE_HEADER as al, REDIRECT_STATUS_CODES as am, ActionsReturnedInvalidDataError as an, MissingSharp as ao, ExpectedImageOptions as b, ExpectedNotESMImage as c, InvalidImageService as d, createAstro as e, createComponent as f, ImageMissingAlt as g, addAttribute as h, ExperimentalFontsNotEnabled as i, FontFamilyNotFound as j, renderComponent as k, renderScript as l, maybeRenderHead as m, renderHead as n, renderSlot as o, decodeKey as p, decryptString as q, renderTemplate as r, spreadAttributes as s, toStyleString as t, unescapeHTML as u, createSlotValueFromString as v, isAstroComponentFactory as w, REROUTE_DIRECTIVE_HEADER as x, i18nNoLocaleFoundInPath as y, ResponseSentError as z }; diff --git a/dist/server/chunks/models_DPfuEi7q.mjs b/dist/server/chunks/models_BK7lP4G3.mjs similarity index 61% rename from dist/server/chunks/models_DPfuEi7q.mjs rename to dist/server/chunks/models_BK7lP4G3.mjs index 8e20192..8bceed6 100644 --- a/dist/server/chunks/models_DPfuEi7q.mjs +++ b/dist/server/chunks/models_BK7lP4G3.mjs @@ -1,13 +1,14 @@ -import { useSSRContext, defineComponent, ref, computed, watch, mergeProps } from 'vue'; +import { useSSRContext, defineComponent, computed, ref, watch, mergeProps } from 'vue'; import { marked } from 'marked'; -import { ssrRenderAttrs, ssrRenderAttr, ssrInterpolate, ssrRenderList, ssrRenderClass, ssrIncludeBooleanAttr, ssrLooseContain, ssrLooseEqual } from 'vue/server-renderer'; -import { _ as _export_sfc } from './_plugin-vue_export-helper_B1lnwsE2.mjs'; +import { ssrRenderAttrs, ssrRenderAttr, ssrRenderClass, ssrInterpolate, ssrRenderList, ssrIncludeBooleanAttr, ssrLooseContain, ssrLooseEqual } from 'vue/server-renderer'; +import { _ as _export_sfc } from './_plugin-vue_export-helper_CEgY73aA.mjs'; const _sfc_main = /* @__PURE__ */ defineComponent({ __name: "SkillEditor", props: { mode: {}, slug: {}, + forkOf: {}, initialName: {}, initialDescription: {}, initialAllowedTools: {}, @@ -19,8 +20,12 @@ const _sfc_main = /* @__PURE__ */ defineComponent({ initialAgent: {}, initialHooks: {}, initialBody: {}, + initialAuthor: {}, + initialAuthorEmail: {}, + initialTags: {}, availableTools: {}, - availableModels: {} + availableModels: {}, + availableTags: {} }, setup(__props, { expose: __expose }) { __expose(); @@ -42,6 +47,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({ { id: "claude-sonnet-4-5-20250929", display_name: "Claude Sonnet 4.5" }, { id: "claude-haiku-4-5-20251001", display_name: "Claude Haiku 4.5" } ]; + const isFork = computed(() => Boolean(props.forkOf)); const name = ref(props.initialName || ""); const description = ref(props.initialDescription || ""); const argumentHint = ref(props.initialArgumentHint || ""); @@ -51,9 +57,21 @@ const _sfc_main = /* @__PURE__ */ defineComponent({ const context = ref(props.initialContext || ""); const agent = ref(props.initialAgent || ""); const hooksJson = ref(props.initialHooks || ""); + const tags = ref( + props.initialTags ? props.initialTags.split(",").map((t) => t.trim()).filter(Boolean) : [] + ); + const tagQuery = ref(""); + const tagSuggestionsOpen = ref(false); + const tagInputEl = ref(); + const knownTags = props.availableTags ? props.availableTags.split(",").map((t) => t.trim()).filter(Boolean) : []; const body = ref(props.initialBody || ""); const saving = ref(false); const error = ref(""); + const forkAuthorName = ref(""); + const forkAuthorEmail = ref(""); + const authorToken = ref( + typeof localStorage !== "undefined" ? localStorage.getItem("skillshere-token") || "" : "" + ); const selectedTools = ref(new Set( props.initialAllowedTools ? props.initialAllowedTools.split(",").map((t) => t.trim()).filter(Boolean) : [] )); @@ -65,10 +83,56 @@ const _sfc_main = /* @__PURE__ */ defineComponent({ } selectedTools.value = new Set(selectedTools.value); } + const tagSuggestions = computed(() => { + const q = tagQuery.value.toLowerCase().trim(); + const current = new Set(tags.value.map((t) => t.toLowerCase())); + const matches = knownTags.filter((t) => !current.has(t.toLowerCase()) && (!q || t.toLowerCase().includes(q))); + if (q && !current.has(q) && !matches.some((m) => m.toLowerCase() === q)) { + matches.push(q); + } + return matches; + }); + const isNewTag = (tag) => !knownTags.some((t) => t.toLowerCase() === tag.toLowerCase()); + function addTag(tag) { + const normalized = tag.trim().toLowerCase(); + if (normalized && !tags.value.some((t) => t.toLowerCase() === normalized)) { + tags.value.push(normalized); + } + tagQuery.value = ""; + tagInputEl.value?.focus(); + } + function removeTag(idx) { + tags.value.splice(idx, 1); + } + function onTagKeydown(e) { + if (e.key === "Enter" || e.key === ",") { + e.preventDefault(); + if (tagQuery.value.trim()) { + addTag(tagQuery.value); + } + } else if (e.key === "Backspace" && !tagQuery.value && tags.value.length) { + tags.value.pop(); + } + } + let tagBlurTimer; + function onTagBlur() { + tagBlurTimer = setTimeout(() => { + tagSuggestionsOpen.value = false; + }, 200); + } + function onTagSuggestionClick(tag) { + clearTimeout(tagBlurTimer); + addTag(tag); + } const computedSlug = computed(() => { if (props.mode === "edit" && props.slug) return props.slug; return name.value.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "").slice(0, 64) || "my-skill"; }); + const slugMatchesOriginal = computed(() => { + if (!props.forkOf) return false; + return computedSlug.value === props.forkOf; + }); + const bodyLines = computed(() => body.value.split("\n").length); let previewHtml = ref(""); let debounceTimer; watch(body, (val) => { @@ -82,8 +146,17 @@ const _sfc_main = /* @__PURE__ */ defineComponent({ const lines = ["---"]; lines.push(`name: ${name.value}`); if (description.value) lines.push(`description: ${description.value}`); + if (isFork.value) { + if (forkAuthorName.value) lines.push(`author: ${forkAuthorName.value}`); + if (forkAuthorEmail.value) lines.push(`author-email: ${forkAuthorEmail.value}`); + lines.push(`fork-of: ${props.forkOf}`); + } else { + if (props.initialAuthor) lines.push(`author: ${props.initialAuthor}`); + if (props.initialAuthorEmail) lines.push(`author-email: ${props.initialAuthorEmail}`); + } if (argumentHint.value) lines.push(`argument-hint: ${argumentHint.value}`); if (tools.length > 0) lines.push(`allowed-tools: ${tools.join(", ")}`); + if (tags.value.length > 0) lines.push(`tags: ${tags.value.join(", ")}`); if (model.value) lines.push(`model: ${model.value}`); if (userInvocable.value === false) lines.push("user-invocable: false"); if (disableModelInvocation.value) lines.push("disable-model-invocation: true"); @@ -104,10 +177,14 @@ const _sfc_main = /* @__PURE__ */ defineComponent({ error.value = ""; try { const content = buildContent(); + const headers = { "Content-Type": "application/json" }; + if (!isFork.value && authorToken.value) { + headers["Authorization"] = `Bearer ${authorToken.value}`; + } if (props.mode === "create") { const res = await fetch("/api/skills", { method: "POST", - headers: { "Content-Type": "application/json" }, + headers, body: JSON.stringify({ slug: computedSlug.value, content }) }); if (!res.ok) { @@ -118,7 +195,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({ } else { const res = await fetch(`/api/skills/${props.slug}`, { method: "PUT", - headers: { "Content-Type": "application/json" }, + headers, body: JSON.stringify({ content }) }); if (!res.ok) { @@ -133,7 +210,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({ saving.value = false; } } - const __returned__ = { props, AVAILABLE_TOOLS, AVAILABLE_MODELS, name, description, argumentHint, model, userInvocable, disableModelInvocation, context, agent, hooksJson, body, saving, error, selectedTools, toggleTool, computedSlug, get previewHtml() { + const __returned__ = { props, AVAILABLE_TOOLS, AVAILABLE_MODELS, isFork, name, description, argumentHint, model, userInvocable, disableModelInvocation, context, agent, hooksJson, tags, tagQuery, tagSuggestionsOpen, tagInputEl, knownTags, body, saving, error, forkAuthorName, forkAuthorEmail, authorToken, selectedTools, toggleTool, tagSuggestions, isNewTag, addTag, removeTag, onTagKeydown, get tagBlurTimer() { + return tagBlurTimer; + }, set tagBlurTimer(v) { + tagBlurTimer = v; + }, onTagBlur, onTagSuggestionClick, computedSlug, slugMatchesOriginal, bodyLines, get previewHtml() { return previewHtml; }, set previewHtml(v) { previewHtml = v; @@ -147,7 +228,47 @@ const _sfc_main = /* @__PURE__ */ defineComponent({ } }); function _sfc_ssrRender(_ctx, _push, _parent, _attrs, $props, $setup, $data, $options) { - _push(`

    Slug: ${ssrInterpolate($setup.computedSlug)}

    `); + _push(``); + if ($setup.isFork) { + _push(`

    Claim this fork as yours. It will stay open for editing until you push from CLI, which registers a token and locks it to you.

    `); + } else { + _push(``); + } + if ($setup.isFork && $setup.slugMatchesOriginal) { + _push(`

    Change the name to generate a different slug. You can't save a fork with the same slug as the original.

    `); + } else { + _push(``); + } + _push(`

    Slug: ${ssrInterpolate($setup.computedSlug)}${ssrInterpolate($setup.name.length)}/64

    ${ssrInterpolate($setup.description.length)}/200

    `); + ssrRenderList($setup.tags, (tag, i) => { + _push(`${ssrInterpolate(tag)} `); + }); + _push(`
    `); + if ($setup.tagSuggestionsOpen && $setup.tagSuggestions.length > 0) { + _push(`
    `); + ssrRenderList($setup.tagSuggestions, (s) => { + _push(``); + }); + _push(`
    `); + } else { + _push(``); + } + _push(`

    Type and press Enter or comma. Click suggestions to add.

    `); ssrRenderList($setup.AVAILABLE_TOOLS, (tool) => { _push(`

    Fork runs the skill in an isolated subagent context

    Hooks (advanced)

    JSON object. Leave empty to omit.

    JSON object. Leave empty to omit.

    Preview

    ${$setup.previewHtml ?? ""}

    Preview

    ${$setup.previewHtml ?? ""}
    Cancel`); + _push(` ${ssrInterpolate($setup.saving ? "Saving..." : $setup.isFork ? "Create Fork" : $props.mode === "create" ? "Create Skill" : "Save Changes")}Cancel`); if ($setup.error) { _push(`

    ${ssrInterpolate($setup.error)}

    `); } else { diff --git a/dist/server/chunks/node_WXNYuHqd.mjs b/dist/server/chunks/node_HH9e2ntY.mjs similarity index 99% rename from dist/server/chunks/node_WXNYuHqd.mjs rename to dist/server/chunks/node_HH9e2ntY.mjs index 3b41501..f645092 100644 --- a/dist/server/chunks/node_WXNYuHqd.mjs +++ b/dist/server/chunks/node_HH9e2ntY.mjs @@ -1,5 +1,5 @@ import { i as isRemoteAllowed, j as joinPaths, a as isRemotePath, r as removeQueryString, b as isParentDirectory } from './remote_B3W5fv4r.mjs'; -import { A as AstroError, E as ExpectedImage, L as LocalImageUsedWrongly, M as MissingImageDimension, U as UnsupportedImageFormat, I as IncompatibleDescriptorOptions, a as UnsupportedImageConversion, t as toStyleString, N as NoImageMetadata, F as FailedToFetchRemoteImageDimensions, b as ExpectedImageOptions, c as ExpectedNotESMImage, d as InvalidImageService, e as createComponent, f as ImageMissingAlt, m as maybeRenderHead, g as addAttribute, s as spreadAttributes, r as renderTemplate, h as createAstro, i as ExperimentalFontsNotEnabled, j as FontFamilyNotFound, u as unescapeHTML } from './astro/server_B-2LxKLH.mjs'; +import { A as AstroError, E as ExpectedImage, L as LocalImageUsedWrongly, M as MissingImageDimension, U as UnsupportedImageFormat, I as IncompatibleDescriptorOptions, a as UnsupportedImageConversion, t as toStyleString, N as NoImageMetadata, F as FailedToFetchRemoteImageDimensions, b as ExpectedImageOptions, c as ExpectedNotESMImage, d as InvalidImageService, e as createAstro, f as createComponent, g as ImageMissingAlt, m as maybeRenderHead, h as addAttribute, s as spreadAttributes, r as renderTemplate, i as ExperimentalFontsNotEnabled, j as FontFamilyNotFound, u as unescapeHTML } from './astro/server_CF97kUu8.mjs'; import 'clsx'; import * as mime from 'mrmime'; import 'piccolore'; @@ -1434,7 +1434,7 @@ async function getConfiguredImageService() { if (!globalThis?.astroAsset?.imageService) { const { default: service } = await import( // @ts-expect-error - './sharp_CRCimLOL.mjs' + './sharp_D9uxjd11.mjs' ).catch((e) => { const error = new AstroError(InvalidImageService); error.cause = e; @@ -1589,7 +1589,7 @@ async function getImage$1(options, imageConfig) { }; } -const $$Astro$2 = createAstro(); +const $$Astro$2 = createAstro("https://skills.here.run.place"); const $$Image = createComponent(async ($$result, $$props, $$slots) => { const Astro2 = $$result.createAstro($$Astro$2, $$props, $$slots); Astro2.self = $$Image; @@ -1618,7 +1618,7 @@ const $$Image = createComponent(async ($$result, $$props, $$slots) => { return renderTemplate`${maybeRenderHead()}`; }, "/Users/alex/projects/skillit/node_modules/astro/components/Image.astro", void 0); -const $$Astro$1 = createAstro(); +const $$Astro$1 = createAstro("https://skills.here.run.place"); const $$Picture = createComponent(async ($$result, $$props, $$slots) => { const Astro2 = $$result.createAstro($$Astro$1, $$props, $$slots); Astro2.self = $$Picture; @@ -1728,7 +1728,7 @@ function checkWeight(input, target) { return input === target; } -const $$Astro = createAstro(); +const $$Astro = createAstro("https://skills.here.run.place"); const $$Font = createComponent(($$result, $$props, $$slots) => { const Astro2 = $$result.createAstro($$Astro, $$props, $$slots); Astro2.self = $$Font; diff --git a/dist/server/chunks/sharp_CRCimLOL.mjs b/dist/server/chunks/sharp_D9uxjd11.mjs similarity index 96% rename from dist/server/chunks/sharp_CRCimLOL.mjs rename to dist/server/chunks/sharp_D9uxjd11.mjs index ea5e33d..59799ea 100644 --- a/dist/server/chunks/sharp_CRCimLOL.mjs +++ b/dist/server/chunks/sharp_D9uxjd11.mjs @@ -1,5 +1,5 @@ -import { A as AstroError, ao as MissingSharp } from './astro/server_B-2LxKLH.mjs'; -import { b as baseService, p as parseQuality } from './node_WXNYuHqd.mjs'; +import { A as AstroError, ao as MissingSharp } from './astro/server_CF97kUu8.mjs'; +import { b as baseService, p as parseQuality } from './node_HH9e2ntY.mjs'; let sharp; const qualityTable = { diff --git a/dist/server/chunks/skills_COWfD5oy.mjs b/dist/server/chunks/skills_BacVQUiS.mjs similarity index 84% rename from dist/server/chunks/skills_COWfD5oy.mjs rename to dist/server/chunks/skills_BacVQUiS.mjs index 90b313c..8ac7d06 100644 --- a/dist/server/chunks/skills_COWfD5oy.mjs +++ b/dist/server/chunks/skills_BacVQUiS.mjs @@ -31,6 +31,10 @@ function parseSkill(slug, raw) { "disable-model-invocation": Boolean(data["disable-model-invocation"]), context: data.context || "", agent: data.agent || "", + author: data.author || "", + "author-email": data["author-email"] || "", + "fork-of": data["fork-of"] || "", + tags: parseTools(data.tags), hooks: typeof data.hooks === "object" && data.hooks !== null ? data.hooks : null, content: content.trim(), raw @@ -49,6 +53,14 @@ async function listSkills() { } return skills.sort((a, b) => a.name.localeCompare(b.name)); } +async function getAllTags() { + const all = await listSkills(); + return [...new Set(all.flatMap((s) => s.tags))].sort(); +} +async function getForksOf(slug) { + const all = await listSkills(); + return all.filter((s) => s["fork-of"] === slug); +} async function getSkill(slug) { try { const raw = await fs.readFile(skillPath(slug), "utf-8"); @@ -94,4 +106,4 @@ async function deleteSkill(slug) { await fs.unlink(dest); } -export { createSkill as c, deleteSkill as d, getSkill as g, isValidSlug as i, listSkills as l, updateSkill as u }; +export { getAllTags as a, getForksOf as b, createSkill as c, deleteSkill as d, getSkill as g, isValidSlug as i, listSkills as l, updateSkill as u }; diff --git a/dist/server/chunks/stats_CaDi9y9J.mjs b/dist/server/chunks/stats_CaDi9y9J.mjs new file mode 100644 index 0000000..b9291d4 --- /dev/null +++ b/dist/server/chunks/stats_CaDi9y9J.mjs @@ -0,0 +1,46 @@ +import fs from 'node:fs/promises'; +import path from 'node:path'; + +const STATS_FILE = path.resolve(process.env.STATS_FILE || "data/stats.json"); +async function readStore() { + try { + const raw = await fs.readFile(STATS_FILE, "utf-8"); + return JSON.parse(raw); + } catch { + return {}; + } +} +async function writeStore(store) { + const dir = path.dirname(STATS_FILE); + await fs.mkdir(dir, { recursive: true }); + const tmp = STATS_FILE + ".tmp"; + await fs.writeFile(tmp, JSON.stringify(store, null, 2), "utf-8"); + await fs.rename(tmp, STATS_FILE); +} +function ensure(store, slug) { + if (!store[slug]) { + store[slug] = { downloads: 0, pushes: 0, lastPushedAt: null }; + } + return store[slug]; +} +async function recordDownload(slug) { + const store = await readStore(); + ensure(store, slug).downloads++; + await writeStore(store); +} +async function recordPush(slug) { + const store = await readStore(); + const entry = ensure(store, slug); + entry.pushes++; + entry.lastPushedAt = (/* @__PURE__ */ new Date()).toISOString(); + await writeStore(store); +} +async function getStatsForSlug(slug) { + const store = await readStore(); + return store[slug] || { downloads: 0, pushes: 0, lastPushedAt: null }; +} +async function getAllStats() { + return readStore(); +} + +export { recordDownload as a, getAllStats as b, getStatsForSlug as g, recordPush as r }; diff --git a/dist/server/chunks/sync_BEq_wzpT.mjs b/dist/server/chunks/sync_BEq_wzpT.mjs new file mode 100644 index 0000000..e9fec80 --- /dev/null +++ b/dist/server/chunks/sync_BEq_wzpT.mjs @@ -0,0 +1,309 @@ +import { l as listSkills } from './skills_BacVQUiS.mjs'; + +function isPowerShell(request) { + const ua = request.headers.get("user-agent") || ""; + return /PowerShell/i.test(ua); +} +async function buildPushScript(baseUrl, skillsDir) { + const lines = [ + "#!/usr/bin/env bash", + "set -euo pipefail", + "", + `SKILLS_DIR="${skillsDir}"`, + `BASE_URL="${baseUrl}"`, + 'FILTER="${1:-}"', + 'TOKEN_FILE="$HOME/.claude/skills.here-token"', + "", + "# Get git author if available", + 'AUTHOR_NAME=$(git config user.name 2>/dev/null || echo "")', + 'AUTHOR_EMAIL=$(git config user.email 2>/dev/null || echo "")', + "", + "# Load or register token", + 'TOKEN=""', + 'if [ -f "$TOKEN_FILE" ]; then', + ' TOKEN=$(cat "$TOKEN_FILE")', + 'elif [ -n "$AUTHOR_EMAIL" ]; then', + ' echo "No token found. Registering with $AUTHOR_EMAIL..."', + " REGISTER_RESPONSE=$(curl -sS -X POST \\", + ' -H "Content-Type: application/json" \\', + ' -d "{\\"email\\": \\"$AUTHOR_EMAIL\\", \\"name\\": \\"$AUTHOR_NAME\\"}" \\', + ' -w "\\n%{http_code}" \\', + ' "$BASE_URL/api/auth/register")', + ` REGISTER_BODY=$(echo "$REGISTER_RESPONSE" | sed '$d')`, + ' REGISTER_STATUS=$(echo "$REGISTER_RESPONSE" | tail -1)', + ' if [ "$REGISTER_STATUS" = "201" ]; then', + ' TOKEN=$(echo "$REGISTER_BODY" | jq -r .token)', + ' mkdir -p "$(dirname "$TOKEN_FILE")"', + ' echo "$TOKEN" > "$TOKEN_FILE"', + ' chmod 600 "$TOKEN_FILE"', + ' echo " Token saved to $TOKEN_FILE"', + ' elif [ "$REGISTER_STATUS" = "409" ]; then', + ' echo " Email already registered. Place your token in $TOKEN_FILE"', + ' echo " Continuing without token (unprotected skills only)..."', + " else", + ' echo " Registration failed ($REGISTER_STATUS): $REGISTER_BODY"', + ' echo " Continuing without token (unprotected skills only)..."', + " fi", + "fi", + "", + 'if [ ! -d "$SKILLS_DIR" ]; then', + ' echo "No skills directory found at $SKILLS_DIR"', + " exit 1", + "fi", + "", + 'AUTH_HEADER=""', + 'if [ -n "$TOKEN" ]; then', + ' AUTH_HEADER="Authorization: Bearer $TOKEN"', + "fi", + "", + "push_skill() {", + ' local file="$1"', + ' local slug=$(basename "$file" .md)', + ' local content=$(cat "$file")', + "", + " # Inject author into frontmatter if available and not already present", + ' if [ -n "$AUTHOR_EMAIL" ] && ! echo "$content" | grep -q "^author-email:"; then', + ` content=$(echo "$content" | awk -v name="$AUTHOR_NAME" -v email="$AUTHOR_EMAIL" 'NR==1 && /^---$/{print; if (name) print "author: " name; print "author-email: " email; next} {print}')`, + " fi", + "", + " # Build curl auth args", + ' local auth_args=""', + ' if [ -n "$AUTH_HEADER" ]; then', + ' auth_args="-H \\"$AUTH_HEADER\\""', + " fi", + "", + " # Try PUT (update), fallback to POST (create)", + " local response", + ' if [ -n "$TOKEN" ]; then', + ' response=$(curl -sS -o /dev/null -w "%{http_code}" -X PUT \\', + ' -H "Content-Type: application/json" \\', + ' -H "Authorization: Bearer $TOKEN" \\', + ' -d "{\\"content\\": $(echo "$content" | jq -Rs .)}" \\', + ' "$BASE_URL/api/skills/$slug")', + " else", + ' response=$(curl -sS -o /dev/null -w "%{http_code}" -X PUT \\', + ' -H "Content-Type: application/json" \\', + ' -d "{\\"content\\": $(echo "$content" | jq -Rs .)}" \\', + ' "$BASE_URL/api/skills/$slug")', + " fi", + "", + ' if [ "$response" = "403" ]; then', + ' echo " ✗ $slug (permission denied — token missing or invalid)"', + " return 1", + " fi", + "", + ' if [ "$response" = "404" ]; then', + ' if [ -n "$TOKEN" ]; then', + ' local post_status=$(curl -sS -o /dev/null -w "%{http_code}" -X POST \\', + ' -H "Content-Type: application/json" \\', + ' -H "Authorization: Bearer $TOKEN" \\', + ' -d "{\\"slug\\": \\"$slug\\", \\"content\\": $(echo "$content" | jq -Rs .)}" \\', + ' "$BASE_URL/api/skills")', + " else", + ' local post_status=$(curl -sS -o /dev/null -w "%{http_code}" -X POST \\', + ' -H "Content-Type: application/json" \\', + ' -d "{\\"slug\\": \\"$slug\\", \\"content\\": $(echo "$content" | jq -Rs .)}" \\', + ' "$BASE_URL/api/skills")', + " fi", + ' if [ "$post_status" = "403" ]; then', + ' echo " ✗ $slug (permission denied — token missing or invalid)"', + " return 1", + " fi", + " fi", + "", + ' echo " ✓ $slug"', + "}", + "", + "count=0", + "failed=0", + 'if [ -n "$FILTER" ]; then', + " # Push a specific skill", + ' file="$SKILLS_DIR/${FILTER%.md}.md"', + ' if [ ! -f "$file" ]; then', + ' echo "Skill not found: $file"', + " exit 1", + " fi", + ' if push_skill "$file"; then', + " count=1", + " else", + " failed=1", + " fi", + "else", + " # Push all skills", + ' for file in "$SKILLS_DIR"/*.md; do', + ' [ -f "$file" ] || continue', + ' if push_skill "$file"; then', + " count=$((count + 1))", + " else", + " failed=$((failed + 1))", + " fi", + " done", + "fi", + "", + 'echo "Pushed $count skill(s) to $BASE_URL"', + 'if [ "$failed" -gt 0 ]; then', + ' echo "$failed skill(s) failed (permission denied)"', + "fi", + "" + ]; + return lines.join("\n"); +} +async function buildSyncScript(baseUrl, skillsDir) { + const skills = await listSkills(); + const lines = [ + "#!/usr/bin/env bash", + "set -euo pipefail", + "", + `SKILLS_DIR="${skillsDir}"`, + 'mkdir -p "$SKILLS_DIR"', + "" + ]; + if (skills.length === 0) { + lines.push('echo "No skills available to sync."'); + } else { + lines.push(`echo "Syncing ${skills.length} skill(s) from ${baseUrl}..."`); + lines.push(""); + for (const skill of skills) { + const skillUrl = `${baseUrl}/${skill.slug}`; + lines.push(`curl -fsSL "${skillUrl}" -o "$SKILLS_DIR/${skill.slug}.md"`); + lines.push(`echo " ✓ ${skill.name}"`); + } + lines.push(""); + lines.push('echo "Done! Skills synced to $SKILLS_DIR"'); + } + lines.push(""); + return lines.join("\n"); +} +async function buildSyncScriptPS(baseUrl, skillsDir) { + const skills = await listSkills(); + const lines = [ + '$ErrorActionPreference = "Stop"', + "", + `$SkillsDir = "${skillsDir}"`, + "New-Item -ItemType Directory -Force -Path $SkillsDir | Out-Null", + "" + ]; + if (skills.length === 0) { + lines.push('Write-Host "No skills available to sync."'); + } else { + lines.push(`Write-Host "Syncing ${skills.length} skill(s) from ${baseUrl}..."`); + lines.push(""); + for (const skill of skills) { + const skillUrl = `${baseUrl}/${skill.slug}`; + lines.push(`Invoke-WebRequest -Uri "${skillUrl}" -OutFile (Join-Path $SkillsDir "${skill.slug}.md")`); + lines.push(`Write-Host " ✓ ${skill.name}"`); + } + lines.push(""); + lines.push('Write-Host "Done! Skills synced to $SkillsDir"'); + } + lines.push(""); + return lines.join("\n"); +} +async function buildPushScriptPS(baseUrl, skillsDir) { + const lines = [ + '$ErrorActionPreference = "Stop"', + "", + `$SkillsDir = "${skillsDir}"`, + `$BaseUrl = "${baseUrl}"`, + '$Filter = if ($args.Count -gt 0) { $args[0] } else { "" }', + '$TokenFile = Join-Path $HOME ".claude\\skills.here-token"', + "", + "# Get git author if available", + '$AuthorName = try { git config user.name 2>$null } catch { "" }', + '$AuthorEmail = try { git config user.email 2>$null } catch { "" }', + "", + "# Load or register token", + '$Token = ""', + "if (Test-Path $TokenFile) {", + " $Token = (Get-Content $TokenFile -Raw).Trim()", + "} elseif ($AuthorEmail) {", + ' Write-Host "No token found. Registering with $AuthorEmail..."', + " try {", + " $body = @{ email = $AuthorEmail; name = $AuthorName } | ConvertTo-Json", + ' $resp = Invoke-WebRequest -Uri "$BaseUrl/api/auth/register" -Method POST -ContentType "application/json" -Body $body', + " if ($resp.StatusCode -eq 201) {", + " $Token = ($resp.Content | ConvertFrom-Json).token", + " New-Item -ItemType Directory -Force -Path (Split-Path $TokenFile) | Out-Null", + " Set-Content -Path $TokenFile -Value $Token", + ' Write-Host " Token saved to $TokenFile"', + " }", + " } catch {", + " $code = $_.Exception.Response.StatusCode.value__", + " if ($code -eq 409) {", + ' Write-Host " Email already registered. Place your token in $TokenFile"', + " } else {", + ' Write-Host " Registration failed: $_"', + " }", + ' Write-Host " Continuing without token (unprotected skills only)..."', + " }", + "}", + "", + "if (-not (Test-Path $SkillsDir)) {", + ' Write-Host "No skills directory found at $SkillsDir"', + " exit 1", + "}", + "", + '$headers = @{ "Content-Type" = "application/json" }', + 'if ($Token) { $headers["Authorization"] = "Bearer $Token" }', + "", + "function Push-Skill($file) {", + " $slug = [IO.Path]::GetFileNameWithoutExtension($file)", + " $content = Get-Content $file -Raw", + "", + " # Inject author if available and not present", + ' if ($AuthorEmail -and $content -notmatch "(?m)^author-email:") {', + ' $inject = ""', + ' if ($AuthorName) { $inject += "author: $AuthorName`n" }', + ' $inject += "author-email: $AuthorEmail"', + ' $content = $content -replace "^---$", "---`n$inject" -replace "^---`n", "---`n"', + " }", + "", + " $body = @{ content = $content } | ConvertTo-Json", + " try {", + ' Invoke-WebRequest -Uri "$BaseUrl/api/skills/$slug" -Method PUT -Headers $headers -Body $body | Out-Null', + ' Write-Host " ✓ $slug"', + " return $true", + " } catch {", + " $code = $_.Exception.Response.StatusCode.value__", + " if ($code -eq 403) {", + ' Write-Host " ✗ $slug (permission denied)"', + " return $false", + " }", + " if ($code -eq 404) {", + " $postBody = @{ slug = $slug; content = $content } | ConvertTo-Json", + " try {", + ' Invoke-WebRequest -Uri "$BaseUrl/api/skills" -Method POST -Headers $headers -Body $postBody | Out-Null', + ' Write-Host " ✓ $slug"', + " return $true", + " } catch {", + " $postCode = $_.Exception.Response.StatusCode.value__", + " if ($postCode -eq 403) {", + ' Write-Host " ✗ $slug (permission denied)"', + " return $false", + " }", + " }", + " }", + " }", + ' Write-Host " ✓ $slug"', + " return $true", + "}", + "", + "$count = 0; $failed = 0", + "if ($Filter) {", + ` $file = Join-Path $SkillsDir "$($Filter -replace '\\.md$','').md"`, + ' if (-not (Test-Path $file)) { Write-Host "Skill not found: $file"; exit 1 }', + " if (Push-Skill $file) { $count++ } else { $failed++ }", + "} else {", + ' Get-ChildItem -Path $SkillsDir -Filter "*.md" | ForEach-Object {', + " if (Push-Skill $_.FullName) { $count++ } else { $failed++ }", + " }", + "}", + "", + 'Write-Host "Pushed $count skill(s) to $BaseUrl"', + 'if ($failed -gt 0) { Write-Host "$failed skill(s) failed (permission denied)" }', + "" + ]; + return lines.join("\n"); +} + +export { buildSyncScriptPS as a, buildSyncScript as b, buildPushScript as c, buildPushScriptPS as d, isPowerShell as i }; diff --git a/dist/server/chunks/sync_B_Og9xl3.mjs b/dist/server/chunks/sync_B_Og9xl3.mjs deleted file mode 100644 index 5256430..0000000 --- a/dist/server/chunks/sync_B_Og9xl3.mjs +++ /dev/null @@ -1,71 +0,0 @@ -import { l as listSkills } from './skills_COWfD5oy.mjs'; - -async function buildPushScript(baseUrl, skillsDir) { - const lines = [ - "#!/usr/bin/env bash", - "set -euo pipefail", - "", - `SKILLS_DIR="${skillsDir}"`, - `BASE_URL="${baseUrl}"`, - "", - 'if [ ! -d "$SKILLS_DIR" ]; then', - ' echo "No skills directory found at $SKILLS_DIR"', - " exit 1", - "fi", - "", - "count=0", - 'for file in "$SKILLS_DIR"/*.md; do', - ' [ -f "$file" ] || continue', - ' slug=$(basename "$file" .md)', - ' content=$(cat "$file")', - "", - " # Try PUT (update), fallback to POST (create)", - ' status=$(curl -s -o /dev/null -w "%{http_code}" -X PUT \\', - ' -H "Content-Type: application/json" \\', - ' -d "{\\"content\\": $(echo "$content" | jq -Rs .)}" \\', - ' "$BASE_URL/api/skills/$slug")', - "", - ' if [ "$status" = "404" ]; then', - " curl -fsS -X POST \\", - ' -H "Content-Type: application/json" \\', - ' -d "{\\"slug\\": \\"$slug\\", \\"content\\": $(echo "$content" | jq -Rs .)}" \\', - ' "$BASE_URL/api/skills" > /dev/null', - " fi", - "", - ' echo " ✓ $slug"', - " count=$((count + 1))", - "done", - "", - 'echo "Pushed $count skill(s) to $BASE_URL"', - "" - ]; - return lines.join("\n"); -} -async function buildSyncScript(baseUrl, skillsDir) { - const skills = await listSkills(); - const lines = [ - "#!/usr/bin/env bash", - "set -euo pipefail", - "", - `SKILLS_DIR="${skillsDir}"`, - 'mkdir -p "$SKILLS_DIR"', - "" - ]; - if (skills.length === 0) { - lines.push('echo "No skills available to sync."'); - } else { - lines.push(`echo "Syncing ${skills.length} skill(s) from ${baseUrl}..."`); - lines.push(""); - for (const skill of skills) { - const skillUrl = `${baseUrl}/${skill.slug}`; - lines.push(`curl -fsSL "${skillUrl}" -o "$SKILLS_DIR/${skill.slug}.md"`); - lines.push(`echo " ✓ ${skill.name}"`); - } - lines.push(""); - lines.push('echo "Done! Skills synced to $SKILLS_DIR"'); - } - lines.push(""); - return lines.join("\n"); -} - -export { buildPushScript as a, buildSyncScript as b }; diff --git a/dist/server/chunks/tokens_CAzj9Aj8.mjs b/dist/server/chunks/tokens_CAzj9Aj8.mjs new file mode 100644 index 0000000..cb203e0 --- /dev/null +++ b/dist/server/chunks/tokens_CAzj9Aj8.mjs @@ -0,0 +1,55 @@ +import fs from 'node:fs/promises'; +import path from 'node:path'; +import crypto from 'node:crypto'; + +const TOKENS_FILE = path.resolve(process.env.TOKENS_FILE || "data/tokens.json"); +async function readStore() { + try { + const raw = await fs.readFile(TOKENS_FILE, "utf-8"); + return JSON.parse(raw); + } catch { + return {}; + } +} +async function writeStore(store) { + const dir = path.dirname(TOKENS_FILE); + await fs.mkdir(dir, { recursive: true }); + const tmp = TOKENS_FILE + ".tmp"; + await fs.writeFile(tmp, JSON.stringify(store, null, 2), "utf-8"); + await fs.rename(tmp, TOKENS_FILE); +} +function hashToken(token) { + return crypto.createHash("sha256").update(token).digest("hex"); +} +async function generateToken(email, name) { + const store = await readStore(); + if (store[email]) { + throw new Error("Email already registered"); + } + const token = crypto.randomBytes(32).toString("hex"); + store[email] = { + hash: hashToken(token), + name, + createdAt: (/* @__PURE__ */ new Date()).toISOString() + }; + await writeStore(store); + return token; +} +async function verifyToken(email, token) { + if (!email || !token) return false; + const store = await readStore(); + const entry = store[email]; + if (!entry) return false; + return entry.hash === hashToken(token); +} +async function hasToken(email) { + const store = await readStore(); + return Boolean(store[email]); +} +function extractBearerToken(request) { + const auth = request.headers.get("Authorization") || ""; + const match = auth.match(/^Bearer\s+(\S+)$/i); + return match ? match[1] : ""; +} + +export { extractBearerToken as e, generateToken as g, hasToken as h, verifyToken as v }; diff --git a/dist/server/entry.mjs b/dist/server/entry.mjs index 223d78e..0d79591 100644 --- a/dist/server/entry.mjs +++ b/dist/server/entry.mjs @@ -1,36 +1,44 @@ import { renderers } from './renderers.mjs'; -import { c as createExports, s as serverEntrypointModule } from './chunks/_@astrojs-ssr-adapter_DIu76Dvd.mjs'; -import { manifest } from './manifest_BJPuFUv4.mjs'; +import { c as createExports, s as serverEntrypointModule } from './chunks/_@astrojs-ssr-adapter_BeL8VyJ8.mjs'; +import { manifest } from './manifest_Bz0Ba_R4.mjs'; const serverIslandMap = new Map();; const _page0 = () => import('./pages/_image.astro.mjs'); -const _page1 = () => import('./pages/api/skills/_slug_.astro.mjs'); -const _page2 = () => import('./pages/api/skills.astro.mjs'); -const _page3 = () => import('./pages/api/sync/project.astro.mjs'); -const _page4 = () => import('./pages/api/sync.astro.mjs'); -const _page5 = () => import('./pages/gi.astro.mjs'); -const _page6 = () => import('./pages/gp.astro.mjs'); -const _page7 = () => import('./pages/i.astro.mjs'); -const _page8 = () => import('./pages/new.astro.mjs'); -const _page9 = () => import('./pages/p.astro.mjs'); -const _page10 = () => import('./pages/_slug_/edit.astro.mjs'); -const _page11 = () => import('./pages/_slug_.astro.mjs'); -const _page12 = () => import('./pages/index.astro.mjs'); +const _page1 = () => import('./pages/api/auth/register.astro.mjs'); +const _page2 = () => import('./pages/api/auth/verify.astro.mjs'); +const _page3 = () => import('./pages/api/skills/_slug_.astro.mjs'); +const _page4 = () => import('./pages/api/skills.astro.mjs'); +const _page5 = () => import('./pages/api/sync/project.astro.mjs'); +const _page6 = () => import('./pages/api/sync.astro.mjs'); +const _page7 = () => import('./pages/gi.astro.mjs'); +const _page8 = () => import('./pages/gp.astro.mjs'); +const _page9 = () => import('./pages/i.astro.mjs'); +const _page10 = () => import('./pages/new.astro.mjs'); +const _page11 = () => import('./pages/p.astro.mjs'); +const _page12 = () => import('./pages/_slug_/edit.astro.mjs'); +const _page13 = () => import('./pages/_slug_/gi.astro.mjs'); +const _page14 = () => import('./pages/_slug_/i.astro.mjs'); +const _page15 = () => import('./pages/_slug_.astro.mjs'); +const _page16 = () => import('./pages/index.astro.mjs'); const pageMap = new Map([ ["node_modules/astro/dist/assets/endpoint/node.js", _page0], - ["src/pages/api/skills/[slug].ts", _page1], - ["src/pages/api/skills/index.ts", _page2], - ["src/pages/api/sync/project.ts", _page3], - ["src/pages/api/sync/index.ts", _page4], - ["src/pages/gi.ts", _page5], - ["src/pages/gp.ts", _page6], - ["src/pages/i.ts", _page7], - ["src/pages/new.astro", _page8], - ["src/pages/p.ts", _page9], - ["src/pages/[slug]/edit.astro", _page10], - ["src/pages/[slug].astro", _page11], - ["src/pages/index.astro", _page12] + ["src/pages/api/auth/register.ts", _page1], + ["src/pages/api/auth/verify.ts", _page2], + ["src/pages/api/skills/[slug].ts", _page3], + ["src/pages/api/skills/index.ts", _page4], + ["src/pages/api/sync/project.ts", _page5], + ["src/pages/api/sync/index.ts", _page6], + ["src/pages/gi.ts", _page7], + ["src/pages/gp.ts", _page8], + ["src/pages/i.ts", _page9], + ["src/pages/new.astro", _page10], + ["src/pages/p.ts", _page11], + ["src/pages/[slug]/edit.astro", _page12], + ["src/pages/[slug]/gi.ts", _page13], + ["src/pages/[slug]/i.ts", _page14], + ["src/pages/[slug].astro", _page15], + ["src/pages/index.astro", _page16] ]); const _manifest = Object.assign(manifest, { diff --git a/dist/server/manifest_BJPuFUv4.mjs b/dist/server/manifest_BJPuFUv4.mjs deleted file mode 100644 index 7c0d492..0000000 --- a/dist/server/manifest_BJPuFUv4.mjs +++ /dev/null @@ -1,101 +0,0 @@ -import 'piccolore'; -import { p as decodeKey } from './chunks/astro/server_B-2LxKLH.mjs'; -import 'clsx'; -import { N as NOOP_MIDDLEWARE_FN } from './chunks/astro-designed-error-pages_B_BAqCrl.mjs'; -import 'es-module-lexer'; - -function sanitizeParams(params) { - return Object.fromEntries( - Object.entries(params).map(([key, value]) => { - if (typeof value === "string") { - return [key, value.normalize().replace(/#/g, "%23").replace(/\?/g, "%3F")]; - } - return [key, value]; - }) - ); -} -function getParameter(part, params) { - if (part.spread) { - return params[part.content.slice(3)] || ""; - } - if (part.dynamic) { - if (!params[part.content]) { - throw new TypeError(`Missing parameter: ${part.content}`); - } - return params[part.content]; - } - return part.content.normalize().replace(/\?/g, "%3F").replace(/#/g, "%23").replace(/%5B/g, "[").replace(/%5D/g, "]"); -} -function getSegment(segment, params) { - const segmentPath = segment.map((part) => getParameter(part, params)).join(""); - return segmentPath ? "/" + segmentPath : ""; -} -function getRouteGenerator(segments, addTrailingSlash) { - return (params) => { - const sanitizedParams = sanitizeParams(params); - let trailing = ""; - if (addTrailingSlash === "always" && segments.length) { - trailing = "/"; - } - const path = segments.map((segment) => getSegment(segment, sanitizedParams)).join("") + trailing; - return path || "/"; - }; -} - -function deserializeRouteData(rawRouteData) { - return { - route: rawRouteData.route, - type: rawRouteData.type, - pattern: new RegExp(rawRouteData.pattern), - params: rawRouteData.params, - component: rawRouteData.component, - generate: getRouteGenerator(rawRouteData.segments, rawRouteData._meta.trailingSlash), - pathname: rawRouteData.pathname || void 0, - segments: rawRouteData.segments, - prerender: rawRouteData.prerender, - redirect: rawRouteData.redirect, - redirectRoute: rawRouteData.redirectRoute ? deserializeRouteData(rawRouteData.redirectRoute) : void 0, - fallbackRoutes: rawRouteData.fallbackRoutes.map((fallback) => { - return deserializeRouteData(fallback); - }), - isIndex: rawRouteData.isIndex, - origin: rawRouteData.origin - }; -} - -function deserializeManifest(serializedManifest) { - const routes = []; - for (const serializedRoute of serializedManifest.routes) { - routes.push({ - ...serializedRoute, - routeData: deserializeRouteData(serializedRoute.routeData) - }); - const route = serializedRoute; - route.routeData = deserializeRouteData(serializedRoute.routeData); - } - const assets = new Set(serializedManifest.assets); - const componentMetadata = new Map(serializedManifest.componentMetadata); - const inlinedScripts = new Map(serializedManifest.inlinedScripts); - const clientDirectives = new Map(serializedManifest.clientDirectives); - const serverIslandNameMap = new Map(serializedManifest.serverIslandNameMap); - const key = decodeKey(serializedManifest.key); - return { - // in case user middleware exists, this no-op middleware will be reassigned (see plugin-ssr.ts) - middleware() { - return { onRequest: NOOP_MIDDLEWARE_FN }; - }, - ...serializedManifest, - assets, - componentMetadata, - inlinedScripts, - clientDirectives, - routes, - serverIslandNameMap, - key - }; -} - -const manifest = deserializeManifest({"hrefRoot":"file:///Users/alex/projects/skillit/","cacheDir":"file:///Users/alex/projects/skillit/node_modules/.astro/","outDir":"file:///Users/alex/projects/skillit/dist/","srcDir":"file:///Users/alex/projects/skillit/src/","publicDir":"file:///Users/alex/projects/skillit/public/","buildClientDir":"file:///Users/alex/projects/skillit/dist/client/","buildServerDir":"file:///Users/alex/projects/skillit/dist/server/","adapterName":"@astrojs/node","routes":[{"file":"","links":[],"scripts":[],"styles":[],"routeData":{"type":"page","component":"_server-islands.astro","params":["name"],"segments":[[{"content":"_server-islands","dynamic":false,"spread":false}],[{"content":"name","dynamic":true,"spread":false}]],"pattern":"^\\/_server-islands\\/([^/]+?)\\/?$","prerender":false,"isIndex":false,"fallbackRoutes":[],"route":"/_server-islands/[name]","origin":"internal","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"styles":[],"routeData":{"type":"endpoint","isIndex":false,"route":"/_image","pattern":"^\\/_image\\/?$","segments":[[{"content":"_image","dynamic":false,"spread":false}]],"params":[],"component":"node_modules/astro/dist/assets/endpoint/node.js","pathname":"/_image","prerender":false,"fallbackRoutes":[],"origin":"internal","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"styles":[],"routeData":{"route":"/api/skills/[slug]","isIndex":false,"type":"endpoint","pattern":"^\\/api\\/skills\\/([^/]+?)\\/?$","segments":[[{"content":"api","dynamic":false,"spread":false}],[{"content":"skills","dynamic":false,"spread":false}],[{"content":"slug","dynamic":true,"spread":false}]],"params":["slug"],"component":"src/pages/api/skills/[slug].ts","prerender":false,"fallbackRoutes":[],"distURL":[],"origin":"project","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"styles":[],"routeData":{"route":"/api/skills","isIndex":true,"type":"endpoint","pattern":"^\\/api\\/skills\\/?$","segments":[[{"content":"api","dynamic":false,"spread":false}],[{"content":"skills","dynamic":false,"spread":false}]],"params":[],"component":"src/pages/api/skills/index.ts","pathname":"/api/skills","prerender":false,"fallbackRoutes":[],"distURL":[],"origin":"project","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"styles":[],"routeData":{"route":"/api/sync/project","isIndex":false,"type":"endpoint","pattern":"^\\/api\\/sync\\/project\\/?$","segments":[[{"content":"api","dynamic":false,"spread":false}],[{"content":"sync","dynamic":false,"spread":false}],[{"content":"project","dynamic":false,"spread":false}]],"params":[],"component":"src/pages/api/sync/project.ts","pathname":"/api/sync/project","prerender":false,"fallbackRoutes":[],"distURL":[],"origin":"project","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"styles":[],"routeData":{"route":"/api/sync","isIndex":true,"type":"endpoint","pattern":"^\\/api\\/sync\\/?$","segments":[[{"content":"api","dynamic":false,"spread":false}],[{"content":"sync","dynamic":false,"spread":false}]],"params":[],"component":"src/pages/api/sync/index.ts","pathname":"/api/sync","prerender":false,"fallbackRoutes":[],"distURL":[],"origin":"project","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"styles":[],"routeData":{"route":"/gi","isIndex":false,"type":"endpoint","pattern":"^\\/gi\\/?$","segments":[[{"content":"gi","dynamic":false,"spread":false}]],"params":[],"component":"src/pages/gi.ts","pathname":"/gi","prerender":false,"fallbackRoutes":[],"distURL":[],"origin":"project","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"styles":[],"routeData":{"route":"/gp","isIndex":false,"type":"endpoint","pattern":"^\\/gp\\/?$","segments":[[{"content":"gp","dynamic":false,"spread":false}]],"params":[],"component":"src/pages/gp.ts","pathname":"/gp","prerender":false,"fallbackRoutes":[],"distURL":[],"origin":"project","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"styles":[],"routeData":{"route":"/i","isIndex":false,"type":"endpoint","pattern":"^\\/i\\/?$","segments":[[{"content":"i","dynamic":false,"spread":false}]],"params":[],"component":"src/pages/i.ts","pathname":"/i","prerender":false,"fallbackRoutes":[],"distURL":[],"origin":"project","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"styles":[{"type":"external","src":"/_astro/_slug_.CExMWyw3.css"}],"routeData":{"route":"/new","isIndex":false,"type":"page","pattern":"^\\/new\\/?$","segments":[[{"content":"new","dynamic":false,"spread":false}]],"params":[],"component":"src/pages/new.astro","pathname":"/new","prerender":false,"fallbackRoutes":[],"distURL":[],"origin":"project","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"styles":[],"routeData":{"route":"/p","isIndex":false,"type":"endpoint","pattern":"^\\/p\\/?$","segments":[[{"content":"p","dynamic":false,"spread":false}]],"params":[],"component":"src/pages/p.ts","pathname":"/p","prerender":false,"fallbackRoutes":[],"distURL":[],"origin":"project","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"styles":[{"type":"external","src":"/_astro/_slug_.CExMWyw3.css"}],"routeData":{"route":"/[slug]/edit","isIndex":false,"type":"page","pattern":"^\\/([^/]+?)\\/edit\\/?$","segments":[[{"content":"slug","dynamic":true,"spread":false}],[{"content":"edit","dynamic":false,"spread":false}]],"params":["slug"],"component":"src/pages/[slug]/edit.astro","prerender":false,"fallbackRoutes":[],"distURL":[],"origin":"project","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"styles":[{"type":"external","src":"/_astro/_slug_.CExMWyw3.css"}],"routeData":{"route":"/[slug]","isIndex":false,"type":"page","pattern":"^\\/([^/]+?)\\/?$","segments":[[{"content":"slug","dynamic":true,"spread":false}]],"params":["slug"],"component":"src/pages/[slug].astro","prerender":false,"fallbackRoutes":[],"distURL":[],"origin":"project","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"styles":[{"type":"external","src":"/_astro/_slug_.CExMWyw3.css"}],"routeData":{"route":"/","isIndex":true,"type":"page","pattern":"^\\/$","segments":[],"params":[],"component":"src/pages/index.astro","pathname":"/","prerender":false,"fallbackRoutes":[],"distURL":[],"origin":"project","_meta":{"trailingSlash":"ignore"}}}],"base":"/","trailingSlash":"ignore","compressHTML":true,"componentMetadata":[["/Users/alex/projects/skillit/src/pages/[slug].astro",{"propagation":"none","containsHead":true}],["/Users/alex/projects/skillit/src/pages/[slug]/edit.astro",{"propagation":"none","containsHead":true}],["/Users/alex/projects/skillit/src/pages/index.astro",{"propagation":"none","containsHead":true}],["/Users/alex/projects/skillit/src/pages/new.astro",{"propagation":"none","containsHead":true}]],"renderers":[],"clientDirectives":[["idle","(()=>{var l=(n,t)=>{let i=async()=>{await(await n())()},e=typeof t.value==\"object\"?t.value:void 0,s={timeout:e==null?void 0:e.timeout};\"requestIdleCallback\"in window?window.requestIdleCallback(i,s):setTimeout(i,s.timeout||200)};(self.Astro||(self.Astro={})).idle=l;window.dispatchEvent(new Event(\"astro:idle\"));})();"],["load","(()=>{var e=async t=>{await(await t())()};(self.Astro||(self.Astro={})).load=e;window.dispatchEvent(new Event(\"astro:load\"));})();"],["media","(()=>{var n=(a,t)=>{let i=async()=>{await(await a())()};if(t.value){let e=matchMedia(t.value);e.matches?i():e.addEventListener(\"change\",i,{once:!0})}};(self.Astro||(self.Astro={})).media=n;window.dispatchEvent(new Event(\"astro:media\"));})();"],["only","(()=>{var e=async t=>{await(await t())()};(self.Astro||(self.Astro={})).only=e;window.dispatchEvent(new Event(\"astro:only\"));})();"],["visible","(()=>{var a=(s,i,o)=>{let r=async()=>{await(await s())()},t=typeof i.value==\"object\"?i.value:void 0,c={rootMargin:t==null?void 0:t.rootMargin},n=new IntersectionObserver(e=>{for(let l of e)if(l.isIntersecting){n.disconnect(),r();break}},c);for(let e of o.children)n.observe(e)};(self.Astro||(self.Astro={})).visible=a;window.dispatchEvent(new Event(\"astro:visible\"));})();"]],"entryModules":{"\u0000noop-middleware":"_noop-middleware.mjs","\u0000virtual:astro:actions/noop-entrypoint":"noop-entrypoint.mjs","\u0000@astro-page:src/pages/api/skills/[slug]@_@ts":"pages/api/skills/_slug_.astro.mjs","\u0000@astro-page:src/pages/api/skills/index@_@ts":"pages/api/skills.astro.mjs","\u0000@astro-page:src/pages/api/sync/project@_@ts":"pages/api/sync/project.astro.mjs","\u0000@astro-page:src/pages/api/sync/index@_@ts":"pages/api/sync.astro.mjs","\u0000@astro-page:src/pages/gi@_@ts":"pages/gi.astro.mjs","\u0000@astro-page:src/pages/gp@_@ts":"pages/gp.astro.mjs","\u0000@astro-page:src/pages/i@_@ts":"pages/i.astro.mjs","\u0000@astro-page:src/pages/new@_@astro":"pages/new.astro.mjs","\u0000@astro-page:src/pages/p@_@ts":"pages/p.astro.mjs","\u0000@astro-page:src/pages/[slug]/edit@_@astro":"pages/_slug_/edit.astro.mjs","\u0000@astro-page:src/pages/[slug]@_@astro":"pages/_slug_.astro.mjs","\u0000@astro-page:src/pages/index@_@astro":"pages/index.astro.mjs","\u0000@astrojs-ssr-virtual-entry":"entry.mjs","\u0000@astro-renderers":"renderers.mjs","\u0000@astro-page:node_modules/astro/dist/assets/endpoint/node@_@js":"pages/_image.astro.mjs","\u0000@astrojs-ssr-adapter":"_@astrojs-ssr-adapter.mjs","\u0000@astrojs-manifest":"manifest_BJPuFUv4.mjs","/Users/alex/projects/skillit/node_modules/unstorage/drivers/fs-lite.mjs":"chunks/fs-lite_COtHaKzy.mjs","/Users/alex/projects/skillit/node_modules/astro/dist/assets/services/sharp.js":"chunks/sharp_CRCimLOL.mjs","/Users/alex/projects/skillit/src/components/SkillEditor.vue":"_astro/SkillEditor.CYIrd0Il.js","/Users/alex/projects/skillit/src/components/DeleteButton.vue":"_astro/DeleteButton.CyEek_0f.js","/Users/alex/projects/skillit/src/components/SkillSearch.vue":"_astro/SkillSearch.DXmAyDfU.js","@astrojs/vue/client.js":"_astro/client.BOmCbIK_.js","/Users/alex/projects/skillit/src/pages/[slug].astro?astro&type=script&index=0&lang.ts":"_astro/_slug_.astro_astro_type_script_index_0_lang.CiA7J_Uv.js","/Users/alex/projects/skillit/src/pages/index.astro?astro&type=script&index=0&lang.ts":"_astro/index.astro_astro_type_script_index_0_lang.CIFhuury.js","astro:scripts/before-hydration.js":""},"inlinedScripts":[["/Users/alex/projects/skillit/src/pages/[slug].astro?astro&type=script&index=0&lang.ts","const t=document.getElementById(\"copy-install\");t&&t.addEventListener(\"click\",()=>{const e=t.previousElementSibling?.textContent?.trim();e&&(navigator.clipboard.writeText(e),t.textContent=\"Copied!\",setTimeout(()=>t.textContent=\"Copy\",1500))});"],["/Users/alex/projects/skillit/src/pages/index.astro?astro&type=script&index=0&lang.ts","document.querySelectorAll(\"#copy-btn, [data-copy]\").forEach(t=>{t.addEventListener(\"click\",()=>{const e=t.previousElementSibling?.textContent?.trim();e&&(navigator.clipboard.writeText(e),t.textContent=\"Copied!\",setTimeout(()=>t.textContent=\"Copy\",1500))})});"]],"assets":["/_astro/_slug_.CExMWyw3.css","/_astro/DeleteButton.CyEek_0f.js","/_astro/SkillEditor.CYIrd0Il.js","/_astro/SkillSearch.DXmAyDfU.js","/_astro/_plugin-vue_export-helper.DlAUqK2U.js","/_astro/client.BOmCbIK_.js","/_astro/runtime-core.esm-bundler.D9KZBfyO.js","/_astro/runtime-dom.esm-bundler.ALO2-icn.js"],"buildFormat":"directory","checkOrigin":true,"allowedDomains":[],"serverIslandNameMap":[],"key":"txKfmGdH8Hh0YbGPbndvoot0Lb8gag/JaHFoHxHfld8=","sessionConfig":{"driver":"fs-lite","options":{"base":"/Users/alex/projects/skillit/node_modules/.astro/sessions"}}}); -if (manifest.sessionConfig) manifest.sessionConfig.driverModule = () => import('./chunks/fs-lite_COtHaKzy.mjs'); - -export { manifest }; diff --git a/dist/server/manifest_Bz0Ba_R4.mjs b/dist/server/manifest_Bz0Ba_R4.mjs new file mode 100644 index 0000000..7b2aba7 --- /dev/null +++ b/dist/server/manifest_Bz0Ba_R4.mjs @@ -0,0 +1,101 @@ +import 'piccolore'; +import { p as decodeKey } from './chunks/astro/server_CF97kUu8.mjs'; +import 'clsx'; +import { N as NOOP_MIDDLEWARE_FN } from './chunks/astro-designed-error-pages_DSexancP.mjs'; +import 'es-module-lexer'; + +function sanitizeParams(params) { + return Object.fromEntries( + Object.entries(params).map(([key, value]) => { + if (typeof value === "string") { + return [key, value.normalize().replace(/#/g, "%23").replace(/\?/g, "%3F")]; + } + return [key, value]; + }) + ); +} +function getParameter(part, params) { + if (part.spread) { + return params[part.content.slice(3)] || ""; + } + if (part.dynamic) { + if (!params[part.content]) { + throw new TypeError(`Missing parameter: ${part.content}`); + } + return params[part.content]; + } + return part.content.normalize().replace(/\?/g, "%3F").replace(/#/g, "%23").replace(/%5B/g, "[").replace(/%5D/g, "]"); +} +function getSegment(segment, params) { + const segmentPath = segment.map((part) => getParameter(part, params)).join(""); + return segmentPath ? "/" + segmentPath : ""; +} +function getRouteGenerator(segments, addTrailingSlash) { + return (params) => { + const sanitizedParams = sanitizeParams(params); + let trailing = ""; + if (addTrailingSlash === "always" && segments.length) { + trailing = "/"; + } + const path = segments.map((segment) => getSegment(segment, sanitizedParams)).join("") + trailing; + return path || "/"; + }; +} + +function deserializeRouteData(rawRouteData) { + return { + route: rawRouteData.route, + type: rawRouteData.type, + pattern: new RegExp(rawRouteData.pattern), + params: rawRouteData.params, + component: rawRouteData.component, + generate: getRouteGenerator(rawRouteData.segments, rawRouteData._meta.trailingSlash), + pathname: rawRouteData.pathname || void 0, + segments: rawRouteData.segments, + prerender: rawRouteData.prerender, + redirect: rawRouteData.redirect, + redirectRoute: rawRouteData.redirectRoute ? deserializeRouteData(rawRouteData.redirectRoute) : void 0, + fallbackRoutes: rawRouteData.fallbackRoutes.map((fallback) => { + return deserializeRouteData(fallback); + }), + isIndex: rawRouteData.isIndex, + origin: rawRouteData.origin + }; +} + +function deserializeManifest(serializedManifest) { + const routes = []; + for (const serializedRoute of serializedManifest.routes) { + routes.push({ + ...serializedRoute, + routeData: deserializeRouteData(serializedRoute.routeData) + }); + const route = serializedRoute; + route.routeData = deserializeRouteData(serializedRoute.routeData); + } + const assets = new Set(serializedManifest.assets); + const componentMetadata = new Map(serializedManifest.componentMetadata); + const inlinedScripts = new Map(serializedManifest.inlinedScripts); + const clientDirectives = new Map(serializedManifest.clientDirectives); + const serverIslandNameMap = new Map(serializedManifest.serverIslandNameMap); + const key = decodeKey(serializedManifest.key); + return { + // in case user middleware exists, this no-op middleware will be reassigned (see plugin-ssr.ts) + middleware() { + return { onRequest: NOOP_MIDDLEWARE_FN }; + }, + ...serializedManifest, + assets, + componentMetadata, + inlinedScripts, + clientDirectives, + routes, + serverIslandNameMap, + key + }; +} + +const manifest = deserializeManifest({"hrefRoot":"file:///Users/alex/projects/skillit/","cacheDir":"file:///Users/alex/projects/skillit/node_modules/.astro/","outDir":"file:///Users/alex/projects/skillit/dist/","srcDir":"file:///Users/alex/projects/skillit/src/","publicDir":"file:///Users/alex/projects/skillit/public/","buildClientDir":"file:///Users/alex/projects/skillit/dist/client/","buildServerDir":"file:///Users/alex/projects/skillit/dist/server/","adapterName":"@astrojs/node","routes":[{"file":"","links":[],"scripts":[],"styles":[],"routeData":{"type":"page","component":"_server-islands.astro","params":["name"],"segments":[[{"content":"_server-islands","dynamic":false,"spread":false}],[{"content":"name","dynamic":true,"spread":false}]],"pattern":"^\\/_server-islands\\/([^/]+?)\\/?$","prerender":false,"isIndex":false,"fallbackRoutes":[],"route":"/_server-islands/[name]","origin":"internal","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"styles":[],"routeData":{"type":"endpoint","isIndex":false,"route":"/_image","pattern":"^\\/_image\\/?$","segments":[[{"content":"_image","dynamic":false,"spread":false}]],"params":[],"component":"node_modules/astro/dist/assets/endpoint/node.js","pathname":"/_image","prerender":false,"fallbackRoutes":[],"origin":"internal","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"styles":[],"routeData":{"route":"/api/auth/register","isIndex":false,"type":"endpoint","pattern":"^\\/api\\/auth\\/register\\/?$","segments":[[{"content":"api","dynamic":false,"spread":false}],[{"content":"auth","dynamic":false,"spread":false}],[{"content":"register","dynamic":false,"spread":false}]],"params":[],"component":"src/pages/api/auth/register.ts","pathname":"/api/auth/register","prerender":false,"fallbackRoutes":[],"distURL":[],"origin":"project","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"styles":[],"routeData":{"route":"/api/auth/verify","isIndex":false,"type":"endpoint","pattern":"^\\/api\\/auth\\/verify\\/?$","segments":[[{"content":"api","dynamic":false,"spread":false}],[{"content":"auth","dynamic":false,"spread":false}],[{"content":"verify","dynamic":false,"spread":false}]],"params":[],"component":"src/pages/api/auth/verify.ts","pathname":"/api/auth/verify","prerender":false,"fallbackRoutes":[],"distURL":[],"origin":"project","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"styles":[],"routeData":{"route":"/api/skills/[slug]","isIndex":false,"type":"endpoint","pattern":"^\\/api\\/skills\\/([^/]+?)\\/?$","segments":[[{"content":"api","dynamic":false,"spread":false}],[{"content":"skills","dynamic":false,"spread":false}],[{"content":"slug","dynamic":true,"spread":false}]],"params":["slug"],"component":"src/pages/api/skills/[slug].ts","prerender":false,"fallbackRoutes":[],"distURL":[],"origin":"project","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"styles":[],"routeData":{"route":"/api/skills","isIndex":true,"type":"endpoint","pattern":"^\\/api\\/skills\\/?$","segments":[[{"content":"api","dynamic":false,"spread":false}],[{"content":"skills","dynamic":false,"spread":false}]],"params":[],"component":"src/pages/api/skills/index.ts","pathname":"/api/skills","prerender":false,"fallbackRoutes":[],"distURL":[],"origin":"project","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"styles":[],"routeData":{"route":"/api/sync/project","isIndex":false,"type":"endpoint","pattern":"^\\/api\\/sync\\/project\\/?$","segments":[[{"content":"api","dynamic":false,"spread":false}],[{"content":"sync","dynamic":false,"spread":false}],[{"content":"project","dynamic":false,"spread":false}]],"params":[],"component":"src/pages/api/sync/project.ts","pathname":"/api/sync/project","prerender":false,"fallbackRoutes":[],"distURL":[],"origin":"project","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"styles":[],"routeData":{"route":"/api/sync","isIndex":true,"type":"endpoint","pattern":"^\\/api\\/sync\\/?$","segments":[[{"content":"api","dynamic":false,"spread":false}],[{"content":"sync","dynamic":false,"spread":false}]],"params":[],"component":"src/pages/api/sync/index.ts","pathname":"/api/sync","prerender":false,"fallbackRoutes":[],"distURL":[],"origin":"project","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"styles":[],"routeData":{"route":"/gi","isIndex":false,"type":"endpoint","pattern":"^\\/gi\\/?$","segments":[[{"content":"gi","dynamic":false,"spread":false}]],"params":[],"component":"src/pages/gi.ts","pathname":"/gi","prerender":false,"fallbackRoutes":[],"distURL":[],"origin":"project","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"styles":[],"routeData":{"route":"/gp","isIndex":false,"type":"endpoint","pattern":"^\\/gp\\/?$","segments":[[{"content":"gp","dynamic":false,"spread":false}]],"params":[],"component":"src/pages/gp.ts","pathname":"/gp","prerender":false,"fallbackRoutes":[],"distURL":[],"origin":"project","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"styles":[],"routeData":{"route":"/i","isIndex":false,"type":"endpoint","pattern":"^\\/i\\/?$","segments":[[{"content":"i","dynamic":false,"spread":false}]],"params":[],"component":"src/pages/i.ts","pathname":"/i","prerender":false,"fallbackRoutes":[],"distURL":[],"origin":"project","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"styles":[{"type":"external","src":"/_astro/_slug_.DRpcPMTm.css"}],"routeData":{"route":"/new","isIndex":false,"type":"page","pattern":"^\\/new\\/?$","segments":[[{"content":"new","dynamic":false,"spread":false}]],"params":[],"component":"src/pages/new.astro","pathname":"/new","prerender":false,"fallbackRoutes":[],"distURL":[],"origin":"project","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"styles":[],"routeData":{"route":"/p","isIndex":false,"type":"endpoint","pattern":"^\\/p\\/?$","segments":[[{"content":"p","dynamic":false,"spread":false}]],"params":[],"component":"src/pages/p.ts","pathname":"/p","prerender":false,"fallbackRoutes":[],"distURL":[],"origin":"project","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"styles":[{"type":"external","src":"/_astro/_slug_.DRpcPMTm.css"}],"routeData":{"route":"/[slug]/edit","isIndex":false,"type":"page","pattern":"^\\/([^/]+?)\\/edit\\/?$","segments":[[{"content":"slug","dynamic":true,"spread":false}],[{"content":"edit","dynamic":false,"spread":false}]],"params":["slug"],"component":"src/pages/[slug]/edit.astro","prerender":false,"fallbackRoutes":[],"distURL":[],"origin":"project","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"styles":[],"routeData":{"route":"/[slug]/gi","isIndex":false,"type":"endpoint","pattern":"^\\/([^/]+?)\\/gi\\/?$","segments":[[{"content":"slug","dynamic":true,"spread":false}],[{"content":"gi","dynamic":false,"spread":false}]],"params":["slug"],"component":"src/pages/[slug]/gi.ts","prerender":false,"fallbackRoutes":[],"distURL":[],"origin":"project","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"styles":[],"routeData":{"route":"/[slug]/i","isIndex":false,"type":"endpoint","pattern":"^\\/([^/]+?)\\/i\\/?$","segments":[[{"content":"slug","dynamic":true,"spread":false}],[{"content":"i","dynamic":false,"spread":false}]],"params":["slug"],"component":"src/pages/[slug]/i.ts","prerender":false,"fallbackRoutes":[],"distURL":[],"origin":"project","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"styles":[{"type":"external","src":"/_astro/_slug_.DRpcPMTm.css"},{"type":"inline","content":".os-tab[data-astro-cid-yvbahnfj]{color:var(--color-gray-600)}.os-tab[data-astro-cid-yvbahnfj].active{background:#ffffff0f;color:#fff}\n"}],"routeData":{"route":"/[slug]","isIndex":false,"type":"page","pattern":"^\\/([^/]+?)\\/?$","segments":[[{"content":"slug","dynamic":true,"spread":false}]],"params":["slug"],"component":"src/pages/[slug].astro","prerender":false,"fallbackRoutes":[],"distURL":[],"origin":"project","_meta":{"trailingSlash":"ignore"}}},{"file":"","links":[],"scripts":[],"styles":[{"type":"external","src":"/_astro/_slug_.DRpcPMTm.css"},{"type":"inline","content":".os-tab[data-astro-cid-j7pv25f6]{color:var(--color-gray-600, #6b7280)}.os-tab[data-astro-cid-j7pv25f6].active{background:#ffffff0f;color:#fff}\n"}],"routeData":{"route":"/","isIndex":true,"type":"page","pattern":"^\\/$","segments":[],"params":[],"component":"src/pages/index.astro","pathname":"/","prerender":false,"fallbackRoutes":[],"distURL":[],"origin":"project","_meta":{"trailingSlash":"ignore"}}}],"site":"https://skills.here.run.place","base":"/","trailingSlash":"ignore","compressHTML":true,"componentMetadata":[["/Users/alex/projects/skillit/src/pages/[slug].astro",{"propagation":"none","containsHead":true}],["/Users/alex/projects/skillit/src/pages/[slug]/edit.astro",{"propagation":"none","containsHead":true}],["/Users/alex/projects/skillit/src/pages/index.astro",{"propagation":"none","containsHead":true}],["/Users/alex/projects/skillit/src/pages/new.astro",{"propagation":"none","containsHead":true}]],"renderers":[],"clientDirectives":[["idle","(()=>{var l=(n,t)=>{let i=async()=>{await(await n())()},e=typeof t.value==\"object\"?t.value:void 0,s={timeout:e==null?void 0:e.timeout};\"requestIdleCallback\"in window?window.requestIdleCallback(i,s):setTimeout(i,s.timeout||200)};(self.Astro||(self.Astro={})).idle=l;window.dispatchEvent(new Event(\"astro:idle\"));})();"],["load","(()=>{var e=async t=>{await(await t())()};(self.Astro||(self.Astro={})).load=e;window.dispatchEvent(new Event(\"astro:load\"));})();"],["media","(()=>{var n=(a,t)=>{let i=async()=>{await(await a())()};if(t.value){let e=matchMedia(t.value);e.matches?i():e.addEventListener(\"change\",i,{once:!0})}};(self.Astro||(self.Astro={})).media=n;window.dispatchEvent(new Event(\"astro:media\"));})();"],["only","(()=>{var e=async t=>{await(await t())()};(self.Astro||(self.Astro={})).only=e;window.dispatchEvent(new Event(\"astro:only\"));})();"],["visible","(()=>{var a=(s,i,o)=>{let r=async()=>{await(await s())()},t=typeof i.value==\"object\"?i.value:void 0,c={rootMargin:t==null?void 0:t.rootMargin},n=new IntersectionObserver(e=>{for(let l of e)if(l.isIntersecting){n.disconnect(),r();break}},c);for(let e of o.children)n.observe(e)};(self.Astro||(self.Astro={})).visible=a;window.dispatchEvent(new Event(\"astro:visible\"));})();"]],"entryModules":{"\u0000noop-middleware":"_noop-middleware.mjs","\u0000virtual:astro:actions/noop-entrypoint":"noop-entrypoint.mjs","\u0000@astro-page:src/pages/api/auth/register@_@ts":"pages/api/auth/register.astro.mjs","\u0000@astro-page:src/pages/api/auth/verify@_@ts":"pages/api/auth/verify.astro.mjs","\u0000@astro-page:src/pages/api/skills/[slug]@_@ts":"pages/api/skills/_slug_.astro.mjs","\u0000@astro-page:src/pages/api/skills/index@_@ts":"pages/api/skills.astro.mjs","\u0000@astro-page:src/pages/api/sync/project@_@ts":"pages/api/sync/project.astro.mjs","\u0000@astro-page:src/pages/api/sync/index@_@ts":"pages/api/sync.astro.mjs","\u0000@astro-page:src/pages/gi@_@ts":"pages/gi.astro.mjs","\u0000@astro-page:src/pages/gp@_@ts":"pages/gp.astro.mjs","\u0000@astro-page:src/pages/i@_@ts":"pages/i.astro.mjs","\u0000@astro-page:src/pages/new@_@astro":"pages/new.astro.mjs","\u0000@astro-page:src/pages/p@_@ts":"pages/p.astro.mjs","\u0000@astro-page:src/pages/[slug]/edit@_@astro":"pages/_slug_/edit.astro.mjs","\u0000@astro-page:src/pages/[slug]/gi@_@ts":"pages/_slug_/gi.astro.mjs","\u0000@astro-page:src/pages/[slug]/i@_@ts":"pages/_slug_/i.astro.mjs","\u0000@astro-page:src/pages/[slug]@_@astro":"pages/_slug_.astro.mjs","\u0000@astro-page:src/pages/index@_@astro":"pages/index.astro.mjs","\u0000@astrojs-ssr-virtual-entry":"entry.mjs","\u0000@astro-renderers":"renderers.mjs","\u0000@astro-page:node_modules/astro/dist/assets/endpoint/node@_@js":"pages/_image.astro.mjs","\u0000@astrojs-ssr-adapter":"_@astrojs-ssr-adapter.mjs","\u0000@astrojs-manifest":"manifest_Bz0Ba_R4.mjs","/Users/alex/projects/skillit/node_modules/unstorage/drivers/fs-lite.mjs":"chunks/fs-lite_COtHaKzy.mjs","/Users/alex/projects/skillit/node_modules/astro/dist/assets/services/sharp.js":"chunks/sharp_D9uxjd11.mjs","/Users/alex/projects/skillit/src/components/SkillEditor.vue":"_astro/SkillEditor.DYeR1V3X.js","/Users/alex/projects/skillit/src/components/EditGate.vue":"_astro/EditGate.mFTQzSOo.js","/Users/alex/projects/skillit/src/components/DeleteButton.vue":"_astro/DeleteButton.CHpgpUL1.js","/Users/alex/projects/skillit/src/components/SkillSearch.vue":"_astro/SkillSearch.A7FO5axR.js","@astrojs/vue/client.js":"_astro/client.BnTlSu1B.js","/Users/alex/projects/skillit/src/pages/[slug].astro?astro&type=script&index=0&lang.ts":"_astro/_slug_.astro_astro_type_script_index_0_lang.CRZqxzg1.js","/Users/alex/projects/skillit/src/pages/index.astro?astro&type=script&index=0&lang.ts":"_astro/index.astro_astro_type_script_index_0_lang.CRZqxzg1.js","astro:scripts/before-hydration.js":""},"inlinedScripts":[["/Users/alex/projects/skillit/src/pages/[slug].astro?astro&type=script&index=0&lang.ts","const n=/Win/.test(navigator.platform);function c(t){document.querySelectorAll(\"[data-cmd]\").forEach(e=>{e.classList.toggle(\"hidden\",e.dataset.cmd!==t)}),document.querySelectorAll(\".os-tab\").forEach(e=>{e.classList.toggle(\"active\",e.dataset.os===t)})}c(n?\"win\":\"unix\");document.querySelectorAll(\".os-tab\").forEach(t=>{t.addEventListener(\"click\",()=>c(t.dataset.os))});document.querySelectorAll(\"[data-copy]\").forEach(t=>{t.addEventListener(\"click\",()=>{const o=t.parentElement.querySelector(\"[data-cmd]:not(.hidden)\")?.textContent?.trim();o&&(navigator.clipboard.writeText(o),t.textContent=\"Copied!\",setTimeout(()=>t.textContent=\"Copy\",1500))})});"],["/Users/alex/projects/skillit/src/pages/index.astro?astro&type=script&index=0&lang.ts","const n=/Win/.test(navigator.platform);function c(t){document.querySelectorAll(\"[data-cmd]\").forEach(e=>{e.classList.toggle(\"hidden\",e.dataset.cmd!==t)}),document.querySelectorAll(\".os-tab\").forEach(e=>{e.classList.toggle(\"active\",e.dataset.os===t)})}c(n?\"win\":\"unix\");document.querySelectorAll(\".os-tab\").forEach(t=>{t.addEventListener(\"click\",()=>c(t.dataset.os))});document.querySelectorAll(\"[data-copy]\").forEach(t=>{t.addEventListener(\"click\",()=>{const o=t.parentElement.querySelector(\"[data-cmd]:not(.hidden)\")?.textContent?.trim();o&&(navigator.clipboard.writeText(o),t.textContent=\"Copied!\",setTimeout(()=>t.textContent=\"Copy\",1500))})});"]],"assets":["/_astro/_slug_.DRpcPMTm.css","/favicon.svg","/_astro/DeleteButton.CHpgpUL1.js","/_astro/EditGate.mFTQzSOo.js","/_astro/SkillEditor.DYeR1V3X.js","/_astro/SkillSearch.A7FO5axR.js","/_astro/_plugin-vue_export-helper.DlAUqK2U.js","/_astro/client.BnTlSu1B.js","/_astro/runtime-dom.esm-bundler.A7MyAQcw.js"],"buildFormat":"directory","checkOrigin":true,"allowedDomains":[],"serverIslandNameMap":[],"key":"6Xc2Lr78SYdu5wzlmowCLZe6tfLEMED9cWb4WsmVKV4=","sessionConfig":{"driver":"fs-lite","options":{"base":"/Users/alex/projects/skillit/node_modules/.astro/sessions"}}}); +if (manifest.sessionConfig) manifest.sessionConfig.driverModule = () => import('./chunks/fs-lite_COtHaKzy.mjs'); + +export { manifest }; diff --git a/dist/server/pages/_image.astro.mjs b/dist/server/pages/_image.astro.mjs index 564b97d..9b0c375 100644 --- a/dist/server/pages/_image.astro.mjs +++ b/dist/server/pages/_image.astro.mjs @@ -1,2 +1,2 @@ -export { a as page } from '../chunks/node_WXNYuHqd.mjs'; +export { a as page } from '../chunks/node_HH9e2ntY.mjs'; export { renderers } from '../renderers.mjs'; diff --git a/dist/server/pages/_slug_.astro.mjs b/dist/server/pages/_slug_.astro.mjs index 9f0df25..681d37f 100644 --- a/dist/server/pages/_slug_.astro.mjs +++ b/dist/server/pages/_slug_.astro.mjs @@ -1,45 +1,240 @@ -import { e as createComponent, k as renderComponent, l as renderScript, r as renderTemplate, h as createAstro, m as maybeRenderHead, g as addAttribute, u as unescapeHTML } from '../chunks/astro/server_B-2LxKLH.mjs'; +import { e as createAstro, f as createComponent, k as renderComponent, l as renderScript, r as renderTemplate, m as maybeRenderHead, h as addAttribute, u as unescapeHTML } from '../chunks/astro/server_CF97kUu8.mjs'; import 'piccolore'; -import { _ as _export_sfc, $ as $$Base } from '../chunks/_plugin-vue_export-helper_B1lnwsE2.mjs'; -import { useSSRContext, defineComponent, ref, mergeProps } from 'vue'; -import { ssrRenderAttrs, ssrInterpolate } from 'vue/server-renderer'; -import { g as getSkill } from '../chunks/skills_COWfD5oy.mjs'; +import { _ as _export_sfc, $ as $$Base } from '../chunks/_plugin-vue_export-helper_CEgY73aA.mjs'; +import { useSSRContext, defineComponent, ref, nextTick, mergeProps } from 'vue'; +import { ssrRenderTeleport, ssrInterpolate, ssrRenderAttr, ssrIncludeBooleanAttr, ssrRenderAttrs } from 'vue/server-renderer'; +import { g as getSkill, b as getForksOf } from '../chunks/skills_BacVQUiS.mjs'; +import { h as hasToken } from '../chunks/tokens_CAzj9Aj8.mjs'; +import { a as recordDownload, g as getStatsForSlug } from '../chunks/stats_CaDi9y9J.mjs'; import { marked } from 'marked'; +/* empty css */ export { renderers } from '../renderers.mjs'; +const _sfc_main$1 = /* @__PURE__ */ defineComponent({ + __name: "EditGate", + props: { + slug: {}, + authorEmail: {}, + authorName: {}, + authorHasToken: { type: Boolean } + }, + setup(__props, { expose: __expose }) { + __expose(); + const props = __props; + const showModal = ref(false); + const token = ref(""); + const error = ref(""); + const verifying = ref(false); + const tokenInput = ref(); + async function handleClick() { + if (!props.authorEmail || !props.authorHasToken) { + window.location.href = `/${props.slug}/edit`; + return; + } + const saved = localStorage.getItem("skillshere-token") || ""; + if (saved) { + try { + const res = await fetch("/api/auth/verify", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ email: props.authorEmail, token: saved }) + }); + if (res.ok) { + localStorage.setItem("skillshere-token", saved); + window.location.href = `/${props.slug}/edit`; + return; + } + } catch { + } + } + showModal.value = true; + error.value = ""; + token.value = ""; + nextTick(() => tokenInput.value?.focus()); + } + async function verify() { + verifying.value = true; + error.value = ""; + try { + const res = await fetch("/api/auth/verify", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ email: props.authorEmail, token: token.value }) + }); + if (!res.ok) { + const data = await res.json(); + error.value = data.error || "Invalid token"; + return; + } + localStorage.setItem("skillshere-token", token.value); + window.location.href = `/${props.slug}/edit`; + } catch { + error.value = "Could not verify token"; + } finally { + verifying.value = false; + } + } + function forkSkill() { + showModal.value = false; + window.location.href = `/new?from=${encodeURIComponent(props.slug)}`; + } + const __returned__ = { props, showModal, token, error, verifying, tokenInput, handleClick, verify, forkSkill }; + Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true }); + return __returned__; + } +}); +function _sfc_ssrRender$1(_ctx, _push, _parent, _attrs, $props, $setup, $data, $options) { + _push(``); + ssrRenderTeleport(_push, (_push2) => { + if ($setup.showModal) { + _push2(`

    Author Verification

    This skill is owned by ${ssrInterpolate($props.authorName || $props.authorEmail)}. Enter your token to edit.

    `); + if ($setup.error) { + _push2(`

    ${ssrInterpolate($setup.error)}

    `); + } else { + _push2(``); + } + _push2(`
    `); + } else { + _push2(``); + } + }, "body", false, _parent); + _push(``); +} +const _sfc_setup$1 = _sfc_main$1.setup; +_sfc_main$1.setup = (props, ctx) => { + const ssrContext = useSSRContext(); + (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("src/components/EditGate.vue"); + return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0; +}; +const EditGate = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["ssrRender", _sfc_ssrRender$1]]); + const _sfc_main = /* @__PURE__ */ defineComponent({ __name: "DeleteButton", props: { - slug: {} + slug: {}, + authorEmail: {}, + authorName: {}, + authorHasToken: { type: Boolean } }, setup(__props, { expose: __expose }) { __expose(); const props = __props; const deleting = ref(false); - async function handleDelete() { - if (!confirm(`Delete "${props.slug}"? This cannot be undone.`)) return; + const showModal = ref(false); + const token = ref(""); + const error = ref(""); + const tokenInput = ref(); + async function handleClick() { + if (props.authorEmail && props.authorHasToken) { + const saved = localStorage.getItem("skillshere-token") || ""; + if (saved) { + try { + const res = await fetch("/api/auth/verify", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ email: props.authorEmail, token: saved }) + }); + if (res.ok) { + doDelete(saved); + return; + } + } catch { + } + } + showModal.value = true; + error.value = ""; + token.value = ""; + nextTick(() => tokenInput.value?.focus()); + } else { + doDelete(""); + } + } + async function verifyAndDelete() { + error.value = ""; deleting.value = true; try { - const res = await fetch(`/api/skills/${props.slug}`, { method: "DELETE" }); + const verifyRes = await fetch("/api/auth/verify", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ email: props.authorEmail, token: token.value }) + }); + if (!verifyRes.ok) { + const data = await verifyRes.json(); + error.value = data.error || "Invalid token"; + deleting.value = false; + return; + } + } catch { + error.value = "Could not verify token"; + deleting.value = false; + return; + } + localStorage.setItem("skillshere-token", token.value); + doDelete(token.value); + } + async function doDelete(authToken) { + if (!confirm(`Delete "${props.slug}"? This cannot be undone.`)) { + deleting.value = false; + return; + } + deleting.value = true; + error.value = ""; + try { + const headers = {}; + if (authToken) { + headers["Authorization"] = `Bearer ${authToken}`; + } + const res = await fetch(`/api/skills/${props.slug}`, { method: "DELETE", headers }); + if (res.status === 403) { + const data = await res.json(); + error.value = data.error || "Permission denied"; + showModal.value = true; + deleting.value = false; + return; + } if (!res.ok && res.status !== 204) { - throw new Error("Failed to delete"); + const data = await res.json().catch(() => ({ error: "Failed to delete" })); + throw new Error(data.error || "Failed to delete"); } window.location.href = "/"; - } catch { - alert("Failed to delete skill."); + } catch (err) { + error.value = err instanceof Error ? err.message : "Failed to delete skill."; deleting.value = false; } } - const __returned__ = { props, deleting, handleDelete }; + const __returned__ = { props, deleting, showModal, token, error, tokenInput, handleClick, verifyAndDelete, doDelete }; Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true }); return __returned__; } }); function _sfc_ssrRender(_ctx, _push, _parent, _attrs, $props, $setup, $data, $options) { - _push(` ${ssrInterpolate($setup.deleting ? "Deleting..." : "Delete")}`); + _push(` ${ssrInterpolate($setup.deleting ? "Deleting..." : "Delete")}`); + ssrRenderTeleport(_push, (_push2) => { + if ($setup.showModal) { + _push2(`

    Delete Skill

    This skill is owned by ${ssrInterpolate($props.authorName || $props.authorEmail)}. Enter your token to delete it.

    `); + if ($setup.error) { + _push2(`

    ${ssrInterpolate($setup.error)}

    `); + } else { + _push2(``); + } + _push2(`
    `); + } else { + _push2(``); + } + }, "body", false, _parent); + _push(`
    `); } const _sfc_setup = _sfc_main.setup; _sfc_main.setup = (props, ctx) => { @@ -49,7 +244,7 @@ _sfc_main.setup = (props, ctx) => { }; const DeleteButton = /* @__PURE__ */ _export_sfc(_sfc_main, [["ssrRender", _sfc_ssrRender]]); -const $$Astro = createAstro(); +const $$Astro = createAstro("https://skills.here.run.place"); const $$slug = createComponent(async ($$result, $$props, $$slots) => { const Astro2 = $$result.createAstro($$Astro, $$props, $$slots); Astro2.self = $$slug; @@ -60,19 +255,26 @@ const $$slug = createComponent(async ($$result, $$props, $$slots) => { } const accept = Astro2.request.headers.get("accept") || ""; if (!accept.includes("text/html")) { + recordDownload(slug); return new Response(skill.raw, { headers: { "Content-Type": "text/markdown; charset=utf-8" } }); } + const authorHasToken = skill["author-email"] ? await hasToken(skill["author-email"]) : false; + const forks = await getForksOf(slug); + const stats = await getStatsForSlug(slug); const html = await marked(skill.content); - const installCmd = `curl -fsSL ${Astro2.url.origin}/${slug} -o .claude/skills/${slug}.md`; - return renderTemplate`${renderComponent($$result, "Base", $$Base, { "title": `${skill.name} \u2014 Skillit` }, { "default": async ($$result2) => renderTemplate` ${maybeRenderHead()}
    + const origin = Astro2.url.origin; + const cmds = { + unix: `curl -fsSL ${origin}/${slug}/i | bash`, + unixGlobal: `curl -fsSL ${origin}/${slug}/gi | bash`, + win: `irm ${origin}/${slug}/i | iex`, + winGlobal: `irm ${origin}/${slug}/gi | iex` + }; + return renderTemplate`${renderComponent($$result, "Base", $$Base, { "title": `${skill.name} \u2014 Skills Here`, "data-astro-cid-yvbahnfj": true }, { "default": async ($$result2) => renderTemplate` ${maybeRenderHead()} Back -

    ${skill.name}

    ${skill.description && renderTemplate`

    ${skill.description}

    `}
    -Edit - ${renderComponent($$result2, "DeleteButton", DeleteButton, { "slug": slug, "client:load": true, "client:component-hydration": "load", "client:component-path": "/Users/alex/projects/skillit/src/components/DeleteButton.vue", "client:component-export": "default" })}
    ${skill["allowed-tools"].length > 0 && renderTemplate`
    ${skill["allowed-tools"].map((tool) => renderTemplate` ${tool} `)}
    `}

    Install this skill

    Run this in your project root. The skill file will be saved to .claude/skills/${slug}.md and Claude Code will load it automatically.

    ${installCmd}
    ${skill["allowed-tools"].length > 0 && renderTemplate`

    This skill uses: ${skill["allowed-tools"].join(", ")}. Claude will have access to these tools when this skill is active.

    `}
    ${unescapeHTML(html)}
    ` })} ${renderScript($$result, "/Users/alex/projects/skillit/src/pages/[slug].astro?astro&type=script&index=0&lang.ts")}`; +

    ${skill.name}

    ${skill.description && renderTemplate`

    ${skill.description}

    `} ${skill["allowed-tools"].length > 0 && renderTemplate`
    ${skill["allowed-tools"].map((tool) => renderTemplate` ${tool} `)}
    `} ${skill.tags.length > 0 && renderTemplate`
    ${skill.tags.map((tag) => renderTemplate` ${tag} `)}
    `} ${skill.author && renderTemplate`

    by ${skill.author}

    `} ${skill["fork-of"] && renderTemplate`

    forked from ${skill["fork-of"]}

    `} ${forks.length > 0 && renderTemplate`
    ${forks.length} fork${forks.length !== 1 ? "s" : ""}
      ${forks.map((f) => renderTemplate`
    • ${f.name} ${f.author && renderTemplate` by ${f.author}`}
    • `)}
    `}
    ${stats.downloads} download${stats.downloads !== 1 ? "s" : ""} ${stats.pushes} push${stats.pushes !== 1 ? "es" : ""} ${stats.lastPushedAt && renderTemplate` +Last updated ${new Date(stats.lastPushedAt).toLocaleDateString("en-US", { month: "short", day: "numeric", year: "numeric" })} `}

    Install this skill

    Run in your project root to add this skill.

    ${cmds.unix}
    More options

    Install globally (available in all projects):

    ${cmds.unixGlobal}
    ${renderComponent($$result2, "EditGate", EditGate, { "slug": slug, "authorEmail": skill["author-email"], "authorName": skill.author, "authorHasToken": authorHasToken, "client:load": true, "client:component-hydration": "load", "client:component-path": "/Users/alex/projects/skillit/src/components/EditGate.vue", "client:component-export": "default", "data-astro-cid-yvbahnfj": true })} ${renderComponent($$result2, "DeleteButton", DeleteButton, { "slug": slug, "authorEmail": skill["author-email"], "authorName": skill.author, "authorHasToken": authorHasToken, "client:load": true, "client:component-hydration": "load", "client:component-path": "/Users/alex/projects/skillit/src/components/DeleteButton.vue", "client:component-export": "default", "data-astro-cid-yvbahnfj": true })}
    ${unescapeHTML(html)}
    ` })} ${renderScript($$result, "/Users/alex/projects/skillit/src/pages/[slug].astro?astro&type=script&index=0&lang.ts")}`; }, "/Users/alex/projects/skillit/src/pages/[slug].astro", void 0); const $$file = "/Users/alex/projects/skillit/src/pages/[slug].astro"; diff --git a/dist/server/pages/_slug_/edit.astro.mjs b/dist/server/pages/_slug_/edit.astro.mjs index ab9e2f9..5e7ccf3 100644 --- a/dist/server/pages/_slug_/edit.astro.mjs +++ b/dist/server/pages/_slug_/edit.astro.mjs @@ -1,11 +1,11 @@ -import { e as createComponent, k as renderComponent, r as renderTemplate, h as createAstro, m as maybeRenderHead, g as addAttribute } from '../../chunks/astro/server_B-2LxKLH.mjs'; +import { e as createAstro, f as createComponent, k as renderComponent, r as renderTemplate, m as maybeRenderHead, h as addAttribute } from '../../chunks/astro/server_CF97kUu8.mjs'; import 'piccolore'; -import { $ as $$Base } from '../../chunks/_plugin-vue_export-helper_B1lnwsE2.mjs'; -import { g as getAvailableTools, a as getAvailableModels, S as SkillEditor } from '../../chunks/models_DPfuEi7q.mjs'; -import { g as getSkill } from '../../chunks/skills_COWfD5oy.mjs'; +import { $ as $$Base } from '../../chunks/_plugin-vue_export-helper_CEgY73aA.mjs'; +import { g as getAvailableTools, a as getAvailableModels, S as SkillEditor } from '../../chunks/models_BK7lP4G3.mjs'; +import { g as getSkill, a as getAllTags } from '../../chunks/skills_BacVQUiS.mjs'; export { renderers } from '../../renderers.mjs'; -const $$Astro = createAstro(); +const $$Astro = createAstro("https://skills.here.run.place"); const $$Edit = createComponent(async ($$result, $$props, $$slots) => { const Astro2 = $$result.createAstro($$Astro, $$props, $$slots); Astro2.self = $$Edit; @@ -18,8 +18,9 @@ const $$Edit = createComponent(async ($$result, $$props, $$slots) => { const availableModels = await getAvailableModels(); const allowedTools = skill["allowed-tools"].join(", "); const hooksJson = skill.hooks ? JSON.stringify(skill.hooks, null, 2) : ""; - return renderTemplate`${renderComponent($$result, "Base", $$Base, { "title": `Edit ${skill.name} \u2014 Skillit` }, { "default": async ($$result2) => renderTemplate` ${maybeRenderHead()} -Back to ${skill.name}

    Edit Skill

    Editing ${skill.name}. Users who already installed this skill will get the updated version on their next sync.

    ${renderComponent($$result2, "SkillEditor", SkillEditor, { "mode": "edit", "slug": slug, "initialName": skill.name, "initialDescription": skill.description, "initialAllowedTools": allowedTools, "initialArgumentHint": skill["argument-hint"], "initialModel": skill.model, "initialUserInvocable": skill["user-invocable"], "initialDisableModelInvocation": skill["disable-model-invocation"], "initialContext": skill.context, "initialAgent": skill.agent, "initialHooks": hooksJson, "initialBody": skill.content, ":availableTools": availableTools, ":availableModels": availableModels, "client:load": true, "client:component-hydration": "load", "client:component-path": "/Users/alex/projects/skillit/src/components/SkillEditor.vue", "client:component-export": "default" })} ` })}`; + const availableTags = await getAllTags(); + return renderTemplate`${renderComponent($$result, "Base", $$Base, { "title": `Edit ${skill.name} \u2014 Skills Here` }, { "default": async ($$result2) => renderTemplate` ${maybeRenderHead()} +Back to ${skill.name}

    Edit Skill

    Editing ${skill.name}. Users who already installed this skill will get the updated version on their next sync.

    ${renderComponent($$result2, "SkillEditor", SkillEditor, { "mode": "edit", "slug": slug, "initialName": skill.name, "initialDescription": skill.description, "initialAllowedTools": allowedTools, "initialArgumentHint": skill["argument-hint"], "initialModel": skill.model, "initialUserInvocable": skill["user-invocable"], "initialDisableModelInvocation": skill["disable-model-invocation"], "initialContext": skill.context, "initialAgent": skill.agent, "initialHooks": hooksJson, "initialBody": skill.content, "initialAuthor": skill.author, "initialAuthorEmail": skill["author-email"], "initialTags": skill.tags.join(", "), ":availableTools": availableTools, ":availableModels": availableModels, "availableTags": availableTags.join(","), "client:load": true, "client:component-hydration": "load", "client:component-path": "/Users/alex/projects/skillit/src/components/SkillEditor.vue", "client:component-export": "default" })} ` })}`; }, "/Users/alex/projects/skillit/src/pages/[slug]/edit.astro", void 0); const $$file = "/Users/alex/projects/skillit/src/pages/[slug]/edit.astro"; diff --git a/dist/server/pages/_slug_/gi.astro.mjs b/dist/server/pages/_slug_/gi.astro.mjs new file mode 100644 index 0000000..7135c43 --- /dev/null +++ b/dist/server/pages/_slug_/gi.astro.mjs @@ -0,0 +1,40 @@ +import { g as getSkill } from '../../chunks/skills_BacVQUiS.mjs'; +import { i as isPowerShell } from '../../chunks/sync_BEq_wzpT.mjs'; +export { renderers } from '../../renderers.mjs'; + +const GET = async ({ params, url, request }) => { + const { slug } = params; + const skill = await getSkill(slug); + if (!skill) { + return new Response("Skill not found", { status: 404 }); + } + const origin = url.origin; + const ps = isPowerShell(request); + const script = ps ? [ + '$ErrorActionPreference = "Stop"', + '$Dir = Join-Path $HOME ".claude\\skills"', + "New-Item -ItemType Directory -Force -Path $Dir | Out-Null", + `Invoke-WebRequest -Uri "${origin}/${slug}" -OutFile (Join-Path $Dir "${slug}.md")`, + `Write-Host "✓ Installed ${skill.name} globally to $Dir\\${slug}.md"`, + "" + ].join("\n") : [ + "#!/usr/bin/env bash", + "set -euo pipefail", + "mkdir -p ~/.claude/skills", + `curl -fsSL "${origin}/${slug}" -o ~/.claude/skills/${slug}.md`, + `echo "✓ Installed ${skill.name} globally to ~/.claude/skills/${slug}.md"`, + "" + ].join("\n"); + return new Response(script, { + headers: { "Content-Type": "text/plain; charset=utf-8" } + }); +}; + +const _page = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({ + __proto__: null, + GET +}, Symbol.toStringTag, { value: 'Module' })); + +const page = () => _page; + +export { page }; diff --git a/dist/server/pages/_slug_/i.astro.mjs b/dist/server/pages/_slug_/i.astro.mjs new file mode 100644 index 0000000..6291075 --- /dev/null +++ b/dist/server/pages/_slug_/i.astro.mjs @@ -0,0 +1,40 @@ +import { g as getSkill } from '../../chunks/skills_BacVQUiS.mjs'; +import { i as isPowerShell } from '../../chunks/sync_BEq_wzpT.mjs'; +export { renderers } from '../../renderers.mjs'; + +const GET = async ({ params, url, request }) => { + const { slug } = params; + const skill = await getSkill(slug); + if (!skill) { + return new Response("Skill not found", { status: 404 }); + } + const origin = url.origin; + const ps = isPowerShell(request); + const script = ps ? [ + '$ErrorActionPreference = "Stop"', + '$Dir = ".claude\\skills"', + "New-Item -ItemType Directory -Force -Path $Dir | Out-Null", + `Invoke-WebRequest -Uri "${origin}/${slug}" -OutFile (Join-Path $Dir "${slug}.md")`, + `Write-Host "✓ Installed ${skill.name} to $Dir\\${slug}.md"`, + "" + ].join("\n") : [ + "#!/usr/bin/env bash", + "set -euo pipefail", + "mkdir -p .claude/skills", + `curl -fsSL "${origin}/${slug}" -o ".claude/skills/${slug}.md"`, + `echo "✓ Installed ${skill.name} to .claude/skills/${slug}.md"`, + "" + ].join("\n"); + return new Response(script, { + headers: { "Content-Type": "text/plain; charset=utf-8" } + }); +}; + +const _page = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({ + __proto__: null, + GET +}, Symbol.toStringTag, { value: 'Module' })); + +const page = () => _page; + +export { page }; diff --git a/dist/server/pages/api/auth/register.astro.mjs b/dist/server/pages/api/auth/register.astro.mjs new file mode 100644 index 0000000..7e648ac --- /dev/null +++ b/dist/server/pages/api/auth/register.astro.mjs @@ -0,0 +1,55 @@ +import { h as hasToken, g as generateToken } from '../../../chunks/tokens_CAzj9Aj8.mjs'; +export { renderers } from '../../../renderers.mjs'; + +const POST = async ({ request }) => { + let body; + try { + body = await request.json(); + } catch { + return new Response(JSON.stringify({ error: "Invalid JSON" }), { + status: 400, + headers: { "Content-Type": "application/json" } + }); + } + const { email, name } = body; + if (!email) { + return new Response(JSON.stringify({ error: "email is required" }), { + status: 400, + headers: { "Content-Type": "application/json" } + }); + } + if (await hasToken(email)) { + return new Response(JSON.stringify({ error: "Email already registered" }), { + status: 409, + headers: { "Content-Type": "application/json" } + }); + } + try { + const token = await generateToken(email, name || ""); + return new Response(JSON.stringify({ token }), { + status: 201, + headers: { "Content-Type": "application/json" } + }); + } catch (err) { + const message = err instanceof Error ? err.message : "Unknown error"; + if (message.includes("already registered")) { + return new Response(JSON.stringify({ error: message }), { + status: 409, + headers: { "Content-Type": "application/json" } + }); + } + return new Response(JSON.stringify({ error: message }), { + status: 500, + headers: { "Content-Type": "application/json" } + }); + } +}; + +const _page = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({ + __proto__: null, + POST +}, Symbol.toStringTag, { value: 'Module' })); + +const page = () => _page; + +export { page }; diff --git a/dist/server/pages/api/auth/verify.astro.mjs b/dist/server/pages/api/auth/verify.astro.mjs new file mode 100644 index 0000000..d98795d --- /dev/null +++ b/dist/server/pages/api/auth/verify.astro.mjs @@ -0,0 +1,40 @@ +import { v as verifyToken } from '../../../chunks/tokens_CAzj9Aj8.mjs'; +export { renderers } from '../../../renderers.mjs'; + +const POST = async ({ request }) => { + let body; + try { + body = await request.json(); + } catch { + return new Response(JSON.stringify({ error: "Invalid JSON" }), { + status: 400, + headers: { "Content-Type": "application/json" } + }); + } + const { email, token } = body; + if (!email || !token) { + return new Response(JSON.stringify({ error: "email and token are required" }), { + status: 400, + headers: { "Content-Type": "application/json" } + }); + } + const valid = await verifyToken(email, token); + if (!valid) { + return new Response(JSON.stringify({ error: "Invalid token" }), { + status: 403, + headers: { "Content-Type": "application/json" } + }); + } + return new Response(JSON.stringify({ ok: true }), { + headers: { "Content-Type": "application/json" } + }); +}; + +const _page = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({ + __proto__: null, + POST +}, Symbol.toStringTag, { value: 'Module' })); + +const page = () => _page; + +export { page }; diff --git a/dist/server/pages/api/skills.astro.mjs b/dist/server/pages/api/skills.astro.mjs index d434283..0f9483a 100644 --- a/dist/server/pages/api/skills.astro.mjs +++ b/dist/server/pages/api/skills.astro.mjs @@ -1,4 +1,7 @@ -import { l as listSkills, i as isValidSlug, c as createSkill } from '../../chunks/skills_COWfD5oy.mjs'; +import matter from 'gray-matter'; +import { l as listSkills, i as isValidSlug, c as createSkill } from '../../chunks/skills_BacVQUiS.mjs'; +import { h as hasToken, e as extractBearerToken, v as verifyToken } from '../../chunks/tokens_CAzj9Aj8.mjs'; +import { r as recordPush } from '../../chunks/stats_CaDi9y9J.mjs'; export { renderers } from '../../renderers.mjs'; const GET = async () => { @@ -30,8 +33,21 @@ const POST = async ({ request }) => { headers: { "Content-Type": "application/json" } }); } + const parsed = matter(content); + const authorEmail = parsed.data["author-email"] || ""; + if (authorEmail && await hasToken(authorEmail)) { + const token = extractBearerToken(request); + const valid = await verifyToken(authorEmail, token); + if (!valid) { + return new Response(JSON.stringify({ error: "Valid token required to create a skill with author-email. Register first via POST /api/auth/register." }), { + status: 403, + headers: { "Content-Type": "application/json" } + }); + } + } try { const skill = await createSkill(slug, content); + recordPush(slug); return new Response(JSON.stringify(skill), { status: 201, headers: { "Content-Type": "application/json" } diff --git a/dist/server/pages/api/skills/_slug_.astro.mjs b/dist/server/pages/api/skills/_slug_.astro.mjs index 3160d2e..4e60991 100644 --- a/dist/server/pages/api/skills/_slug_.astro.mjs +++ b/dist/server/pages/api/skills/_slug_.astro.mjs @@ -1,4 +1,7 @@ -import { d as deleteSkill, g as getSkill, u as updateSkill } from '../../../chunks/skills_COWfD5oy.mjs'; +import 'gray-matter'; +import { g as getSkill, d as deleteSkill, u as updateSkill } from '../../../chunks/skills_BacVQUiS.mjs'; +import { h as hasToken, e as extractBearerToken, v as verifyToken } from '../../../chunks/tokens_CAzj9Aj8.mjs'; +import { r as recordPush } from '../../../chunks/stats_CaDi9y9J.mjs'; export { renderers } from '../../../renderers.mjs'; const GET = async ({ params }) => { @@ -27,36 +30,59 @@ const PUT = async ({ params, request }) => { }); } try { + const existing = await getSkill(params.slug); + if (!existing) { + return new Response(JSON.stringify({ error: "Skill not found" }), { + status: 404, + headers: { "Content-Type": "application/json" } + }); + } + if (existing["author-email"] && await hasToken(existing["author-email"])) { + const token = extractBearerToken(request); + const valid = await verifyToken(existing["author-email"], token); + if (!valid) { + return new Response(JSON.stringify({ error: `Only ${existing.author || existing["author-email"]} can update this skill. Provide a valid token via Authorization: Bearer header.` }), { + status: 403, + headers: { "Content-Type": "application/json" } + }); + } + } const skill = await updateSkill(params.slug, body.content); + recordPush(params.slug); return new Response(JSON.stringify(skill), { headers: { "Content-Type": "application/json" } }); } catch (err) { const message = err instanceof Error ? err.message : "Unknown error"; - if (message.includes("not found")) { - return new Response(JSON.stringify({ error: message }), { - status: 404, - headers: { "Content-Type": "application/json" } - }); - } return new Response(JSON.stringify({ error: message }), { status: 500, headers: { "Content-Type": "application/json" } }); } }; -const DELETE = async ({ params }) => { +const DELETE = async ({ params, request }) => { try { - await deleteSkill(params.slug); - return new Response(null, { status: 204 }); - } catch (err) { - const message = err instanceof Error ? err.message : "Unknown error"; - if (message.includes("not found")) { - return new Response(JSON.stringify({ error: message }), { + const existing = await getSkill(params.slug); + if (!existing) { + return new Response(JSON.stringify({ error: "Skill not found" }), { status: 404, headers: { "Content-Type": "application/json" } }); } + if (existing["author-email"] && await hasToken(existing["author-email"])) { + const token = extractBearerToken(request); + const valid = await verifyToken(existing["author-email"], token); + if (!valid) { + return new Response(JSON.stringify({ error: `Only ${existing.author || existing["author-email"]} can delete this skill. Provide a valid token via Authorization: Bearer header.` }), { + status: 403, + headers: { "Content-Type": "application/json" } + }); + } + } + await deleteSkill(params.slug); + return new Response(null, { status: 204 }); + } catch (err) { + const message = err instanceof Error ? err.message : "Unknown error"; return new Response(JSON.stringify({ error: message }), { status: 500, headers: { "Content-Type": "application/json" } diff --git a/dist/server/pages/api/sync.astro.mjs b/dist/server/pages/api/sync.astro.mjs index 8ed9375..3f640b7 100644 --- a/dist/server/pages/api/sync.astro.mjs +++ b/dist/server/pages/api/sync.astro.mjs @@ -1,4 +1,4 @@ -import { b as buildSyncScript } from '../../chunks/sync_B_Og9xl3.mjs'; +import { b as buildSyncScript } from '../../chunks/sync_BEq_wzpT.mjs'; export { renderers } from '../../renderers.mjs'; const GET = async ({ url }) => { diff --git a/dist/server/pages/api/sync/project.astro.mjs b/dist/server/pages/api/sync/project.astro.mjs index 7f49d00..72d17c4 100644 --- a/dist/server/pages/api/sync/project.astro.mjs +++ b/dist/server/pages/api/sync/project.astro.mjs @@ -1,4 +1,4 @@ -import { b as buildSyncScript } from '../../../chunks/sync_B_Og9xl3.mjs'; +import { b as buildSyncScript } from '../../../chunks/sync_BEq_wzpT.mjs'; export { renderers } from '../../../renderers.mjs'; const GET = async ({ url }) => { diff --git a/dist/server/pages/gi.astro.mjs b/dist/server/pages/gi.astro.mjs index 54bd1e1..024e949 100644 --- a/dist/server/pages/gi.astro.mjs +++ b/dist/server/pages/gi.astro.mjs @@ -1,8 +1,9 @@ -import { b as buildSyncScript } from '../chunks/sync_B_Og9xl3.mjs'; +import { i as isPowerShell, a as buildSyncScriptPS, b as buildSyncScript } from '../chunks/sync_BEq_wzpT.mjs'; export { renderers } from '../renderers.mjs'; -const GET = async ({ url }) => { - const script = await buildSyncScript(url.origin, "$HOME/.claude/skills"); +const GET = async ({ url, request }) => { + const ps = isPowerShell(request); + const script = ps ? await buildSyncScriptPS(url.origin, "$HOME\\.claude\\skills") : await buildSyncScript(url.origin, "$HOME/.claude/skills"); return new Response(script, { headers: { "Content-Type": "text/plain; charset=utf-8" } }); diff --git a/dist/server/pages/gp.astro.mjs b/dist/server/pages/gp.astro.mjs index bd91b10..a74de8c 100644 --- a/dist/server/pages/gp.astro.mjs +++ b/dist/server/pages/gp.astro.mjs @@ -1,4 +1,4 @@ -import { a as buildPushScript } from '../chunks/sync_B_Og9xl3.mjs'; +import { c as buildPushScript } from '../chunks/sync_BEq_wzpT.mjs'; export { renderers } from '../renderers.mjs'; const GET = async ({ url }) => { diff --git a/dist/server/pages/i.astro.mjs b/dist/server/pages/i.astro.mjs index a27818d..d02f072 100644 --- a/dist/server/pages/i.astro.mjs +++ b/dist/server/pages/i.astro.mjs @@ -1,4 +1,4 @@ -import { b as buildSyncScript } from '../chunks/sync_B_Og9xl3.mjs'; +import { b as buildSyncScript } from '../chunks/sync_BEq_wzpT.mjs'; export { renderers } from '../renderers.mjs'; const GET = async ({ url }) => { diff --git a/dist/server/pages/index.astro.mjs b/dist/server/pages/index.astro.mjs index 1b51ca4..c894b72 100644 --- a/dist/server/pages/index.astro.mjs +++ b/dist/server/pages/index.astro.mjs @@ -1,45 +1,281 @@ -import { e as createComponent, m as maybeRenderHead, g as addAttribute, r as renderTemplate, h as createAstro, k as renderComponent, l as renderScript } from '../chunks/astro/server_B-2LxKLH.mjs'; +import { e as createAstro, f as createComponent, m as maybeRenderHead, h as addAttribute, r as renderTemplate, k as renderComponent, l as renderScript } from '../chunks/astro/server_CF97kUu8.mjs'; import 'piccolore'; -import { _ as _export_sfc, $ as $$Base } from '../chunks/_plugin-vue_export-helper_B1lnwsE2.mjs'; +import { _ as _export_sfc, $ as $$Base } from '../chunks/_plugin-vue_export-helper_CEgY73aA.mjs'; import 'clsx'; -import { useSSRContext, defineComponent, ref, watch, mergeProps } from 'vue'; -import { ssrRenderAttrs, ssrRenderAttr } from 'vue/server-renderer'; -import { l as listSkills } from '../chunks/skills_COWfD5oy.mjs'; -import { b as buildSyncScript } from '../chunks/sync_B_Og9xl3.mjs'; +import { useSSRContext, defineComponent, ref, computed, onMounted, watch, nextTick, mergeProps } from 'vue'; +import { ssrRenderAttrs, ssrRenderAttr, ssrRenderList, ssrInterpolate, ssrIncludeBooleanAttr, ssrLooseContain, ssrLooseEqual, ssrRenderClass } from 'vue/server-renderer'; +import { l as listSkills } from '../chunks/skills_BacVQUiS.mjs'; +import { b as getAllStats } from '../chunks/stats_CaDi9y9J.mjs'; +import { i as isPowerShell, a as buildSyncScriptPS, b as buildSyncScript } from '../chunks/sync_BEq_wzpT.mjs'; +/* empty css */ export { renderers } from '../renderers.mjs'; -const $$Astro$1 = createAstro(); +const $$Astro$1 = createAstro("https://skills.here.run.place"); const $$SkillCard = createComponent(($$result, $$props, $$slots) => { const Astro2 = $$result.createAstro($$Astro$1, $$props, $$slots); Astro2.self = $$SkillCard; - const { slug, name, description, "allowed-tools": allowedTools } = Astro2.props; + const { slug, name, description, "allowed-tools": allowedTools, tags = [], author, forkCount = 0, downloads = 0, pushes = 0, lastPushedAt } = Astro2.props; + const updatedLabel = lastPushedAt ? new Date(lastPushedAt).toLocaleDateString("en-US", { month: "short", day: "numeric" }) : null; const truncated = description.length > 120 ? description.slice(0, 120) + "..." : description; - return renderTemplate`${maybeRenderHead()}

    ${name}

    ${truncated && renderTemplate`

    ${truncated}

    `} ${allowedTools.length > 0 && renderTemplate`
    ${allowedTools.map((tool) => renderTemplate` ${tool} `)}
    `}
    `; + return renderTemplate`${maybeRenderHead()}

    ${name}

    ${truncated && renderTemplate`

    ${truncated}

    `} ${allowedTools.length > 0 && renderTemplate`
    ${allowedTools.map((tool) => renderTemplate` ${tool} `)}
    `} ${tags.length > 0 && renderTemplate`
    ${tags.map((tag) => renderTemplate` ${tag} `)}
    `}
    ${author && renderTemplate`

    by ${author}

    `} ${forkCount > 0 && renderTemplate` ${forkCount} `} ${downloads > 0 && renderTemplate` ${downloads} `} ${pushes > 0 && renderTemplate` ${pushes} `} ${updatedLabel && renderTemplate`${updatedLabel}`}
    `; }, "/Users/alex/projects/skillit/src/components/SkillCard.astro", void 0); +const PER_PAGE_GRID = 12; +const PER_PAGE_TABLE = 20; const _sfc_main = /* @__PURE__ */ defineComponent({ __name: "SkillSearch", + props: { + authors: {}, + tags: {}, + totalCount: {} + }, setup(__props, { expose: __expose }) { __expose(); + const props = __props; + const authorList = props.authors ? props.authors.split(",").map((a) => a.trim()).filter(Boolean) : []; + const tagList = props.tags ? props.tags.split(",").map((t) => t.trim()).filter(Boolean) : []; const query = ref(""); - watch(query, (val) => { - const q = val.toLowerCase().trim(); - const cards = document.querySelectorAll("[data-skill]"); - cards.forEach((card) => { + const forkFilter = ref(""); + const savedView = typeof localStorage !== "undefined" && localStorage.getItem("skillsViewMode"); + const viewMode = ref(savedView === "table" ? "table" : "grid"); + const currentPage = ref(1); + const filteredCount = ref(props.totalCount || 0); + const perPage = computed(() => viewMode.value === "grid" ? PER_PAGE_GRID : PER_PAGE_TABLE); + const totalPages = computed(() => Math.max(1, Math.ceil(filteredCount.value / perPage.value))); + const rangeStart = computed(() => filteredCount.value === 0 ? 0 : (currentPage.value - 1) * perPage.value + 1); + const rangeEnd = computed(() => Math.min(currentPage.value * perPage.value, filteredCount.value)); + const visiblePages = computed(() => { + const pages = []; + const total = totalPages.value; + const cur = currentPage.value; + const maxVisible = 7; + if (total <= maxVisible) { + for (let i = 1; i <= total; i++) pages.push(i); + } else { + const half = Math.floor(maxVisible / 2); + let start = Math.max(1, cur - half); + let end = start + maxVisible - 1; + if (end > total) { + end = total; + start = end - maxVisible + 1; + } + for (let i = start; i <= end; i++) pages.push(i); + } + return pages; + }); + const selectedAuthors = ref([]); + const authorQuery = ref(""); + const authorOpen = ref(false); + const authorInputEl = ref(); + const authorSuggestions = computed(() => { + const q = authorQuery.value.toLowerCase().trim(); + const selected = new Set(selectedAuthors.value.map((a) => a.toLowerCase())); + return authorList.filter((a) => !selected.has(a.toLowerCase()) && (!q || a.toLowerCase().includes(q))); + }); + let authorBlurTimer; + function onAuthorBlur() { + authorBlurTimer = setTimeout(() => { + authorOpen.value = false; + }, 200); + } + function addAuthor(author) { + clearTimeout(authorBlurTimer); + if (!selectedAuthors.value.some((a) => a.toLowerCase() === author.toLowerCase())) { + selectedAuthors.value.push(author); + } + authorQuery.value = ""; + authorInputEl.value?.focus(); + } + function removeAuthor(author) { + selectedAuthors.value = selectedAuthors.value.filter((a) => a !== author); + } + function onAuthorEnter() { + if (authorSuggestions.value.length > 0) { + addAuthor(authorSuggestions.value[0]); + } + } + function onAuthorBackspace() { + if (!authorQuery.value && selectedAuthors.value.length > 0) { + selectedAuthors.value.pop(); + } + } + const selectedTags = ref([]); + const tagQuery = ref(""); + const tagOpen = ref(false); + const tagInputEl = ref(); + const tagSuggestions = computed(() => { + const q = tagQuery.value.toLowerCase().trim(); + const selected = new Set(selectedTags.value.map((t) => t.toLowerCase())); + return tagList.filter((t) => !selected.has(t.toLowerCase()) && (!q || t.toLowerCase().includes(q))); + }); + let tagBlurTimer; + function onTagBlur() { + tagBlurTimer = setTimeout(() => { + tagOpen.value = false; + }, 200); + } + function addTag(tag) { + clearTimeout(tagBlurTimer); + if (!selectedTags.value.some((t) => t.toLowerCase() === tag.toLowerCase())) { + selectedTags.value.push(tag); + } + tagQuery.value = ""; + tagInputEl.value?.focus(); + } + function removeTag(tag) { + selectedTags.value = selectedTags.value.filter((t) => t !== tag); + } + function onTagEnter() { + if (tagSuggestions.value.length > 0) { + addTag(tagSuggestions.value[0]); + } + } + function onTagBackspace() { + if (!tagQuery.value && selectedTags.value.length > 0) { + selectedTags.value.pop(); + } + } + function setView(mode) { + viewMode.value = mode; + localStorage.setItem("skillsViewMode", mode); + const grid = document.getElementById("skills-grid"); + const table = document.getElementById("skills-table"); + if (grid && table) { + grid.classList.toggle("hidden", mode !== "grid"); + table.classList.toggle("hidden", mode !== "table"); + } + currentPage.value = 1; + nextTick(() => applyFilters()); + } + onMounted(() => { + if (viewMode.value !== "grid") { + setView(viewMode.value); + } + }); + const hasActiveFilters = computed( + () => query.value || selectedAuthors.value.length > 0 || selectedTags.value.length > 0 || forkFilter.value + ); + function applyFilters() { + const q = query.value.toLowerCase().trim(); + const authors = selectedAuthors.value.map((a) => a.toLowerCase()); + const tags = selectedTags.value.map((t) => t.toLowerCase()); + const minForks = forkFilter.value ? parseInt(forkFilter.value) : 0; + const activeId = viewMode.value === "grid" ? "skills-grid" : "skills-table"; + const inactiveId = viewMode.value === "grid" ? "skills-table" : "skills-grid"; + const activeItems = Array.from(document.querySelectorAll(`#${activeId} [data-skill]`)); + const inactiveItems = document.querySelectorAll(`#${inactiveId} [data-skill]`); + inactiveItems.forEach((el) => el.style.display = "none"); + const matching = []; + activeItems.forEach((card) => { const name = card.dataset.name || ""; const desc = card.dataset.description || ""; const tools = card.dataset.tools || ""; - const match = !q || name.includes(q) || desc.includes(q) || tools.includes(q); - card.style.display = match ? "" : "none"; + const cardAuthor = card.dataset.author || ""; + const cardTags = (card.dataset.tags || "").split(",").filter(Boolean); + const forks = parseInt(card.dataset.forks || "0"); + const matchText = !q || name.includes(q) || desc.includes(q) || tools.includes(q) || cardTags.some((t) => t.includes(q)); + const matchAuthor = authors.length === 0 || authors.some((a) => cardAuthor.includes(a)); + const matchTag = tags.length === 0 || tags.every((t) => cardTags.includes(t)); + const matchForks = forks >= minForks; + if (matchText && matchAuthor && matchTag && matchForks) { + matching.push(card); + } }); - }); - const __returned__ = { query }; + filteredCount.value = matching.length; + const maxPage = Math.max(1, Math.ceil(matching.length / perPage.value)); + if (currentPage.value > maxPage) { + currentPage.value = maxPage; + } + const start = (currentPage.value - 1) * perPage.value; + const end = start + perPage.value; + activeItems.forEach((card) => { + const idx = matching.indexOf(card); + if (idx === -1) { + card.style.display = "none"; + } else if (idx >= start && idx < end) { + card.style.display = ""; + } else { + card.style.display = "none"; + } + }); + } + function goToPage(page) { + if (page < 1 || page > totalPages.value) return; + currentPage.value = page; + applyFilters(); + } + function reset() { + query.value = ""; + selectedAuthors.value = []; + authorQuery.value = ""; + selectedTags.value = []; + tagQuery.value = ""; + forkFilter.value = ""; + currentPage.value = 1; + } + watch([query, selectedAuthors, selectedTags, forkFilter], () => { + currentPage.value = 1; + applyFilters(); + }, { deep: true }); + const __returned__ = { props, authorList, tagList, query, forkFilter, savedView, viewMode, currentPage, filteredCount, PER_PAGE_GRID, PER_PAGE_TABLE, perPage, totalPages, rangeStart, rangeEnd, visiblePages, selectedAuthors, authorQuery, authorOpen, authorInputEl, authorSuggestions, get authorBlurTimer() { + return authorBlurTimer; + }, set authorBlurTimer(v) { + authorBlurTimer = v; + }, onAuthorBlur, addAuthor, removeAuthor, onAuthorEnter, onAuthorBackspace, selectedTags, tagQuery, tagOpen, tagInputEl, tagSuggestions, get tagBlurTimer() { + return tagBlurTimer; + }, set tagBlurTimer(v) { + tagBlurTimer = v; + }, onTagBlur, addTag, removeTag, onTagEnter, onTagBackspace, setView, hasActiveFilters, applyFilters, goToPage, reset }; Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true }); return __returned__; } }); function _sfc_ssrRender(_ctx, _push, _parent, _attrs, $props, $setup, $data, $options) { - _push(`
    `); + _push(`
    `); + ssrRenderList($setup.selectedAuthors, (a) => { + _push(`${ssrInterpolate(a)} `); + }); + _push(`
    `); + if ($setup.authorOpen && $setup.authorSuggestions.length > 0) { + _push(`
    `); + ssrRenderList($setup.authorSuggestions, (a) => { + _push(``); + }); + _push(`
    `); + } else { + _push(``); + } + _push(`
    `); + ssrRenderList($setup.selectedTags, (t) => { + _push(`${ssrInterpolate(t)} `); + }); + _push(`
    `); + if ($setup.tagOpen && $setup.tagSuggestions.length > 0) { + _push(`
    `); + ssrRenderList($setup.tagSuggestions, (t) => { + _push(``); + }); + _push(`
    `); + } else { + _push(``); + } + _push(`
    `); + if ($setup.hasActiveFilters) { + _push(``); + } else { + _push(``); + } + _push(`
    `); + if ($setup.totalPages > 1) { + _push(`
    Showing ${ssrInterpolate($setup.rangeStart)}–${ssrInterpolate($setup.rangeEnd)} of ${ssrInterpolate($setup.filteredCount)}
    Prev `); + ssrRenderList($setup.visiblePages, (p) => { + _push(``); + }); + _push(` Next
    `); + } else { + _push(``); + } + _push(`
    `); } const _sfc_setup = _sfc_main.setup; _sfc_main.setup = (props, ctx) => { @@ -49,23 +285,36 @@ _sfc_main.setup = (props, ctx) => { }; const SkillSearch = /* @__PURE__ */ _export_sfc(_sfc_main, [["ssrRender", _sfc_ssrRender]]); -const $$Astro = createAstro(); +const $$Astro = createAstro("https://skills.here.run.place"); const $$Index = createComponent(async ($$result, $$props, $$slots) => { const Astro2 = $$result.createAstro($$Astro, $$props, $$slots); Astro2.self = $$Index; const accept = Astro2.request.headers.get("accept") || ""; if (!accept.includes("text/html")) { - const script = await buildSyncScript(Astro2.url.origin, ".claude/skills"); + const ps = isPowerShell(Astro2.request); + const script = ps ? await buildSyncScriptPS(Astro2.url.origin, ".claude\\skills") : await buildSyncScript(Astro2.url.origin, ".claude/skills"); return new Response(script, { headers: { "Content-Type": "text/plain; charset=utf-8" } }); } const skills = await listSkills(); - return renderTemplate`${renderComponent($$result, "Base", $$Base, { "title": "Skillit \u2014 Claude Code Skills" }, { "default": async ($$result2) => renderTemplate`${skills.length === 0 ? renderTemplate`${maybeRenderHead()}

    No skills yet

    Create your first skill to get started.

    + const forkCounts = /* @__PURE__ */ new Map(); + for (const s of skills) { + if (s["fork-of"]) { + forkCounts.set(s["fork-of"], (forkCounts.get(s["fork-of"]) || 0) + 1); + } + } + const authors = [...new Set(skills.map((s) => s.author).filter(Boolean))].sort(); + const allTags = [...new Set(skills.flatMap((s) => s.tags))].sort(); + const allStats = await getAllStats(); + return renderTemplate`${renderComponent($$result, "Base", $$Base, { "title": "Skills", "data-astro-cid-j7pv25f6": true }, { "default": async ($$result2) => renderTemplate`${skills.length === 0 ? renderTemplate`${maybeRenderHead()}` : renderTemplate`

    Skills

    Manage and distribute Claude Code skills. Skills are prompt files that Claude loads automatically to learn custom behaviors and workflows.

    Quick install

    Run this in your project root to sync all skills. They'll be saved to .claude/skills/ and Claude Code will pick them up automatically on the next conversation.

    curl -fsSL ${Astro2.url.origin} | bash
    More options

    Install globally (available in all projects):

    curl -fsSL ${Astro2.url.origin}/gi | bash

    Push local skills to the server:

    curl -fsSL ${Astro2.url.origin}/p | bash
    ${renderComponent($$result2, "SkillSearch", SkillSearch, { "client:load": true, "client:component-hydration": "load", "client:component-path": "/Users/alex/projects/skillit/src/components/SkillSearch.vue", "client:component-export": "default" })}
    ${skills.map((skill) => renderTemplate`
    ${renderComponent($$result2, "SkillCard", $$SkillCard, { ...skill })}
    `)}
    `}` })} ${renderScript($$result, "/Users/alex/projects/skillit/src/pages/index.astro?astro&type=script&index=0&lang.ts")}`; +
    ` : renderTemplate`

    Skills

    Manage and distribute Claude Code skills. Skills are prompt files (.md) that Claude loads automatically to learn custom behaviors and workflows.

    Create reusable skills to standardize how Claude handles commits, code reviews, testing, deployments, and more across your team. Share them instantly with a single curl command.

    Quick install

    Sync all skills to your project. They'll be saved to .claude/skills/ and Claude Code picks them up on the next conversation.

    curl -fsSL ${Astro2.url.origin} | bash
    Install globally
    curl -fsSL ${Astro2.url.origin}/gi | bash

    Quick push

    Push your local skills to the server. Run from your project root — it reads .claude/skills/*.md and uploads them.

    curl -fsSL ${Astro2.url.origin}/p | bash
    Push a specific skill
    curl -fsSL ${Astro2.url.origin}/p | bash -s skill-name
    ${renderComponent($$result2, "SkillSearch", SkillSearch, { "authors": authors.join(","), "tags": allTags.join(","), "totalCount": skills.length, "client:load": true, "client:component-hydration": "load", "client:component-path": "/Users/alex/projects/skillit/src/components/SkillSearch.vue", "client:component-export": "default", "data-astro-cid-j7pv25f6": true })}
    ${skills.map((skill) => renderTemplate`
    ${renderComponent($$result2, "SkillCard", $$SkillCard, { ...skill, "forkCount": forkCounts.get(skill.slug) || 0, "downloads": allStats[skill.slug]?.downloads || 0, "pushes": allStats[skill.slug]?.pushes || 0, "lastPushedAt": allStats[skill.slug]?.lastPushedAt || null, "data-astro-cid-j7pv25f6": true })}
    `)}
    `}` })} ${renderScript($$result, "/Users/alex/projects/skillit/src/pages/index.astro?astro&type=script&index=0&lang.ts")}`; }, "/Users/alex/projects/skillit/src/pages/index.astro", void 0); const $$file = "/Users/alex/projects/skillit/src/pages/index.astro"; diff --git a/dist/server/pages/new.astro.mjs b/dist/server/pages/new.astro.mjs index df26b39..835eb8d 100644 --- a/dist/server/pages/new.astro.mjs +++ b/dist/server/pages/new.astro.mjs @@ -1,15 +1,25 @@ -import { e as createComponent, k as renderComponent, r as renderTemplate, m as maybeRenderHead } from '../chunks/astro/server_B-2LxKLH.mjs'; +import { e as createAstro, f as createComponent, k as renderComponent, r as renderTemplate, m as maybeRenderHead, h as addAttribute } from '../chunks/astro/server_CF97kUu8.mjs'; import 'piccolore'; -import { $ as $$Base } from '../chunks/_plugin-vue_export-helper_B1lnwsE2.mjs'; -import { g as getAvailableTools, a as getAvailableModels, S as SkillEditor } from '../chunks/models_DPfuEi7q.mjs'; +import { $ as $$Base } from '../chunks/_plugin-vue_export-helper_CEgY73aA.mjs'; +import { g as getAvailableTools, a as getAvailableModels, S as SkillEditor } from '../chunks/models_BK7lP4G3.mjs'; +import { a as getAllTags, g as getSkill } from '../chunks/skills_BacVQUiS.mjs'; export { renderers } from '../renderers.mjs'; +const $$Astro = createAstro("https://skills.here.run.place"); const $$New = createComponent(async ($$result, $$props, $$slots) => { + const Astro2 = $$result.createAstro($$Astro, $$props, $$slots); + Astro2.self = $$New; const availableTools = await getAvailableTools(); const availableModels = await getAvailableModels(); - return renderTemplate`${renderComponent($$result, "Base", $$Base, { "title": "New Skill \u2014 Skillit" }, { "default": async ($$result2) => renderTemplate` ${maybeRenderHead()} -Back -

    New Skill

    Write a prompt in Markdown that tells Claude how to behave. The body is the instruction Claude receives. Use Allowed Tools to restrict which tools the skill can use.

    ${renderComponent($$result2, "SkillEditor", SkillEditor, { "mode": "create", ":availableTools": availableTools, ":availableModels": availableModels, "client:load": true, "client:component-hydration": "load", "client:component-path": "/Users/alex/projects/skillit/src/components/SkillEditor.vue", "client:component-export": "default" })} ` })}`; + const availableTags = await getAllTags(); + const fromSlug = Astro2.url.searchParams.get("from"); + let forkSource = null; + if (fromSlug) { + forkSource = await getSkill(fromSlug); + } + const isFork = Boolean(forkSource); + const title = isFork ? `Fork ${forkSource.name} \u2014 Skills Here` : "New Skill \u2014 Skills Here"; + return renderTemplate`${renderComponent($$result, "Base", $$Base, { "title": title }, { "default": async ($$result2) => renderTemplate` ${maybeRenderHead()} ${isFork ? `Back to ${forkSource.name}` : "Back"}

    ${isFork ? "Fork Skill" : "New Skill"}

    ${isFork ? renderTemplate`

    Creating an independent copy of ${forkSource.name}. Change the name to generate a new slug before saving.

    ` : renderTemplate`

    Write a prompt in Markdown that tells Claude how to behave. The body is the instruction Claude receives. Use Allowed Tools to restrict which tools the skill can use.

    `}${isFork ? renderTemplate`${renderComponent($$result2, "SkillEditor", SkillEditor, { "mode": "create", "forkOf": fromSlug, "initialName": forkSource.name, "initialDescription": forkSource.description, "initialAllowedTools": forkSource["allowed-tools"].join(", "), "initialArgumentHint": forkSource["argument-hint"], "initialModel": forkSource.model, "initialUserInvocable": forkSource["user-invocable"], "initialDisableModelInvocation": forkSource["disable-model-invocation"], "initialContext": forkSource.context, "initialAgent": forkSource.agent, "initialHooks": forkSource.hooks ? JSON.stringify(forkSource.hooks, null, 2) : "", "initialBody": forkSource.content, "initialTags": forkSource.tags.join(", "), ":availableTools": availableTools, ":availableModels": availableModels, "availableTags": availableTags.join(","), "client:load": true, "client:component-hydration": "load", "client:component-path": "/Users/alex/projects/skillit/src/components/SkillEditor.vue", "client:component-export": "default" })}` : renderTemplate`${renderComponent($$result2, "SkillEditor", SkillEditor, { "mode": "create", ":availableTools": availableTools, ":availableModels": availableModels, "availableTags": availableTags.join(","), "client:load": true, "client:component-hydration": "load", "client:component-path": "/Users/alex/projects/skillit/src/components/SkillEditor.vue", "client:component-export": "default" })}`}` })}`; }, "/Users/alex/projects/skillit/src/pages/new.astro", void 0); const $$file = "/Users/alex/projects/skillit/src/pages/new.astro"; diff --git a/dist/server/pages/p.astro.mjs b/dist/server/pages/p.astro.mjs index 35e0750..6dbc79c 100644 --- a/dist/server/pages/p.astro.mjs +++ b/dist/server/pages/p.astro.mjs @@ -1,8 +1,9 @@ -import { a as buildPushScript } from '../chunks/sync_B_Og9xl3.mjs'; +import { i as isPowerShell, d as buildPushScriptPS, c as buildPushScript } from '../chunks/sync_BEq_wzpT.mjs'; export { renderers } from '../renderers.mjs'; -const GET = async ({ url }) => { - const script = await buildPushScript(url.origin, ".claude/skills"); +const GET = async ({ url, request }) => { + const ps = isPowerShell(request); + const script = ps ? await buildPushScriptPS(url.origin, ".claude\\skills") : await buildPushScript(url.origin, ".claude/skills"); return new Response(script, { headers: { "Content-Type": "text/plain; charset=utf-8" } }); diff --git a/package-lock.json b/package-lock.json index 0bdd9c2..32741ad 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,7 +7,6 @@ "": { "name": "skillit", "version": "1.0.0", - "license": "ISC", "dependencies": { "@astrojs/node": "^9.5.2", "@astrojs/vue": "^5.1.4", diff --git a/public/favicon.svg b/public/favicon.svg new file mode 100644 index 0000000..1726c13 --- /dev/null +++ b/public/favicon.svg @@ -0,0 +1,21 @@ + + + + + + + + + diff --git a/src/components/DeleteButton.vue b/src/components/DeleteButton.vue index b88f397..45652fa 100644 --- a/src/components/DeleteButton.vue +++ b/src/components/DeleteButton.vue @@ -1,34 +1,162 @@ diff --git a/src/components/SkillCard.astro b/src/components/SkillCard.astro index 6a803c2..5422b31 100644 --- a/src/components/SkillCard.astro +++ b/src/components/SkillCard.astro @@ -4,9 +4,16 @@ interface Props { name: string; description: string; 'allowed-tools': string[]; + tags?: string[]; + author?: string; + forkCount?: number; + downloads?: number; + pushes?: number; + lastPushedAt?: string | null; } -const { slug, name, description, 'allowed-tools': allowedTools } = Astro.props; +const { slug, name, description, 'allowed-tools': allowedTools, tags = [], author, forkCount = 0, downloads = 0, pushes = 0, lastPushedAt } = Astro.props; +const updatedLabel = lastPushedAt ? new Date(lastPushedAt).toLocaleDateString('en-US', { month: 'short', day: 'numeric' }) : null; const truncated = description.length > 120 ? description.slice(0, 120) + '...' : description; --- @@ -22,9 +29,9 @@ const truncated = description.length > 120 ? description.slice(0, 120) + '...' : - {truncated &&

    {truncated}

    } + {truncated &&

    {truncated}

    } {allowedTools.length > 0 && ( -
    +
    {allowedTools.map((tool) => ( {tool} @@ -32,5 +39,44 @@ const truncated = description.length > 120 ? description.slice(0, 120) + '...' : ))}
    )} + {tags.length > 0 && ( +
    + {tags.map((tag) => ( + + {tag} + + ))} +
    + )} +
    + {author &&

    by {author}

    } + {forkCount > 0 && ( + + + + + {forkCount} + + )} + {downloads > 0 && ( + + + + + {downloads} + + )} + {pushes > 0 && ( + + + + + {pushes} + + )} + {updatedLabel && ( + {updatedLabel} + )} +
    diff --git a/src/components/SkillEditor.vue b/src/components/SkillEditor.vue index 378a2e0..c63078f 100644 --- a/src/components/SkillEditor.vue +++ b/src/components/SkillEditor.vue @@ -1,5 +1,35 @@