spec-cat 0.1.2 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.output/nitro.json +1 -1
- package/.output/public/_nuxt/{waQ9fPC1.js → BQ5uCGly.js} +1 -1
- package/.output/public/_nuxt/BmA6LmfO.js +1 -0
- package/.output/public/_nuxt/{nJpWpjzg.js → BqGF4xj0.js} +1 -1
- package/.output/public/_nuxt/{_cj5lOdZ.js → CNV4uQF5.js} +1 -1
- package/.output/public/_nuxt/{DyMq_cQC.js → CagHV4Oi.js} +3 -3
- package/.output/public/_nuxt/{DGtcdWVl.js → Craz1Yql.js} +1 -1
- package/.output/public/_nuxt/{CCNYUZ9m.js → DEk1NNC6.js} +1 -1
- package/.output/public/_nuxt/{BE_75kPa.js → DGRa9Fmp.js} +1 -1
- package/.output/public/_nuxt/{gDut6QrP.js → DUhfwlFz.js} +1 -1
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/17d92f2c-b959-4d9d-b5d8-9871aa90e6a8.json +1 -0
- package/.output/public/_nuxt/entry.B5Gpnt5-.css +1 -0
- package/.output/public/_nuxt/error-404.BI7MGITY.css +1 -0
- package/.output/public/_nuxt/error-500.D0vfDezE.css +1 -0
- package/.output/public/_nuxt/vlI4SkjN.js +126 -0
- package/.output/server/chunks/_/codexProvider.mjs +16 -3
- package/.output/server/chunks/_/codexProvider.mjs.map +1 -1
- package/.output/server/chunks/_/error-500.mjs.map +1 -1
- package/.output/server/chunks/build/client.precomputed.mjs +1 -1
- package/.output/server/chunks/build/client.precomputed.mjs.map +1 -1
- package/.output/server/chunks/nitro/nitro.mjs +690 -659
- package/.output/server/chunks/nitro/nitro.mjs.map +1 -1
- package/.output/server/chunks/routes/api/chat/worktree-commit.post.mjs +1 -8
- package/.output/server/chunks/routes/api/chat/worktree-commit.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/specs/features.get.mjs +18 -1
- package/.output/server/chunks/routes/api/specs/features.get.mjs.map +1 -1
- package/.output/server/chunks/routes/renderer.mjs.map +1 -1
- package/.output/server/package.json +1 -1
- package/bin/spec-cat.js +1 -0
- package/package.json +3 -3
- package/.output/public/_nuxt/BJ7m4fRW.js +0 -126
- package/.output/public/_nuxt/DxEx-kFx.js +0 -1
- package/.output/public/_nuxt/builds/meta/3a0aacc1-0bd1-4d15-8b8a-3cee48cbfc69.json +0 -1
- package/.output/public/_nuxt/entry.CFLOfmis.css +0 -1
- package/.output/public/_nuxt/error-404.DuOyHzDc.css +0 -1
- package/.output/public/_nuxt/error-500.MhEffcqa.css +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{u as x,_ as f,a as y,b as S}from"./
|
|
1
|
+
import{u as x,_ as f,a as y,b as S}from"./DUhfwlFz.js";import{d as C,o as M,F as b,y as _,z as w,A as t,C as h,G as s,B as A,k as d}from"./CagHV4Oi.js";const B={class:"p-6 max-w-2xl"},E={class:"mt-8 space-y-8"},N={class:"flex items-center gap-4 p-3 rounded border border-retro-border bg-retro-panel"},P=["value"],k={class:"font-mono text-retro-cyan text-sm w-6 text-center"},$=C({__name:"settings",async setup(D){let n,a;const r=x(),i=S();M(()=>{r.hydrate()});const{data:c,pending:l,error:p}=([n,a]=b(()=>y("ai-providers",()=>$fetch("/api/ai/providers"))),n=await n,a(),n),u=d(()=>c.value?.providers??[]),m=d(()=>{const o=p.value;return o?o instanceof Error?o.message:String(o):null}),g=o=>{r.setProviderSelection(o),i.success("Settings saved")},v=o=>{const e=parseInt(o.target.value,10);isNaN(e)||(r.setAutoModeConcurrency(e),i.success("Settings saved"))};return(o,e)=>(_(),w("div",B,[e[5]||(e[5]=t("h1",{class:"text-2xl font-bold text-retro-cyan font-mono"},"Settings",-1)),e[6]||(e[6]=t("p",{class:"mt-2 text-retro-muted"},"Configure your Spec Cat preferences.",-1)),t("div",E,[t("section",null,[e[0]||(e[0]=t("h2",{class:"text-lg font-mono text-retro-text mb-4"},"AI Provider",-1)),e[1]||(e[1]=t("p",{class:"text-sm text-retro-muted mb-4"}," Select the provider and model that should power new conversations. ",-1)),h(f,{providers:u.value,selected:s(r).providerSelection,permissionMode:s(r).permissionMode,pending:s(l),errorMessage:m.value,onSelect:g},null,8,["providers","selected","permissionMode","pending","errorMessage"])]),t("section",null,[e[3]||(e[3]=t("h2",{class:"text-lg font-mono text-retro-text mb-4"},"Auto Mode",-1)),e[4]||(e[4]=t("p",{class:"text-sm text-retro-muted mb-4"}," Configure how many spec cascades can run in parallel during Auto Mode. ",-1)),t("div",N,[e[2]||(e[2]=t("label",{class:"font-mono text-retro-text text-sm whitespace-nowrap",for:"concurrency-page"}," Concurrency ",-1)),t("input",{id:"concurrency-page",type:"range",min:"1",max:"10",step:"1",value:s(r).autoModeConcurrency,class:"flex-1 accent-retro-cyan",onChange:v},null,40,P),t("span",k,A(s(r).autoModeConcurrency),1)])])])]))}});export{$ as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as _,y as i,z as l,H as w,G as n,B as p,k as B,I as V,J as F,K as N,L as S,T,C as x,M as z,D as j,N as v,A as o,O as u,E as W,P as $,Q as C,R as D,g as k,o as q,S as L,U as P}from"./DyMq_cQC.js";import{r as O,a as M,b as R,c as U}from"./_cj5lOdZ.js";const A=_({__name:"WorktreeStatusBadge",props:{status:{}},setup(t){const e=t,s=B(()=>({clean:{label:"clean",color:"text-retro-green bg-retro-green/20"},dirty:{label:"dirty",color:"text-retro-yellow bg-retro-yellow/20"},ahead:{label:"ahead",color:"text-retro-cyan bg-retro-cyan/20"},behind:{label:"behind",color:"text-retro-orange bg-retro-orange/20"},diverged:{label:"diverged",color:"text-retro-red bg-retro-red/20"}})[e.status]);return(a,h)=>(i(),l("span",{class:w(["px-1.5 py-0.5 text-[10px] font-mono uppercase rounded",n(s).color])},p(n(s).label),3))}}),E=V("worktree",{state:()=>({worktrees:[],currentBranch:"",mainWorktree:"",workingDirectory:"",loading:!1,error:null}),getters:{activeWorktree:t=>t.worktrees.find(e=>e.isCurrent),featureWorktrees:t=>t.worktrees.filter(e=>!e.isMain),mainWorktreeInfo:t=>t.worktrees.find(e=>e.isMain),hasWorktrees:t=>t.worktrees.length>1,dirtyWorktrees:t=>t.worktrees.filter(e=>e.status==="dirty")},actions:{async initialize(){if(!this.workingDirectory)try{const{cwd:t}=await $fetch("/api/cwd");this.workingDirectory=t}catch(t){console.error("Failed to get working directory:",t),this.workingDirectory=""}},async fetchWorktrees(){await this.initialize(),this.loading=!0,this.error=null;try{const t=await $fetch("/api/worktrees",{query:{workingDirectory:this.workingDirectory}});this.worktrees=t.worktrees,this.currentBranch=t.currentBranch,this.mainWorktree=t.mainWorktree}catch(t){this.error=t instanceof Error?t.message:"Failed to fetch worktrees",console.error("Failed to fetch worktrees:",t)}finally{this.loading=!1}},async createWorktree(t){await this.initialize(),this.loading=!0,this.error=null;try{const e=await $fetch("/api/worktrees",{method:"POST",query:{workingDirectory:this.workingDirectory},body:t});return e.success&&e.worktree?this.worktrees.push(e.worktree):e.error&&(this.error=e.error),e}catch(e){const s=e instanceof Error?e.message:"Failed to create worktree";return this.error=s,{success:!1,error:s}}finally{this.loading=!1}},async deleteWorktree(t,e=!1){await this.initialize(),this.loading=!0,this.error=null;try{const s=await $fetch(`/api/worktrees/${t}`,{method:"DELETE",query:{workingDirectory:this.workingDirectory,deleteBranch:e.toString()}});return s.success?this.worktrees=this.worktrees.filter(a=>a.name!==t):s.error&&(this.error=s.error),s}catch(s){const a=s instanceof Error?s.message:"Failed to delete worktree";return this.error=a,{success:!1,error:a}}finally{this.loading=!1}},async switchWorktree(t){await this.initialize(),this.loading=!0,this.error=null;try{const e=await $fetch(`/api/worktrees/${t}/switch`,{method:"POST",query:{workingDirectory:this.workingDirectory}});return e.success?(this.worktrees=this.worktrees.map(s=>({...s,isCurrent:s.name===t})),this.currentBranch=t):e.error&&(this.error=e.error),e}catch(e){const s=e instanceof Error?e.message:"Failed to switch worktree";return this.error=s,{success:!1,error:s}}finally{this.loading=!1}},clearError(){this.error=null}}}),H={class:"w-full max-w-md mx-4 bg-retro-dark border border-retro-border rounded-lg shadow-xl"},I={class:"flex items-center justify-between px-4 py-3 border-b border-retro-border"},K={key:0,class:"p-2 text-xs font-mono text-retro-red bg-retro-red/10 border border-retro-red/30 rounded"},G=["disabled"],J=["disabled"],Q={class:"flex justify-end gap-2 pt-2"},X=["disabled"],Y=["disabled"],Z=_({__name:"WorktreeCreateModal",props:{modelValue:{type:Boolean,default:!1},modelModifiers:{}},emits:["update:modelValue"],setup(t){const e=F(t,"modelValue"),s=E(),a=k(""),h=k(""),m=k(!1),f=k(""),b=async()=>{if(!a.value.trim()){f.value="Description is required";return}m.value=!0,f.value="";try{const d=await s.createWorktree({description:a.value.trim(),shortName:h.value.trim()||void 0});d.success?(a.value="",h.value="",e.value=!1):f.value=d.error||"Failed to create worktree"}catch(d){f.value=d instanceof Error?d.message:"Failed to create worktree"}finally{m.value=!1}},c=()=>{e.value=!1,a.value="",h.value="",f.value=""},g=d=>{d.key==="Escape"&&c()};return N(e,d=>{d?document.addEventListener("keydown",g):document.removeEventListener("keydown",g)}),(d,r)=>(i(),S(T,{to:"body"},[x(z,{"enter-active-class":"transition-opacity duration-200","enter-from-class":"opacity-0","enter-to-class":"opacity-100","leave-active-class":"transition-opacity duration-200","leave-from-class":"opacity-100","leave-to-class":"opacity-0"},{default:j(()=>[e.value?(i(),l("div",{key:0,class:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm",onClick:v(c,["self"])},[o("div",H,[o("div",I,[r[2]||(r[2]=o("h3",{class:"text-sm font-mono text-retro-text"},"Create Worktree",-1)),o("button",{type:"button",class:"p-1 rounded text-retro-muted hover:text-retro-text hover:bg-retro-panel transition-colors",onClick:c},[x(n(O),{class:"h-4 w-4"})])]),o("form",{class:"p-4 space-y-4",onSubmit:v(b,["prevent"])},[n(f)?(i(),l("div",K,p(n(f)),1)):u("",!0),o("div",null,[r[3]||(r[3]=o("label",{class:"block text-xs font-mono text-retro-muted mb-1"},[W(" Feature Description "),o("span",{class:"text-retro-red"},"*")],-1)),$(o("input",{"onUpdate:modelValue":r[0]||(r[0]=y=>C(a)?a.value=y:null),type:"text",placeholder:"e.g., Add user authentication",class:"w-full px-3 py-2 text-sm font-mono bg-retro-black border border-retro-border rounded text-retro-text placeholder-retro-subtle focus:outline-none focus:border-retro-cyan",disabled:n(m)},null,8,G),[[D,n(a)]]),r[4]||(r[4]=o("p",{class:"mt-1 text-[10px] font-mono text-retro-subtle"}," A brief description of what this feature does ",-1))]),o("div",null,[r[5]||(r[5]=o("label",{class:"block text-xs font-mono text-retro-muted mb-1"},[W(" Short Name "),o("span",{class:"text-retro-subtle"},"(optional)")],-1)),$(o("input",{"onUpdate:modelValue":r[1]||(r[1]=y=>C(h)?h.value=y:null),type:"text",placeholder:"e.g., auth",class:"w-full px-3 py-2 text-sm font-mono bg-retro-black border border-retro-border rounded text-retro-text placeholder-retro-subtle focus:outline-none focus:border-retro-cyan",disabled:n(m)},null,8,J),[[D,n(h)]]),r[6]||(r[6]=o("p",{class:"mt-1 text-[10px] font-mono text-retro-subtle"}," Override the auto-generated branch name (e.g., 001-auth instead of 001-add-user-authentication) ",-1))]),o("div",Q,[o("button",{type:"button",class:"px-3 py-1.5 text-xs font-mono text-retro-muted hover:text-retro-text bg-retro-panel hover:bg-retro-border rounded transition-colors",disabled:n(m),onClick:c}," Cancel ",8,X),o("button",{type:"submit",class:"px-3 py-1.5 text-xs font-mono text-retro-black bg-retro-cyan hover:bg-retro-cyan/80 rounded transition-colors disabled:opacity-50 disabled:cursor-not-allowed",disabled:n(m)||!n(a).trim()},p(n(m)?"Creating...":"Create"),9,Y)])],32)])])):u("",!0)]),_:1})]))}}),ee={class:"h-full flex flex-col bg-retro-black"},te={class:"flex-shrink-0 h-12 flex items-center justify-between px-4 border-b border-retro-border bg-retro-dark"},re={class:"flex items-center gap-2"},oe={key:0,class:"px-4 py-2 bg-retro-red/20 border-b border-retro-red/50"},se={class:"text-xs font-mono text-retro-red"},ne={class:"flex-1 overflow-y-auto p-2 space-y-1"},ae={class:"flex items-start justify-between gap-2"},ie={class:"flex-1 min-w-0"},le={class:"flex items-center gap-2"},ce={key:0,class:"px-1.5 py-0.5 text-[10px] font-mono uppercase bg-retro-yellow/20 text-retro-yellow rounded"},de={key:1,class:"px-1.5 py-0.5 text-[10px] font-mono uppercase bg-retro-cyan/20 text-retro-cyan rounded"},ue={key:0,class:"mt-1 text-xs font-mono text-retro-muted truncate"},pe={class:"text-retro-subtle"},he={class:"mt-1 text-[10px] font-mono text-retro-subtle truncate"},me={class:"flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity"},fe=["onClick"],xe=["onClick"],be={key:0,class:"mt-2 text-[10px] font-mono text-retro-green"},ye={key:0,class:"flex flex-col items-center justify-center py-8 text-center"},ke=_({__name:"WorktreePanel",setup(t){const e=E(),s=k(!1);q(()=>{e.fetchWorktrees()});const a=()=>{e.fetchWorktrees()},h=()=>{s.value=!0},m=async b=>{await e.switchWorktree(b)},f=async b=>{confirm(`Delete worktree "${b}"? This will remove the worktree directory.`)&&await e.deleteWorktree(b,!1)};return(b,c)=>{const g=A,d=Z;return i(),l("div",ee,[o("div",te,[c[1]||(c[1]=o("h2",{class:"text-sm font-mono text-retro-text"},"Worktrees",-1)),o("div",re,[o("button",{type:"button",class:"p-1.5 rounded text-retro-muted hover:text-retro-cyan hover:bg-retro-panel transition-colors",title:"Refresh",onClick:a},[x(n(M),{class:w(["h-4 w-4",{"animate-spin":n(e).loading}])},null,8,["class"])]),o("button",{type:"button",class:"p-1.5 rounded text-retro-muted hover:text-retro-green hover:bg-retro-panel transition-colors",title:"Create worktree",onClick:h},[x(n(R),{class:"h-4 w-4"})])])]),n(e).error?(i(),l("div",oe,[o("p",se,p(n(e).error),1)])):u("",!0),o("div",ne,[(i(!0),l(L,null,P(n(e).worktrees,r=>(i(),l("div",{key:r.name,class:w(["group p-3 rounded-md border transition-colors",[r.isCurrent?"bg-retro-cyan/10 border-retro-cyan":"bg-retro-panel border-retro-border hover:border-retro-muted"]])},[o("div",ae,[o("div",ie,[o("div",le,[o("span",{class:w(["font-mono text-sm truncate",r.isCurrent?"text-retro-cyan":"text-retro-text"])},p(r.name),3),x(g,{status:r.status},null,8,["status"]),r.isMain?(i(),l("span",ce," main ")):u("",!0),r.isCurrent?(i(),l("span",de," current ")):u("",!0)]),r.lastCommit?(i(),l("div",ue,[o("span",pe,p(r.lastCommit.shortHash),1),c[2]||(c[2]=o("span",{class:"mx-1"},"·",-1)),o("span",null,p(r.lastCommit.message),1)])):u("",!0),o("div",he,p(r.path),1)]),o("div",me,[!r.isCurrent&&!r.isMain?(i(),l("button",{key:0,type:"button",class:"p-1 rounded text-retro-muted hover:text-retro-cyan hover:bg-retro-dark transition-colors",title:"Switch to this worktree",onClick:v(y=>m(r.name),["stop"])},[x(n(M),{class:"h-3.5 w-3.5"})],8,fe)):u("",!0),r.isMain?u("",!0):(i(),l("button",{key:1,type:"button",class:"p-1 rounded text-retro-muted hover:text-retro-red hover:bg-retro-dark transition-colors",title:"Delete worktree",onClick:v(y=>f(r.name),["stop"])},[x(n(U),{class:"h-3.5 w-3.5"})],8,xe))])]),r.commitCount>0?(i(),l("div",be,p(r.commitCount)+" commit"+p(r.commitCount>1?"s":"")+" ahead ",1)):u("",!0)],2))),128)),!n(e).loading&&n(e).worktrees.length===0?(i(),l("div",ye,[...c[3]||(c[3]=[o("p",{class:"text-sm font-mono text-retro-muted"},"No worktrees found",-1),o("p",{class:"mt-1 text-xs font-mono text-retro-subtle"},"Create a new worktree to start working on a feature",-1)])])):u("",!0)]),x(d,{modelValue:n(s),"onUpdate:modelValue":c[0]||(c[0]=r=>C(s)?s.value=r:null)},null,8,["modelValue"])])}}}),ve=_({__name:"index",setup(t){return(e,s)=>{const a=ke;return i(),S(a)}}});export{ve as default};
|
|
1
|
+
import{d as _,y as i,z as l,H as w,G as n,B as p,k as B,I as V,J as F,K as N,L as S,T,C as x,M as z,D as j,N as v,A as o,O as u,E as W,P as $,Q as C,R as D,g as k,o as q,S as L,U as P}from"./CagHV4Oi.js";import{r as O,a as M,b as R,c as U}from"./CNV4uQF5.js";const A=_({__name:"WorktreeStatusBadge",props:{status:{}},setup(t){const e=t,s=B(()=>({clean:{label:"clean",color:"text-retro-green bg-retro-green/20"},dirty:{label:"dirty",color:"text-retro-yellow bg-retro-yellow/20"},ahead:{label:"ahead",color:"text-retro-cyan bg-retro-cyan/20"},behind:{label:"behind",color:"text-retro-orange bg-retro-orange/20"},diverged:{label:"diverged",color:"text-retro-red bg-retro-red/20"}})[e.status]);return(a,h)=>(i(),l("span",{class:w(["px-1.5 py-0.5 text-[10px] font-mono uppercase rounded",n(s).color])},p(n(s).label),3))}}),E=V("worktree",{state:()=>({worktrees:[],currentBranch:"",mainWorktree:"",workingDirectory:"",loading:!1,error:null}),getters:{activeWorktree:t=>t.worktrees.find(e=>e.isCurrent),featureWorktrees:t=>t.worktrees.filter(e=>!e.isMain),mainWorktreeInfo:t=>t.worktrees.find(e=>e.isMain),hasWorktrees:t=>t.worktrees.length>1,dirtyWorktrees:t=>t.worktrees.filter(e=>e.status==="dirty")},actions:{async initialize(){if(!this.workingDirectory)try{const{cwd:t}=await $fetch("/api/cwd");this.workingDirectory=t}catch(t){console.error("Failed to get working directory:",t),this.workingDirectory=""}},async fetchWorktrees(){await this.initialize(),this.loading=!0,this.error=null;try{const t=await $fetch("/api/worktrees",{query:{workingDirectory:this.workingDirectory}});this.worktrees=t.worktrees,this.currentBranch=t.currentBranch,this.mainWorktree=t.mainWorktree}catch(t){this.error=t instanceof Error?t.message:"Failed to fetch worktrees",console.error("Failed to fetch worktrees:",t)}finally{this.loading=!1}},async createWorktree(t){await this.initialize(),this.loading=!0,this.error=null;try{const e=await $fetch("/api/worktrees",{method:"POST",query:{workingDirectory:this.workingDirectory},body:t});return e.success&&e.worktree?this.worktrees.push(e.worktree):e.error&&(this.error=e.error),e}catch(e){const s=e instanceof Error?e.message:"Failed to create worktree";return this.error=s,{success:!1,error:s}}finally{this.loading=!1}},async deleteWorktree(t,e=!1){await this.initialize(),this.loading=!0,this.error=null;try{const s=await $fetch(`/api/worktrees/${t}`,{method:"DELETE",query:{workingDirectory:this.workingDirectory,deleteBranch:e.toString()}});return s.success?this.worktrees=this.worktrees.filter(a=>a.name!==t):s.error&&(this.error=s.error),s}catch(s){const a=s instanceof Error?s.message:"Failed to delete worktree";return this.error=a,{success:!1,error:a}}finally{this.loading=!1}},async switchWorktree(t){await this.initialize(),this.loading=!0,this.error=null;try{const e=await $fetch(`/api/worktrees/${t}/switch`,{method:"POST",query:{workingDirectory:this.workingDirectory}});return e.success?(this.worktrees=this.worktrees.map(s=>({...s,isCurrent:s.name===t})),this.currentBranch=t):e.error&&(this.error=e.error),e}catch(e){const s=e instanceof Error?e.message:"Failed to switch worktree";return this.error=s,{success:!1,error:s}}finally{this.loading=!1}},clearError(){this.error=null}}}),H={class:"w-full max-w-md mx-4 bg-retro-dark border border-retro-border rounded-lg shadow-xl"},I={class:"flex items-center justify-between px-4 py-3 border-b border-retro-border"},K={key:0,class:"p-2 text-xs font-mono text-retro-red bg-retro-red/10 border border-retro-red/30 rounded"},G=["disabled"],J=["disabled"],Q={class:"flex justify-end gap-2 pt-2"},X=["disabled"],Y=["disabled"],Z=_({__name:"WorktreeCreateModal",props:{modelValue:{type:Boolean,default:!1},modelModifiers:{}},emits:["update:modelValue"],setup(t){const e=F(t,"modelValue"),s=E(),a=k(""),h=k(""),m=k(!1),f=k(""),b=async()=>{if(!a.value.trim()){f.value="Description is required";return}m.value=!0,f.value="";try{const d=await s.createWorktree({description:a.value.trim(),shortName:h.value.trim()||void 0});d.success?(a.value="",h.value="",e.value=!1):f.value=d.error||"Failed to create worktree"}catch(d){f.value=d instanceof Error?d.message:"Failed to create worktree"}finally{m.value=!1}},c=()=>{e.value=!1,a.value="",h.value="",f.value=""},g=d=>{d.key==="Escape"&&c()};return N(e,d=>{d?document.addEventListener("keydown",g):document.removeEventListener("keydown",g)}),(d,r)=>(i(),S(T,{to:"body"},[x(z,{"enter-active-class":"transition-opacity duration-200","enter-from-class":"opacity-0","enter-to-class":"opacity-100","leave-active-class":"transition-opacity duration-200","leave-from-class":"opacity-100","leave-to-class":"opacity-0"},{default:j(()=>[e.value?(i(),l("div",{key:0,class:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm",onClick:v(c,["self"])},[o("div",H,[o("div",I,[r[2]||(r[2]=o("h3",{class:"text-sm font-mono text-retro-text"},"Create Worktree",-1)),o("button",{type:"button",class:"p-1 rounded text-retro-muted hover:text-retro-text hover:bg-retro-panel transition-colors",onClick:c},[x(n(O),{class:"h-4 w-4"})])]),o("form",{class:"p-4 space-y-4",onSubmit:v(b,["prevent"])},[n(f)?(i(),l("div",K,p(n(f)),1)):u("",!0),o("div",null,[r[3]||(r[3]=o("label",{class:"block text-xs font-mono text-retro-muted mb-1"},[W(" Feature Description "),o("span",{class:"text-retro-red"},"*")],-1)),$(o("input",{"onUpdate:modelValue":r[0]||(r[0]=y=>C(a)?a.value=y:null),type:"text",placeholder:"e.g., Add user authentication",class:"w-full px-3 py-2 text-sm font-mono bg-retro-black border border-retro-border rounded text-retro-text placeholder-retro-subtle focus:outline-none focus:border-retro-cyan",disabled:n(m)},null,8,G),[[D,n(a)]]),r[4]||(r[4]=o("p",{class:"mt-1 text-[10px] font-mono text-retro-subtle"}," A brief description of what this feature does ",-1))]),o("div",null,[r[5]||(r[5]=o("label",{class:"block text-xs font-mono text-retro-muted mb-1"},[W(" Short Name "),o("span",{class:"text-retro-subtle"},"(optional)")],-1)),$(o("input",{"onUpdate:modelValue":r[1]||(r[1]=y=>C(h)?h.value=y:null),type:"text",placeholder:"e.g., auth",class:"w-full px-3 py-2 text-sm font-mono bg-retro-black border border-retro-border rounded text-retro-text placeholder-retro-subtle focus:outline-none focus:border-retro-cyan",disabled:n(m)},null,8,J),[[D,n(h)]]),r[6]||(r[6]=o("p",{class:"mt-1 text-[10px] font-mono text-retro-subtle"}," Override the auto-generated branch name (e.g., 001-auth instead of 001-add-user-authentication) ",-1))]),o("div",Q,[o("button",{type:"button",class:"px-3 py-1.5 text-xs font-mono text-retro-muted hover:text-retro-text bg-retro-panel hover:bg-retro-border rounded transition-colors",disabled:n(m),onClick:c}," Cancel ",8,X),o("button",{type:"submit",class:"px-3 py-1.5 text-xs font-mono text-retro-black bg-retro-cyan hover:bg-retro-cyan/80 rounded transition-colors disabled:opacity-50 disabled:cursor-not-allowed",disabled:n(m)||!n(a).trim()},p(n(m)?"Creating...":"Create"),9,Y)])],32)])])):u("",!0)]),_:1})]))}}),ee={class:"h-full flex flex-col bg-retro-black"},te={class:"flex-shrink-0 h-12 flex items-center justify-between px-4 border-b border-retro-border bg-retro-dark"},re={class:"flex items-center gap-2"},oe={key:0,class:"px-4 py-2 bg-retro-red/20 border-b border-retro-red/50"},se={class:"text-xs font-mono text-retro-red"},ne={class:"flex-1 overflow-y-auto p-2 space-y-1"},ae={class:"flex items-start justify-between gap-2"},ie={class:"flex-1 min-w-0"},le={class:"flex items-center gap-2"},ce={key:0,class:"px-1.5 py-0.5 text-[10px] font-mono uppercase bg-retro-yellow/20 text-retro-yellow rounded"},de={key:1,class:"px-1.5 py-0.5 text-[10px] font-mono uppercase bg-retro-cyan/20 text-retro-cyan rounded"},ue={key:0,class:"mt-1 text-xs font-mono text-retro-muted truncate"},pe={class:"text-retro-subtle"},he={class:"mt-1 text-[10px] font-mono text-retro-subtle truncate"},me={class:"flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity"},fe=["onClick"],xe=["onClick"],be={key:0,class:"mt-2 text-[10px] font-mono text-retro-green"},ye={key:0,class:"flex flex-col items-center justify-center py-8 text-center"},ke=_({__name:"WorktreePanel",setup(t){const e=E(),s=k(!1);q(()=>{e.fetchWorktrees()});const a=()=>{e.fetchWorktrees()},h=()=>{s.value=!0},m=async b=>{await e.switchWorktree(b)},f=async b=>{confirm(`Delete worktree "${b}"? This will remove the worktree directory.`)&&await e.deleteWorktree(b,!1)};return(b,c)=>{const g=A,d=Z;return i(),l("div",ee,[o("div",te,[c[1]||(c[1]=o("h2",{class:"text-sm font-mono text-retro-text"},"Worktrees",-1)),o("div",re,[o("button",{type:"button",class:"p-1.5 rounded text-retro-muted hover:text-retro-cyan hover:bg-retro-panel transition-colors",title:"Refresh",onClick:a},[x(n(M),{class:w(["h-4 w-4",{"animate-spin":n(e).loading}])},null,8,["class"])]),o("button",{type:"button",class:"p-1.5 rounded text-retro-muted hover:text-retro-green hover:bg-retro-panel transition-colors",title:"Create worktree",onClick:h},[x(n(R),{class:"h-4 w-4"})])])]),n(e).error?(i(),l("div",oe,[o("p",se,p(n(e).error),1)])):u("",!0),o("div",ne,[(i(!0),l(L,null,P(n(e).worktrees,r=>(i(),l("div",{key:r.name,class:w(["group p-3 rounded-md border transition-colors",[r.isCurrent?"bg-retro-cyan/10 border-retro-cyan":"bg-retro-panel border-retro-border hover:border-retro-muted"]])},[o("div",ae,[o("div",ie,[o("div",le,[o("span",{class:w(["font-mono text-sm truncate",r.isCurrent?"text-retro-cyan":"text-retro-text"])},p(r.name),3),x(g,{status:r.status},null,8,["status"]),r.isMain?(i(),l("span",ce," main ")):u("",!0),r.isCurrent?(i(),l("span",de," current ")):u("",!0)]),r.lastCommit?(i(),l("div",ue,[o("span",pe,p(r.lastCommit.shortHash),1),c[2]||(c[2]=o("span",{class:"mx-1"},"·",-1)),o("span",null,p(r.lastCommit.message),1)])):u("",!0),o("div",he,p(r.path),1)]),o("div",me,[!r.isCurrent&&!r.isMain?(i(),l("button",{key:0,type:"button",class:"p-1 rounded text-retro-muted hover:text-retro-cyan hover:bg-retro-dark transition-colors",title:"Switch to this worktree",onClick:v(y=>m(r.name),["stop"])},[x(n(M),{class:"h-3.5 w-3.5"})],8,fe)):u("",!0),r.isMain?u("",!0):(i(),l("button",{key:1,type:"button",class:"p-1 rounded text-retro-muted hover:text-retro-red hover:bg-retro-dark transition-colors",title:"Delete worktree",onClick:v(y=>f(r.name),["stop"])},[x(n(U),{class:"h-3.5 w-3.5"})],8,xe))])]),r.commitCount>0?(i(),l("div",be,p(r.commitCount)+" commit"+p(r.commitCount>1?"s":"")+" ahead ",1)):u("",!0)],2))),128)),!n(e).loading&&n(e).worktrees.length===0?(i(),l("div",ye,[...c[3]||(c[3]=[o("p",{class:"text-sm font-mono text-retro-muted"},"No worktrees found",-1),o("p",{class:"mt-1 text-xs font-mono text-retro-subtle"},"Create a new worktree to start working on a feature",-1)])])):u("",!0)]),x(d,{modelValue:n(s),"onUpdate:modelValue":c[0]||(c[0]=r=>C(s)?s.value=r:null)},null,8,["modelValue"])])}}}),ve=_({__name:"index",setup(t){return(e,s)=>{const a=ke;return i(),S(a)}}});export{ve as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as j,u as N,a as L,o as T,b as B,r as E,c as O,e as H,h as R,f as q,p as I,s as U,g as V,i as A,j as D,n as F,k as g,l as M,m as z,q as $,w as W,t as G,v as K,x as Q,y as J,z as X,A as S,B as _,C as Y,D as Z,E as ee}from"./
|
|
1
|
+
import{d as j,u as N,a as L,o as T,b as B,r as E,c as O,e as H,h as R,f as q,p as I,s as U,g as V,i as A,j as D,n as F,k as g,l as M,m as z,q as $,w as W,t as G,v as K,x as Q,y as J,z as X,A as S,B as _,C as Y,D as Z,E as ee}from"./CagHV4Oi.js";import{_ as te}from"./DlAUqK2U.js";const re=(...t)=>t.find(o=>o!==void 0);function ne(t){const o=t.componentName||"NuxtLink";function f(e){return typeof e=="string"&&e.startsWith("#")}function b(e,l,d){const n=d??t.trailingSlash;if(!e||n!=="append"&&n!=="remove")return e;if(typeof e=="string")return C(e,n);const i="path"in e&&e.path!==void 0?e.path:l(e).path;return{...e,name:void 0,path:C(i,n)}}function w(e){const l=N(),d=$(),n=g(()=>!!e.target&&e.target!=="_self"),i=g(()=>{const s=e.to||e.href||"";return typeof s=="string"&&z(s,{acceptRelative:!0})}),y=q("RouterLink"),h=typeof y!="string"?y.useLink:void 0,c=g(()=>{if(e.external)return!0;const s=e.to||e.href||"";return typeof s=="object"?!1:s===""||i.value}),a=g(()=>{const s=e.to||e.href||"";return c.value?s:b(s,l.resolve,e.trailingSlash)}),p=c.value?void 0:h?.({...e,to:a}),m=g(()=>{const s=e.trailingSlash??t.trailingSlash;if(!a.value||i.value||f(a.value))return a.value;if(c.value){const x=typeof a.value=="object"&&"path"in a.value?A(a.value):a.value,k=typeof x=="object"?l.resolve(x).href:x;return C(k,s)}return typeof a.value=="object"?l.resolve(a.value)?.href??null:C(M(d.app.baseURL,a.value),s)});return{to:a,hasTarget:n,isAbsoluteUrl:i,isExternal:c,href:m,isActive:p?.isActive??g(()=>a.value===l.currentRoute.value.path),isExactActive:p?.isExactActive??g(()=>a.value===l.currentRoute.value.path),route:p?.route??g(()=>l.resolve(a.value)),async navigate(s){await F(m.value,{replace:e.replace,external:c.value||n.value})}}}return j({name:o,props:{to:{type:[String,Object],default:void 0,required:!1},href:{type:[String,Object],default:void 0,required:!1},target:{type:String,default:void 0,required:!1},rel:{type:String,default:void 0,required:!1},noRel:{type:Boolean,default:void 0,required:!1},prefetch:{type:Boolean,default:void 0,required:!1},prefetchOn:{type:[String,Object],default:void 0,required:!1},noPrefetch:{type:Boolean,default:void 0,required:!1},activeClass:{type:String,default:void 0,required:!1},exactActiveClass:{type:String,default:void 0,required:!1},prefetchedClass:{type:String,default:void 0,required:!1},replace:{type:Boolean,default:void 0,required:!1},ariaCurrentValue:{type:String,default:void 0,required:!1},external:{type:Boolean,default:void 0,required:!1},custom:{type:Boolean,default:void 0,required:!1},trailingSlash:{type:String,default:void 0,required:!1}},useLink:w,setup(e,{slots:l}){const d=N(),{to:n,href:i,navigate:y,isExternal:h,hasTarget:c,isAbsoluteUrl:a}=w(e),p=U(!1),m=V(null),s=u=>{m.value=e.custom?u?.$el?.nextElementSibling:u?.$el};function x(u){return!p.value&&(typeof e.prefetchOn=="string"?e.prefetchOn===u:e.prefetchOn?.[u]??t.prefetchOn?.[u])&&(e.prefetch??t.prefetch)!==!1&&e.noPrefetch!==!0&&e.target!=="_blank"&&!le()}async function k(u=L()){if(p.value)return;p.value=!0;const v=typeof n.value=="string"?n.value:h.value?A(n.value):d.resolve(n.value).fullPath,r=h.value?new URL(v,window.location.href).href:v;await Promise.all([u.hooks.callHook("link:prefetch",r).catch(()=>{}),!h.value&&!c.value&&D(n.value,d).catch(()=>{})])}if(x("visibility")){const u=L();let v,r=null;T(()=>{const P=ie();B(()=>{v=E(()=>{m?.value?.tagName&&(r=P.observe(m.value,async()=>{r?.(),r=null,await k(u)}))})})}),O(()=>{v&&H(v),r?.(),r=null})}return()=>{if(!h.value&&!c.value&&!f(n.value)){const r={ref:s,to:n.value,activeClass:e.activeClass||t.activeClass,exactActiveClass:e.exactActiveClass||t.exactActiveClass,replace:e.replace,ariaCurrentValue:e.ariaCurrentValue,custom:e.custom};return e.custom||(x("interaction")&&(r.onPointerenter=k.bind(null,void 0),r.onFocus=k.bind(null,void 0)),p.value&&(r.class=e.prefetchedClass||t.prefetchedClass),r.rel=e.rel||void 0),R(q("RouterLink"),r,l.default)}const u=e.target||null,v=re(e.noRel?"":e.rel,t.externalRelAttribute,a.value||c.value?"noopener noreferrer":"")||null;return e.custom?l.default?l.default({href:i.value,navigate:y,prefetch:k,get route(){if(!i.value)return;const r=new URL(i.value,window.location.href);return{path:r.pathname,fullPath:r.pathname,get query(){return I(r.search)},hash:r.hash,params:{},name:void 0,matched:[],redirectedFrom:void 0,meta:{},href:i.value}},rel:v,target:u,isExternal:h.value||c.value,isActive:!1,isExactActive:!1}):null:R("a",{ref:m,href:i.value||null,rel:v,target:u,onClick:r=>{if(!(h.value||c.value))return r.preventDefault(),e.replace?d.replace(i.value):d.push(i.value)}},l.default?.())}}})}const ae=ne(K);function C(t,o){const f=o==="append"?W:G;return z(t)&&!t.startsWith("http")?t:f(t,!0)}function ie(){const t=L();if(t._observer)return t._observer;let o=null;const f=new Map,b=(e,l)=>(o||=new IntersectionObserver(d=>{for(const n of d){const i=f.get(n.target);(n.isIntersecting||n.intersectionRatio>0)&&i&&i()}}),f.set(e,l),o.observe(e),()=>{f.delete(e),o?.unobserve(e),f.size===0&&(o?.disconnect(),o=null)});return t._observer={observe:b}}const oe=/2g/;function le(){const t=navigator.connection;return!!(t&&(t.saveData||oe.test(t.effectiveType)))}const se={class:"antialiased bg-white dark:bg-black dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-black"},ue={class:"max-w-520px text-center z-20"},ce=["textContent"],fe=["textContent"],de={class:"flex items-center justify-center w-full"},ve={__name:"error-404",props:{appName:{type:String,default:"Nuxt"},version:{type:String,default:""},status:{type:Number,default:404},statusText:{type:String,default:"Not Found"},description:{type:String,default:"Sorry, the page you are looking for could not be found."},backHome:{type:String,default:"Go back home"}},setup(t){const o=t;return Q({title:`${o.status} - ${o.statusText} | ${o.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{border-color:var(--un-default-border-color,#e5e7eb);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}h1{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}h1,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(f,b)=>{const w=ae;return J(),X("div",se,[b[0]||(b[0]=S("div",{class:"fixed left-0 right-0 spotlight z-10"},null,-1)),S("div",ue,[S("h1",{class:"font-medium mb-8 sm:text-10xl text-8xl",textContent:_(t.status)},null,8,ce),S("p",{class:"font-light leading-tight mb-16 px-8 sm:px-0 sm:text-4xl text-xl",textContent:_(t.description)},null,8,fe),S("div",de,[Y(w,{to:"/",class:"cursor-pointer gradient-border px-4 py-2 sm:px-6 sm:py-3 sm:text-xl text-md"},{default:Z(()=>[ee(_(t.backHome),1)]),_:1})])])])}}},ge=te(ve,[["__scopeId","data-v-5b1d1387"]]);export{ge as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as j,aa as C,ab as q,X,ac as Y,K as V,ad as Z,k as P,ae as J,af as Q,g as H,s as N,Z as ee,ag as te,G as ae,ah as se,ai as re,aj as K,I as oe,a0 as ne,d as ie,y as _,z as b,A as g,B as S,O as I,S as L,U as B,H as O,E as ce}from"./DyMq_cQC.js";const le={trailing:!0};function de(e,t=25,o={}){if(o={...le,...o},!Number.isFinite(t))throw new TypeError("Expected `wait` to be a finite number");let i,r,h=[],s,a;const m=(u,d)=>(s=ue(e,u,d),s.finally(()=>{if(s=null,o.trailing&&a&&!r){const p=m(u,a);return a=null,p}}),s),v=function(...u){return o.trailing&&(a=u),s||new Promise(d=>{const p=!r&&o.leading;clearTimeout(r),r=setTimeout(()=>{r=null;const n=o.leading?i:m(this,u);a=null;for(const l of h)l(n);h=[]},t),p?(i=m(this,u),d(i)):h.push(d)})},c=u=>{u&&(clearTimeout(u),r=null)};return v.isPending=()=>!!r,v.cancel=()=>{c(r),h=[],a=null},v.flush=()=>{if(c(r),!a||s)return;const u=a;return a=null,m(this,u)},v}async function ue(e,t,o){return await e.apply(t,o)}const fe=Symbol.for("nuxt:client-only"),me=e=>e==="defer"||e===!1;function qe(...e){const t=typeof e[e.length-1]=="string"?e.pop():void 0;ye(e[0],e[1])&&e.unshift(t);let[o,i,r={}]=e,h=!1;const s=P(()=>re(o));if(typeof s.value!="string")throw new TypeError("[nuxt] [useAsyncData] key must be a string.");if(typeof i!="function")throw new TypeError("[nuxt] [useAsyncData] handler must be a function.");const a=j();r.server??=!0,r.default??=pe,r.getCachedData??=U,r.lazy??=!1,r.immediate??=!0,r.deep??=C.deep,r.dedupe??="cancel",r._functionName,a._asyncData[s.value];function m(){const n={cause:"initial",dedupe:r.dedupe};return a._asyncData[s.value]?._init||(n.cachedData=r.getCachedData(s.value,a,{cause:"initial"}),a._asyncData[s.value]=$(a,s.value,i,r,n.cachedData)),()=>a._asyncData[s.value].execute(n)}const v=m(),c=a._asyncData[s.value];c._deps++;const u=r.server!==!1&&a.payload.serverRendered;{let n=function(y){const f=a._asyncData[y];f?._deps&&(f._deps--,f._deps===0&&f?._off())};const l=J();if(l&&u&&r.immediate&&!l.sp&&(l.sp=[]),l&&!l._nuxtOnBeforeMountCbs){l._nuxtOnBeforeMountCbs=[];const y=l._nuxtOnBeforeMountCbs;q(()=>{y.forEach(f=>{f()}),y.splice(0,y.length)}),X(()=>y.splice(0,y.length))}const x=l&&(l._nuxtClientOnly||Y(fe,!1));u&&a.isHydrating&&(c.error.value||c.data.value!=null)?(c.pending.value=!1,c.status.value=c.error.value?"error":"success"):l&&(!x&&a.payload.serverRendered&&a.isHydrating||r.lazy)&&r.immediate?l._nuxtOnBeforeMountCbs.push(v):r.immediate&&v();const D=Q(),M=V(s,(y,f)=>{if((y||f)&&y!==f){h=!0;const R=a._asyncData[f]?.data.value!==C.value,W=a._asyncDataPromises[f]!==void 0,G={cause:"initial",dedupe:r.dedupe};if(!a._asyncData[y]?._init){let T;f&&R?T=a._asyncData[f].data.value:(T=r.getCachedData(y,a,{cause:"initial"}),G.cachedData=T),a._asyncData[y]=$(a,y,i,r,T)}a._asyncData[y]._deps++,f&&n(f),(r.immediate||R||W)&&a._asyncData[y].execute(G),K(()=>{h=!1})}},{flush:"sync"}),E=r.watch?V(r.watch,()=>{h||(a._asyncData[s.value]?._execute.isPending()&&K(()=>{a._asyncData[s.value]?._execute.flush()}),a._asyncData[s.value]?._execute({cause:"watch",dedupe:r.dedupe}))}):()=>{};D&&Z(()=>{M(),E(),n(s.value)})}const d={data:A(()=>a._asyncData[s.value]?.data),pending:A(()=>a._asyncData[s.value]?.pending),status:A(()=>a._asyncData[s.value]?.status),error:A(()=>a._asyncData[s.value]?.error),refresh:(...n)=>a._asyncData[s.value]?._init?a._asyncData[s.value].execute(...n):m()(),execute:(...n)=>d.refresh(...n),clear:()=>{const n=a._asyncData[s.value];if(n?._abortController)try{n._abortController.abort(new DOMException("AsyncData aborted by user.","AbortError"))}finally{n._abortController=void 0}z(a,s.value)}},p=Promise.resolve(a._asyncDataPromises[s.value]).then(()=>d);return Object.assign(p,d),p}function A(e){return P({get(){return e()?.value},set(t){const o=e();o&&(o.value=t)}})}function ye(e,t){return!(typeof e=="string"||typeof e=="object"&&e!==null||typeof e=="function"&&typeof t=="function")}function z(e,t){t in e.payload.data&&(e.payload.data[t]=void 0),t in e.payload._errors&&(e.payload._errors[t]=C.errorValue),e._asyncData[t]&&(e._asyncData[t].data.value=void 0,e._asyncData[t].error.value=C.errorValue,e._asyncData[t].pending.value=!1,e._asyncData[t].status.value="idle"),t in e._asyncDataPromises&&(e._asyncDataPromises[t]=void 0)}function he(e,t){const o={};for(const i of t)o[i]=e[i];return o}function $(e,t,o,i,r){e.payload._errors[t]??=C.errorValue;const h=i.getCachedData!==U,s=o,a=i.deep?H:N,m=r!=null,v=e.hook("app:data:refresh",async u=>{(!u||u.includes(t))&&await c.execute({cause:"refresh:hook"})}),c={data:a(m?r:i.default()),pending:N(!m),error:se(e.payload._errors,t),status:N("idle"),execute:(...u)=>{const[d,p=void 0]=u,n=d&&p===void 0&&typeof d=="object"?d:{};if(e._asyncDataPromises[t]&&me(n.dedupe??i.dedupe))return e._asyncDataPromises[t];if(n.cause==="initial"||e.isHydrating){const D="cachedData"in n?n.cachedData:i.getCachedData(t,e,{cause:n.cause??"refresh:manual"});if(D!=null)return e.payload.data[t]=c.data.value=D,c.error.value=C.errorValue,c.status.value="success",Promise.resolve(D)}c.pending.value=!0,c._abortController&&c._abortController.abort(new DOMException("AsyncData request cancelled by deduplication","AbortError")),c._abortController=new AbortController,c.status.value="pending";const l=new AbortController,x=new Promise((D,M)=>{try{const E=n.timeout??i.timeout,y=ge([c._abortController?.signal,n?.signal],l.signal,E);if(y.aborted){const f=y.reason;M(f instanceof Error?f:new DOMException(String(f??"Aborted"),"AbortError"));return}return y.addEventListener("abort",()=>{const f=y.reason;M(f instanceof Error?f:new DOMException(String(f??"Aborted"),"AbortError"))},{once:!0,signal:l.signal}),Promise.resolve(s(e,{signal:y})).then(D,M)}catch(E){M(E)}}).then(async D=>{let M=D;i.transform&&(M=await i.transform(D)),i.pick&&(M=he(M,i.pick)),e.payload.data[t]=M,c.data.value=M,c.error.value=C.errorValue,c.status.value="success"}).catch(D=>{if(e._asyncDataPromises[t]&&e._asyncDataPromises[t]!==x||c._abortController?.signal.aborted)return e._asyncDataPromises[t];if(typeof DOMException<"u"&&D instanceof DOMException&&D.name==="AbortError")return c.status.value="idle",e._asyncDataPromises[t];c.error.value=te(D),c.data.value=ae(i.default()),c.status.value="error"}).finally(()=>{c.pending.value=!1,l.abort(),delete e._asyncDataPromises[t]});return e._asyncDataPromises[t]=x,e._asyncDataPromises[t]},_execute:de((...u)=>c.execute(...u),0,{leading:!0}),_default:i.default,_deps:0,_init:!0,_hash:void 0,_off:()=>{v(),e._asyncData[t]?._init&&(e._asyncData[t]._init=!1),h||ee(()=>{e._asyncData[t]?._init||(z(e,t),c.execute=()=>Promise.resolve(),c.data.value=C.value)})}};return c}const pe=()=>C.value,U=(e,t,o)=>{if(t.isHydrating)return t.payload.data[e];if(o.cause!=="refresh:manual"&&o.cause!=="refresh:hook")return t.static.data[e]};function ge(e,t,o){const i=e.filter(s=>!!s);if(typeof o=="number"&&o>=0){const s=AbortSignal.timeout?.(o);s&&i.push(s)}if(AbortSignal.any)return AbortSignal.any(i);const r=new AbortController;for(const s of i)if(s.aborted){const a=s.reason??new DOMException("Aborted","AbortError");try{r.abort(a)}catch{r.abort()}return r.signal}const h=()=>{const a=i.find(m=>m.aborted)?.reason??new DOMException("Aborted","AbortError");try{r.abort(a)}catch{r.abort()}};for(const s of i)s.addEventListener?.("abort",h,{once:!0,signal:t});return r.signal}const F="claude",w="sonnet",ve=[{value:"sonnet",label:"Sonnet",description:"Balanced performance and cost"},{value:"opus",label:"Opus",description:"Most capable, higher cost"},{value:"haiku",label:"Haiku",description:"Fast and cost-effective"}];function _e(e){if(!e)return{};const t={},o=typeof e.claudeModel=="string"&&ve.some(r=>r.value===e.claudeModel)?e.claudeModel:void 0;typeof e.providerId=="string"?(t.providerId=e.providerId,typeof e.providerModelKey=="string"&&e.providerModelKey.length>0?t.providerModelKey=e.providerModelKey:o?t.providerModelKey=o:t.providerModelKey=w):o&&(t.providerId="claude",t.providerModelKey=o),typeof e.autoModeConcurrency=="number"&&e.autoModeConcurrency>=1&&(t.autoModeConcurrency=e.autoModeConcurrency),(e.theme==="dark"||e.theme==="light")&&(t.theme=e.theme);const i=e.permissionMode;return i&&["plan","ask","auto","bypass"].includes(String(i))&&(t.permissionMode=i),typeof e.autoGenerateCommitMessages=="boolean"&&(t.autoGenerateCommitMessages=e.autoGenerateCommitMessages),t}const be=oe("settings",{state:()=>({providerId:F,providerModelKey:w,autoModeConcurrency:3,theme:"dark",permissionMode:"ask",autoGenerateCommitMessages:!1,_hydrated:!1}),getters:{providerSelection:e=>({providerId:e.providerId,modelKey:e.providerModelKey})},actions:{async hydrate(){if(!this._hydrated)try{const e=await $fetch("/api/settings"),t=_e(e);t.providerId!==void 0&&(this.providerId=t.providerId),t.providerModelKey!==void 0&&(this.providerModelKey=t.providerModelKey),t.autoModeConcurrency!==void 0&&(this.autoModeConcurrency=t.autoModeConcurrency),t.theme!==void 0&&(this.theme=t.theme),t.permissionMode!==void 0&&(this.permissionMode=t.permissionMode),t.autoGenerateCommitMessages!==void 0&&(this.autoGenerateCommitMessages=t.autoGenerateCommitMessages),this._hydrated=!0}catch(e){console.error("Failed to load settings:",e)}},setTheme(e){this.theme=e,this._saveToServer()},setProviderSelection(e){this.providerId=e.providerId,this.providerModelKey=typeof e.modelKey=="string"&&e.modelKey.length>0?e.modelKey:w,this._saveToServer(!0)},setAutoModeConcurrency(e){this.autoModeConcurrency=Math.max(1,Math.min(10,Math.floor(e))),this._saveToServer()},setPermissionMode(e){this.permissionMode=e,this._saveToServer()},setAutoGenerateCommitMessages(e){this.autoGenerateCommitMessages=e,this._saveToServer()},resetToDefaults(){this.providerId=F,this.providerModelKey=w,this.autoModeConcurrency=3,this.theme="dark",this.permissionMode="ask",this.autoGenerateCommitMessages=!1,this._saveToServer()},_saveToServer(e=!1){const t={providerId:this.providerId,providerModelKey:this.providerModelKey,claudeModel:this.providerId==="claude"?this.providerModelKey:void 0,autoModeConcurrency:this.autoModeConcurrency,theme:this.theme,permissionMode:this.permissionMode,autoGenerateCommitMessages:this.autoGenerateCommitMessages};$fetch("/api/settings",{method:"POST",body:t}).then(o=>{if(!e||!o?.settings)return;const i=o.settings.providerId,r=o.settings.providerModelKey;typeof i=="string"&&(this.providerId=i),typeof r=="string"&&r.length>0&&(this.providerModelKey=r)}).catch(o=>{console.error("Failed to save settings:",o)})}}}),Xe=Object.freeze(Object.defineProperty({__proto__:null,useSettingsStore:be},Symbol.toStringTag,{value:"Module"})),k=H([]);function De(){const e=(s,a="info",m=3e3)=>{const v=`toast-${Date.now()}-${Math.random().toString(36).slice(2)}`,c={id:v,message:s,type:a,duration:m};return k.value.push(c),m>0&&setTimeout(()=>{t(v)},m),v},t=s=>{const a=k.value.findIndex(m=>m.id===s);a!==-1&&k.value.splice(a,1)},o=(s,a)=>e(s,"success",a),i=(s,a)=>e(s,"error",a),r=(s,a)=>e(s,"info",a),h=(s,a)=>e(s,"warning",a);return{toasts:ne(k),add:e,remove:t,success:o,error:i,info:r,warning:h}}const Ye=Object.freeze(Object.defineProperty({__proto__:null,useToast:De},Symbol.toStringTag,{value:"Module"}));function Ze(){return`blk-${Date.now()}-${Math.random().toString(36).substring(2,6)}`}function Je(e){return Array.isArray(e.contentBlocks)&&e.contentBlocks.length>0}const Me={plan:"Plan Mode",ask:"Ask Before",auto:"Auto Edit",bypass:"Bypass"},Qe={plan:"The assistant will create a plan before making changes",ask:"The assistant will ask before each action",auto:"The assistant can read and edit files automatically",bypass:"Skip all permission checks (dangerous)"},et=300,tt=600,at=400;function st(){return`msg-${Date.now()}-${Math.random().toString(36).substring(2,8)}`}const rt=2,ot=100,nt=80;function it(){return`conv-${Date.now()}-${Math.random().toString(36).substring(2,8)}`}function ct(e){const o=e.trim().replace(/\n/g," ");return o.length<=50?o:o.slice(0,50).trim()+"..."}function lt(e){if(!e||typeof e!="object")return!1;const t=e;return typeof t.id=="string"&&typeof t.title=="string"&&Array.isArray(t.messages)&&typeof t.createdAt=="string"&&typeof t.updatedAt=="string"&&typeof t.cwd=="string"}function dt(e){if(!e||typeof e!="object")return!1;const t=e;return typeof t.id=="string"&&typeof t.sourceConversationId=="string"&&typeof t.title=="string"&&Array.isArray(t.messages)&&typeof t.createdAt=="string"&&typeof t.updatedAt=="string"&&typeof t.archivedAt=="string"&&typeof t.cwd=="string"}const Ce={class:"space-y-3"},Se={key:0,class:"rounded border border-retro-border bg-retro-panel px-4 py-3"},xe={key:1,class:"rounded border border-retro-border bg-retro-panel px-4 py-3"},Ee={class:"text-xs font-mono text-retro-yellow"},Ie={key:2,class:"rounded border border-retro-border bg-retro-panel px-4 py-3"},Pe={key:3,class:"space-y-4"},Te={key:0,class:"text-xs font-mono text-retro-muted"},Oe={key:1,class:"text-xs font-mono text-retro-muted"},Ae={class:"flex flex-col gap-2"},ke={class:"flex flex-col gap-2"},we={class:"flex items-start justify-between gap-3"},Ne={class:"text-sm font-mono text-retro-text"},Le={key:0,class:"text-xs font-mono text-retro-yellow"},Be={key:1,class:"text-xs font-mono text-retro-yellow"},Re={class:"text-xs text-retro-muted leading-tight"},Ge={class:"flex flex-wrap gap-2"},Ve={key:0,class:"text-xs font-mono text-retro-yellow"},Ke={class:"space-y-1.5"},$e=["value","checked","disabled","onChange"],Fe={class:"flex-1 space-y-0.5"},He={class:"flex items-center gap-2"},ze={class:"text-sm font-mono text-retro-text"},Ue={key:0,class:"text-[0.55rem] font-mono uppercase tracking-[0.25em] text-retro-cyan border border-retro-cyan rounded-full px-2 py-0.5"},We={class:"text-xs text-retro-muted leading-tight"},ut=ie({__name:"ProviderSelector",props:{providers:{},selected:{},permissionMode:{},pending:{type:Boolean},errorMessage:{}},emits:["select"],setup(e,{emit:t}){const o=e,i=t,r=[{key:"streaming",label:"Streaming"},{key:"permissions",label:"Permissions"},{key:"resume",label:"Session Resume"},{key:"autoCommit",label:"Auto Commit"}],h=P(()=>o.permissionMode==="ask"||o.permissionMode==="plan"),s=P(()=>Me[o.permissionMode]),a=P(()=>!0);function m(d){const p=!h.value||d.capabilities.permissions,n=!a.value||d.capabilities.streaming;return p&&n}function v(d){return h.value&&!d.capabilities.permissions?`${d.name} cannot be used with ${s.value} because it does not expose permission prompts.`:a.value&&!d.capabilities.streaming?`${d.name} is unavailable because streaming runtime prerequisites are not satisfied.`:null}function c(d,p){m(d)&&i("select",{providerId:d.id,modelKey:p})}function u(d,p){return o.selected.providerId===d&&o.selected.modelKey===p}return(d,p)=>(_(),b("div",Ce,[e.pending?(_(),b("div",Se,[...p[0]||(p[0]=[g("p",{class:"text-xs font-mono text-retro-text"},"Loading providers…",-1)])])):e.errorMessage?(_(),b("div",xe,[g("p",Ee,"Unable to load providers: "+S(e.errorMessage),1)])):e.providers.length===0?(_(),b("div",Ie,[...p[1]||(p[1]=[g("p",{class:"text-xs font-mono text-retro-muted"},"No AI providers are configured on the server. Check with your administrator.",-1)])])):(_(),b("div",Pe,[h.value?(_(),b("p",Te," Permission mode "+S(s.value)+" requires a provider that supports permission prompts. Incompatible providers are disabled. ",1)):I("",!0),a.value?(_(),b("p",Oe," Chat currently requires a provider with streaming support. Providers without streaming are shown for preparation but disabled. ")):I("",!0),(_(!0),b(L,null,B(e.providers,n=>(_(),b("article",{key:n.id,class:O(["rounded border border-retro-border bg-retro-panel p-4 space-y-3 transition",{"border-retro-cyan bg-retro-cyan/5":e.selected.providerId===n.id,"hover:border-retro-muted":e.selected.providerId!==n.id}])},[g("div",Ae,[g("div",ke,[g("div",we,[g("span",Ne,S(n.name),1),h.value&&!n.capabilities.permissions?(_(),b("div",Le," Permissions missing ")):a.value&&!n.capabilities.streaming?(_(),b("div",Be," Streaming missing ")):I("",!0)]),g("p",Re,S(n.description),1),g("div",Ge,[(_(),b(L,null,B(r,l=>g("span",{key:l.key,class:O(["inline-flex items-center gap-1.5 rounded-full border px-2.5 py-0.5 text-[0.6rem] font-mono uppercase tracking-[0.18em]",n.capabilities[l.key]?"border-retro-cyan/70 text-retro-cyan bg-retro-cyan/10":"border-retro-border text-retro-muted bg-retro-dark/60"])},[g("span",{class:O(["h-1.5 w-1.5 rounded-full",n.capabilities[l.key]?"bg-retro-cyan":"bg-retro-muted"])},null,2),ce(" "+S(l.label),1)],2)),64))])])]),v(n)?(_(),b("p",Ve,S(v(n)),1)):I("",!0),g("div",Ke,[(_(!0),b(L,null,B(n.models,l=>(_(),b("label",{key:l.key,class:O(["flex items-start gap-3 px-3 py-2 rounded border cursor-pointer transition-colors",[u(n.id,l.key)?"border-retro-cyan bg-retro-cyan/10":"border-retro-border bg-retro-panel hover:border-retro-muted",m(n)?"":"opacity-60 cursor-not-allowed"]])},[g("input",{type:"radio",name:"provider-model",value:`${n.id}:${l.key}`,checked:u(n.id,l.key),disabled:!m(n),class:"mt-1 h-3.5 w-3.5 text-retro-cyan accent-retro-cyan",onChange:x=>c(n,l.key)},null,40,$e),g("div",Fe,[g("div",He,[g("span",ze,S(l.label),1),l.default?(_(),b("span",Ue," Default ")):I("",!0)]),g("p",We,S(l.description),1)])],2))),128))])],2))),128))]))]))}});export{w as D,ot as M,at as P,rt as S,nt as W,ut as _,qe as a,De as b,dt as c,et as d,tt as e,it as f,st as g,F as h,lt as i,ct as j,Ze as k,Je as l,Me as m,Qe as n,Ye as o,Xe as s,be as u};
|
|
1
|
+
import{a as j,aa as C,ab as q,X,ac as Y,K as V,ad as Z,k as P,ae as J,af as Q,g as H,s as N,Z as ee,ag as te,G as ae,ah as se,ai as re,aj as K,I as oe,a0 as ne,d as ie,y as _,z as b,A as g,B as S,O as I,S as L,U as B,H as O,E as ce}from"./CagHV4Oi.js";const le={trailing:!0};function de(e,t=25,o={}){if(o={...le,...o},!Number.isFinite(t))throw new TypeError("Expected `wait` to be a finite number");let i,r,h=[],s,a;const m=(u,d)=>(s=ue(e,u,d),s.finally(()=>{if(s=null,o.trailing&&a&&!r){const p=m(u,a);return a=null,p}}),s),v=function(...u){return o.trailing&&(a=u),s||new Promise(d=>{const p=!r&&o.leading;clearTimeout(r),r=setTimeout(()=>{r=null;const n=o.leading?i:m(this,u);a=null;for(const l of h)l(n);h=[]},t),p?(i=m(this,u),d(i)):h.push(d)})},c=u=>{u&&(clearTimeout(u),r=null)};return v.isPending=()=>!!r,v.cancel=()=>{c(r),h=[],a=null},v.flush=()=>{if(c(r),!a||s)return;const u=a;return a=null,m(this,u)},v}async function ue(e,t,o){return await e.apply(t,o)}const fe=Symbol.for("nuxt:client-only"),me=e=>e==="defer"||e===!1;function qe(...e){const t=typeof e[e.length-1]=="string"?e.pop():void 0;ye(e[0],e[1])&&e.unshift(t);let[o,i,r={}]=e,h=!1;const s=P(()=>re(o));if(typeof s.value!="string")throw new TypeError("[nuxt] [useAsyncData] key must be a string.");if(typeof i!="function")throw new TypeError("[nuxt] [useAsyncData] handler must be a function.");const a=j();r.server??=!0,r.default??=pe,r.getCachedData??=U,r.lazy??=!1,r.immediate??=!0,r.deep??=C.deep,r.dedupe??="cancel",r._functionName,a._asyncData[s.value];function m(){const n={cause:"initial",dedupe:r.dedupe};return a._asyncData[s.value]?._init||(n.cachedData=r.getCachedData(s.value,a,{cause:"initial"}),a._asyncData[s.value]=$(a,s.value,i,r,n.cachedData)),()=>a._asyncData[s.value].execute(n)}const v=m(),c=a._asyncData[s.value];c._deps++;const u=r.server!==!1&&a.payload.serverRendered;{let n=function(y){const f=a._asyncData[y];f?._deps&&(f._deps--,f._deps===0&&f?._off())};const l=J();if(l&&u&&r.immediate&&!l.sp&&(l.sp=[]),l&&!l._nuxtOnBeforeMountCbs){l._nuxtOnBeforeMountCbs=[];const y=l._nuxtOnBeforeMountCbs;q(()=>{y.forEach(f=>{f()}),y.splice(0,y.length)}),X(()=>y.splice(0,y.length))}const x=l&&(l._nuxtClientOnly||Y(fe,!1));u&&a.isHydrating&&(c.error.value||c.data.value!=null)?(c.pending.value=!1,c.status.value=c.error.value?"error":"success"):l&&(!x&&a.payload.serverRendered&&a.isHydrating||r.lazy)&&r.immediate?l._nuxtOnBeforeMountCbs.push(v):r.immediate&&v();const D=Q(),M=V(s,(y,f)=>{if((y||f)&&y!==f){h=!0;const R=a._asyncData[f]?.data.value!==C.value,W=a._asyncDataPromises[f]!==void 0,G={cause:"initial",dedupe:r.dedupe};if(!a._asyncData[y]?._init){let T;f&&R?T=a._asyncData[f].data.value:(T=r.getCachedData(y,a,{cause:"initial"}),G.cachedData=T),a._asyncData[y]=$(a,y,i,r,T)}a._asyncData[y]._deps++,f&&n(f),(r.immediate||R||W)&&a._asyncData[y].execute(G),K(()=>{h=!1})}},{flush:"sync"}),E=r.watch?V(r.watch,()=>{h||(a._asyncData[s.value]?._execute.isPending()&&K(()=>{a._asyncData[s.value]?._execute.flush()}),a._asyncData[s.value]?._execute({cause:"watch",dedupe:r.dedupe}))}):()=>{};D&&Z(()=>{M(),E(),n(s.value)})}const d={data:A(()=>a._asyncData[s.value]?.data),pending:A(()=>a._asyncData[s.value]?.pending),status:A(()=>a._asyncData[s.value]?.status),error:A(()=>a._asyncData[s.value]?.error),refresh:(...n)=>a._asyncData[s.value]?._init?a._asyncData[s.value].execute(...n):m()(),execute:(...n)=>d.refresh(...n),clear:()=>{const n=a._asyncData[s.value];if(n?._abortController)try{n._abortController.abort(new DOMException("AsyncData aborted by user.","AbortError"))}finally{n._abortController=void 0}z(a,s.value)}},p=Promise.resolve(a._asyncDataPromises[s.value]).then(()=>d);return Object.assign(p,d),p}function A(e){return P({get(){return e()?.value},set(t){const o=e();o&&(o.value=t)}})}function ye(e,t){return!(typeof e=="string"||typeof e=="object"&&e!==null||typeof e=="function"&&typeof t=="function")}function z(e,t){t in e.payload.data&&(e.payload.data[t]=void 0),t in e.payload._errors&&(e.payload._errors[t]=C.errorValue),e._asyncData[t]&&(e._asyncData[t].data.value=void 0,e._asyncData[t].error.value=C.errorValue,e._asyncData[t].pending.value=!1,e._asyncData[t].status.value="idle"),t in e._asyncDataPromises&&(e._asyncDataPromises[t]=void 0)}function he(e,t){const o={};for(const i of t)o[i]=e[i];return o}function $(e,t,o,i,r){e.payload._errors[t]??=C.errorValue;const h=i.getCachedData!==U,s=o,a=i.deep?H:N,m=r!=null,v=e.hook("app:data:refresh",async u=>{(!u||u.includes(t))&&await c.execute({cause:"refresh:hook"})}),c={data:a(m?r:i.default()),pending:N(!m),error:se(e.payload._errors,t),status:N("idle"),execute:(...u)=>{const[d,p=void 0]=u,n=d&&p===void 0&&typeof d=="object"?d:{};if(e._asyncDataPromises[t]&&me(n.dedupe??i.dedupe))return e._asyncDataPromises[t];if(n.cause==="initial"||e.isHydrating){const D="cachedData"in n?n.cachedData:i.getCachedData(t,e,{cause:n.cause??"refresh:manual"});if(D!=null)return e.payload.data[t]=c.data.value=D,c.error.value=C.errorValue,c.status.value="success",Promise.resolve(D)}c.pending.value=!0,c._abortController&&c._abortController.abort(new DOMException("AsyncData request cancelled by deduplication","AbortError")),c._abortController=new AbortController,c.status.value="pending";const l=new AbortController,x=new Promise((D,M)=>{try{const E=n.timeout??i.timeout,y=ge([c._abortController?.signal,n?.signal],l.signal,E);if(y.aborted){const f=y.reason;M(f instanceof Error?f:new DOMException(String(f??"Aborted"),"AbortError"));return}return y.addEventListener("abort",()=>{const f=y.reason;M(f instanceof Error?f:new DOMException(String(f??"Aborted"),"AbortError"))},{once:!0,signal:l.signal}),Promise.resolve(s(e,{signal:y})).then(D,M)}catch(E){M(E)}}).then(async D=>{let M=D;i.transform&&(M=await i.transform(D)),i.pick&&(M=he(M,i.pick)),e.payload.data[t]=M,c.data.value=M,c.error.value=C.errorValue,c.status.value="success"}).catch(D=>{if(e._asyncDataPromises[t]&&e._asyncDataPromises[t]!==x||c._abortController?.signal.aborted)return e._asyncDataPromises[t];if(typeof DOMException<"u"&&D instanceof DOMException&&D.name==="AbortError")return c.status.value="idle",e._asyncDataPromises[t];c.error.value=te(D),c.data.value=ae(i.default()),c.status.value="error"}).finally(()=>{c.pending.value=!1,l.abort(),delete e._asyncDataPromises[t]});return e._asyncDataPromises[t]=x,e._asyncDataPromises[t]},_execute:de((...u)=>c.execute(...u),0,{leading:!0}),_default:i.default,_deps:0,_init:!0,_hash:void 0,_off:()=>{v(),e._asyncData[t]?._init&&(e._asyncData[t]._init=!1),h||ee(()=>{e._asyncData[t]?._init||(z(e,t),c.execute=()=>Promise.resolve(),c.data.value=C.value)})}};return c}const pe=()=>C.value,U=(e,t,o)=>{if(t.isHydrating)return t.payload.data[e];if(o.cause!=="refresh:manual"&&o.cause!=="refresh:hook")return t.static.data[e]};function ge(e,t,o){const i=e.filter(s=>!!s);if(typeof o=="number"&&o>=0){const s=AbortSignal.timeout?.(o);s&&i.push(s)}if(AbortSignal.any)return AbortSignal.any(i);const r=new AbortController;for(const s of i)if(s.aborted){const a=s.reason??new DOMException("Aborted","AbortError");try{r.abort(a)}catch{r.abort()}return r.signal}const h=()=>{const a=i.find(m=>m.aborted)?.reason??new DOMException("Aborted","AbortError");try{r.abort(a)}catch{r.abort()}};for(const s of i)s.addEventListener?.("abort",h,{once:!0,signal:t});return r.signal}const F="claude",w="sonnet",ve=[{value:"sonnet",label:"Sonnet",description:"Balanced performance and cost"},{value:"opus",label:"Opus",description:"Most capable, higher cost"},{value:"haiku",label:"Haiku",description:"Fast and cost-effective"}];function _e(e){if(!e)return{};const t={},o=typeof e.claudeModel=="string"&&ve.some(r=>r.value===e.claudeModel)?e.claudeModel:void 0;typeof e.providerId=="string"?(t.providerId=e.providerId,typeof e.providerModelKey=="string"&&e.providerModelKey.length>0?t.providerModelKey=e.providerModelKey:o?t.providerModelKey=o:t.providerModelKey=w):o&&(t.providerId="claude",t.providerModelKey=o),typeof e.autoModeConcurrency=="number"&&e.autoModeConcurrency>=1&&(t.autoModeConcurrency=e.autoModeConcurrency),(e.theme==="dark"||e.theme==="light")&&(t.theme=e.theme);const i=e.permissionMode;return i&&["plan","ask","auto","bypass"].includes(String(i))&&(t.permissionMode=i),typeof e.autoGenerateCommitMessages=="boolean"&&(t.autoGenerateCommitMessages=e.autoGenerateCommitMessages),t}const be=oe("settings",{state:()=>({providerId:F,providerModelKey:w,autoModeConcurrency:3,theme:"dark",permissionMode:"ask",autoGenerateCommitMessages:!1,_hydrated:!1}),getters:{providerSelection:e=>({providerId:e.providerId,modelKey:e.providerModelKey})},actions:{async hydrate(){if(!this._hydrated)try{const e=await $fetch("/api/settings"),t=_e(e);t.providerId!==void 0&&(this.providerId=t.providerId),t.providerModelKey!==void 0&&(this.providerModelKey=t.providerModelKey),t.autoModeConcurrency!==void 0&&(this.autoModeConcurrency=t.autoModeConcurrency),t.theme!==void 0&&(this.theme=t.theme),t.permissionMode!==void 0&&(this.permissionMode=t.permissionMode),t.autoGenerateCommitMessages!==void 0&&(this.autoGenerateCommitMessages=t.autoGenerateCommitMessages),this._hydrated=!0}catch(e){console.error("Failed to load settings:",e)}},setTheme(e){this.theme=e,this._saveToServer()},setProviderSelection(e){this.providerId=e.providerId,this.providerModelKey=typeof e.modelKey=="string"&&e.modelKey.length>0?e.modelKey:w,this._saveToServer(!0)},setAutoModeConcurrency(e){this.autoModeConcurrency=Math.max(1,Math.min(10,Math.floor(e))),this._saveToServer()},setPermissionMode(e){this.permissionMode=e,this._saveToServer()},setAutoGenerateCommitMessages(e){this.autoGenerateCommitMessages=e,this._saveToServer()},resetToDefaults(){this.providerId=F,this.providerModelKey=w,this.autoModeConcurrency=3,this.theme="dark",this.permissionMode="ask",this.autoGenerateCommitMessages=!1,this._saveToServer()},_saveToServer(e=!1){const t={providerId:this.providerId,providerModelKey:this.providerModelKey,claudeModel:this.providerId==="claude"?this.providerModelKey:void 0,autoModeConcurrency:this.autoModeConcurrency,theme:this.theme,permissionMode:this.permissionMode,autoGenerateCommitMessages:this.autoGenerateCommitMessages};$fetch("/api/settings",{method:"POST",body:t}).then(o=>{if(!e||!o?.settings)return;const i=o.settings.providerId,r=o.settings.providerModelKey;typeof i=="string"&&(this.providerId=i),typeof r=="string"&&r.length>0&&(this.providerModelKey=r)}).catch(o=>{console.error("Failed to save settings:",o)})}}}),Xe=Object.freeze(Object.defineProperty({__proto__:null,useSettingsStore:be},Symbol.toStringTag,{value:"Module"})),k=H([]);function De(){const e=(s,a="info",m=3e3)=>{const v=`toast-${Date.now()}-${Math.random().toString(36).slice(2)}`,c={id:v,message:s,type:a,duration:m};return k.value.push(c),m>0&&setTimeout(()=>{t(v)},m),v},t=s=>{const a=k.value.findIndex(m=>m.id===s);a!==-1&&k.value.splice(a,1)},o=(s,a)=>e(s,"success",a),i=(s,a)=>e(s,"error",a),r=(s,a)=>e(s,"info",a),h=(s,a)=>e(s,"warning",a);return{toasts:ne(k),add:e,remove:t,success:o,error:i,info:r,warning:h}}const Ye=Object.freeze(Object.defineProperty({__proto__:null,useToast:De},Symbol.toStringTag,{value:"Module"}));function Ze(){return`blk-${Date.now()}-${Math.random().toString(36).substring(2,6)}`}function Je(e){return Array.isArray(e.contentBlocks)&&e.contentBlocks.length>0}const Me={plan:"Plan Mode",ask:"Ask Before",auto:"Auto Edit",bypass:"Bypass"},Qe={plan:"The assistant will create a plan before making changes",ask:"The assistant will ask before each action",auto:"The assistant can read and edit files automatically",bypass:"Skip all permission checks (dangerous)"},et=300,tt=600,at=400;function st(){return`msg-${Date.now()}-${Math.random().toString(36).substring(2,8)}`}const rt=2,ot=100,nt=80;function it(){return`conv-${Date.now()}-${Math.random().toString(36).substring(2,8)}`}function ct(e){const o=e.trim().replace(/\n/g," ");return o.length<=50?o:o.slice(0,50).trim()+"..."}function lt(e){if(!e||typeof e!="object")return!1;const t=e;return typeof t.id=="string"&&typeof t.title=="string"&&Array.isArray(t.messages)&&typeof t.createdAt=="string"&&typeof t.updatedAt=="string"&&typeof t.cwd=="string"}function dt(e){if(!e||typeof e!="object")return!1;const t=e;return typeof t.id=="string"&&typeof t.sourceConversationId=="string"&&typeof t.title=="string"&&Array.isArray(t.messages)&&typeof t.createdAt=="string"&&typeof t.updatedAt=="string"&&typeof t.archivedAt=="string"&&typeof t.cwd=="string"}const Ce={class:"space-y-3"},Se={key:0,class:"rounded border border-retro-border bg-retro-panel px-4 py-3"},xe={key:1,class:"rounded border border-retro-border bg-retro-panel px-4 py-3"},Ee={class:"text-xs font-mono text-retro-yellow"},Ie={key:2,class:"rounded border border-retro-border bg-retro-panel px-4 py-3"},Pe={key:3,class:"space-y-4"},Te={key:0,class:"text-xs font-mono text-retro-muted"},Oe={key:1,class:"text-xs font-mono text-retro-muted"},Ae={class:"flex flex-col gap-2"},ke={class:"flex flex-col gap-2"},we={class:"flex items-start justify-between gap-3"},Ne={class:"text-sm font-mono text-retro-text"},Le={key:0,class:"text-xs font-mono text-retro-yellow"},Be={key:1,class:"text-xs font-mono text-retro-yellow"},Re={class:"text-xs text-retro-muted leading-tight"},Ge={class:"flex flex-wrap gap-2"},Ve={key:0,class:"text-xs font-mono text-retro-yellow"},Ke={class:"space-y-1.5"},$e=["value","checked","disabled","onChange"],Fe={class:"flex-1 space-y-0.5"},He={class:"flex items-center gap-2"},ze={class:"text-sm font-mono text-retro-text"},Ue={key:0,class:"text-[0.55rem] font-mono uppercase tracking-[0.25em] text-retro-cyan border border-retro-cyan rounded-full px-2 py-0.5"},We={class:"text-xs text-retro-muted leading-tight"},ut=ie({__name:"ProviderSelector",props:{providers:{},selected:{},permissionMode:{},pending:{type:Boolean},errorMessage:{}},emits:["select"],setup(e,{emit:t}){const o=e,i=t,r=[{key:"streaming",label:"Streaming"},{key:"permissions",label:"Permissions"},{key:"resume",label:"Session Resume"},{key:"autoCommit",label:"Auto Commit"}],h=P(()=>o.permissionMode==="ask"||o.permissionMode==="plan"),s=P(()=>Me[o.permissionMode]),a=P(()=>!0);function m(d){const p=!h.value||d.capabilities.permissions,n=!a.value||d.capabilities.streaming;return p&&n}function v(d){return h.value&&!d.capabilities.permissions?`${d.name} cannot be used with ${s.value} because it does not expose permission prompts.`:a.value&&!d.capabilities.streaming?`${d.name} is unavailable because streaming runtime prerequisites are not satisfied.`:null}function c(d,p){m(d)&&i("select",{providerId:d.id,modelKey:p})}function u(d,p){return o.selected.providerId===d&&o.selected.modelKey===p}return(d,p)=>(_(),b("div",Ce,[e.pending?(_(),b("div",Se,[...p[0]||(p[0]=[g("p",{class:"text-xs font-mono text-retro-text"},"Loading providers…",-1)])])):e.errorMessage?(_(),b("div",xe,[g("p",Ee,"Unable to load providers: "+S(e.errorMessage),1)])):e.providers.length===0?(_(),b("div",Ie,[...p[1]||(p[1]=[g("p",{class:"text-xs font-mono text-retro-muted"},"No AI providers are configured on the server. Check with your administrator.",-1)])])):(_(),b("div",Pe,[h.value?(_(),b("p",Te," Permission mode "+S(s.value)+" requires a provider that supports permission prompts. Incompatible providers are disabled. ",1)):I("",!0),a.value?(_(),b("p",Oe," Chat currently requires a provider with streaming support. Providers without streaming are shown for preparation but disabled. ")):I("",!0),(_(!0),b(L,null,B(e.providers,n=>(_(),b("article",{key:n.id,class:O(["rounded border border-retro-border bg-retro-panel p-4 space-y-3 transition",{"border-retro-cyan bg-retro-cyan/5":e.selected.providerId===n.id,"hover:border-retro-muted":e.selected.providerId!==n.id}])},[g("div",Ae,[g("div",ke,[g("div",we,[g("span",Ne,S(n.name),1),h.value&&!n.capabilities.permissions?(_(),b("div",Le," Permissions missing ")):a.value&&!n.capabilities.streaming?(_(),b("div",Be," Streaming missing ")):I("",!0)]),g("p",Re,S(n.description),1),g("div",Ge,[(_(),b(L,null,B(r,l=>g("span",{key:l.key,class:O(["inline-flex items-center gap-1.5 rounded-full border px-2.5 py-0.5 text-[0.6rem] font-mono uppercase tracking-[0.18em]",n.capabilities[l.key]?"border-retro-cyan/70 text-retro-cyan bg-retro-cyan/10":"border-retro-border text-retro-muted bg-retro-dark/60"])},[g("span",{class:O(["h-1.5 w-1.5 rounded-full",n.capabilities[l.key]?"bg-retro-cyan":"bg-retro-muted"])},null,2),ce(" "+S(l.label),1)],2)),64))])])]),v(n)?(_(),b("p",Ve,S(v(n)),1)):I("",!0),g("div",Ke,[(_(!0),b(L,null,B(n.models,l=>(_(),b("label",{key:l.key,class:O(["flex items-start gap-3 px-3 py-2 rounded border cursor-pointer transition-colors",[u(n.id,l.key)?"border-retro-cyan bg-retro-cyan/10":"border-retro-border bg-retro-panel hover:border-retro-muted",m(n)?"":"opacity-60 cursor-not-allowed"]])},[g("input",{type:"radio",name:"provider-model",value:`${n.id}:${l.key}`,checked:u(n.id,l.key),disabled:!m(n),class:"mt-1 h-3.5 w-3.5 text-retro-cyan accent-retro-cyan",onChange:x=>c(n,l.key)},null,40,$e),g("div",Fe,[g("div",He,[g("span",ze,S(l.label),1),l.default?(_(),b("span",Ue," Default ")):I("",!0)]),g("p",We,S(l.description),1)])],2))),128))])],2))),128))]))]))}});export{w as D,ot as M,at as P,rt as S,nt as W,ut as _,qe as a,De as b,dt as c,et as d,tt as e,it as f,st as g,F as h,lt as i,ct as j,Ze as k,Je as l,Me as m,Qe as n,Ye as o,Xe as s,be as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"id":"
|
|
1
|
+
{"id":"17d92f2c-b959-4d9d-b5d8-9871aa90e6a8","timestamp":1771321147016}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"id":"17d92f2c-b959-4d9d-b5d8-9871aa90e6a8","timestamp":1771321147016,"prerendered":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}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;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace,monospace;font-feature-settings:normal;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-feature-settings:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}body,html{--tw-bg-opacity:1;background-color:rgb(var(--color-retro-black)/var(--tw-bg-opacity,1));font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace,monospace;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(var(--color-retro-text)/var(--tw-text-opacity,1));overflow:hidden}.container{width:100%}@media(min-width:640px){.container{max-width:640px}}@media(min-width:768px){.container{max-width:768px}}@media(min-width:1024px){.container{max-width:1024px}}@media(min-width:1280px){.container{max-width:1280px}}@media(min-width:1536px){.container{max-width:1536px}}.panel{border-width:1px;--tw-border-opacity:1;border-color:rgb(var(--color-retro-border)/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(var(--color-retro-panel)/var(--tw-bg-opacity,1));padding:.75rem}.\!input,.input{border-width:1px;--tw-border-opacity:1;border-color:rgb(var(--color-retro-border)/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(var(--color-retro-dark)/var(--tw-bg-opacity,1));font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace,monospace;font-size:.875rem;line-height:1.25rem;padding:.5rem .75rem;--tw-text-opacity:1;color:rgb(var(--color-retro-text)/var(--tw-text-opacity,1))}.\!input:focus,.input:focus{--tw-border-opacity:1;border-color:rgb(var(--color-retro-cyan)/var(--tw-border-opacity,1));outline:2px solid transparent;outline-offset:2px}.\!input::-moz-placeholder{--tw-text-opacity:1;color:rgb(var(--color-retro-subtle)/var(--tw-text-opacity,1))}.\!input::placeholder{--tw-text-opacity:1;color:rgb(var(--color-retro-subtle)/var(--tw-text-opacity,1))}.input::-moz-placeholder{--tw-text-opacity:1;color:rgb(var(--color-retro-subtle)/var(--tw-text-opacity,1))}.input::placeholder{--tw-text-opacity:1;color:rgb(var(--color-retro-subtle)/var(--tw-text-opacity,1))}.scrollbar-custom::-webkit-scrollbar{height:8px;width:8px}.scrollbar-custom::-webkit-scrollbar-track{--tw-bg-opacity:1;background-color:rgb(var(--color-retro-black)/var(--tw-bg-opacity,1))}.scrollbar-custom::-webkit-scrollbar-thumb{border-radius:.25rem;--tw-bg-opacity:1;background-color:rgb(var(--color-retro-border)/var(--tw-bg-opacity,1))}.scrollbar-custom::-webkit-scrollbar-thumb:hover{--tw-bg-opacity:1;background-color:rgb(var(--color-retro-muted)/var(--tw-bg-opacity,1))}.feature-card-light{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background-image:radial-gradient(circle at 15% 0,rgba(var(--color-retro-cyan),.18),transparent 40%),radial-gradient(circle at 85% 5%,rgba(var(--color-retro-magenta),.12),transparent 50%),linear-gradient(145deg,rgb(var(--color-feature-panel)) 0,rgb(var(--color-feature-border)));border-color:rgb(var(--color-feature-border));box-shadow:0 25px 45px #0f172a1f;transition:box-shadow .15s ease,border-color .15s ease}.feature-card-light:hover{border-color:rgb(var(--color-retro-muted));box-shadow:0 30px 55px #0f172a2e}.feature-card-active{background-image:radial-gradient(circle at 110% -15%,rgba(var(--color-retro-cyan),.35),transparent 55%),radial-gradient(circle at 45% 15%,rgba(var(--color-retro-pink),.18),transparent 60%),linear-gradient(150deg,rgba(var(--color-feature-panel),.9) 0,rgba(var(--color-retro-magenta),.2) 70%,rgb(var(--color-feature-border)));border-color:rgb(var(--color-retro-cyan));box-shadow:0 0 0 1px rgb(var(--color-retro-cyan)/.5),0 30px 60px rgba(var(--color-retro-cyan),.25);position:relative;z-index:1}.dark .feature-card-light{-webkit-backdrop-filter:none;backdrop-filter:none;background-image:linear-gradient(135deg,rgb(var(--color-retro-panel)) 0 55%,rgba(var(--color-retro-cyan),.05));border-color:rgb(var(--color-retro-border));box-shadow:none}.dark .feature-card-light:hover{border-color:rgb(var(--color-retro-muted))}.dark .feature-card-active{background-image:linear-gradient(135deg,rgba(var(--color-retro-cyan),.1) 0,rgb(var(--color-retro-panel)) 60%,rgba(var(--color-retro-magenta),.05));box-shadow:none}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.collapse{visibility:collapse}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.bottom-0{bottom:0}.bottom-4{bottom:1rem}.bottom-full{bottom:100%}.left-0{left:0}.left-2\.5{left:.625rem}.left-3{left:.75rem}.right-0{right:0}.right-1{right:.25rem}.right-1\.5{right:.375rem}.right-2{right:.5rem}.right-4{right:1rem}.top-0{top:0}.top-1\.5{top:.375rem}.top-1\/2{top:50%}.top-4{top:1rem}.top-full{top:100%}.z-10{z-index:10}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.mx-0\.5{margin-left:.125rem;margin-right:.125rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-bottom:.25rem;margin-top:.25rem}.my-2{margin-bottom:.5rem;margin-top:.5rem}.my-8{margin-bottom:2rem;margin-top:2rem}.mb-0\.5{margin-bottom:.125rem}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.ml-0\.5{margin-left:.125rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-6{margin-left:1.5rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-8{margin-top:2rem}.\!block{display:block!important}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.hidden{display:none}.h-0\.5{height:.125rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-64{height:16rem}.h-9{height:2.25rem}.h-\[80vh\]{height:80vh}.h-\[94vh\]{height:94vh}.h-full{height:100%}.h-screen{height:100vh}.max-h-32{max-height:8rem}.max-h-40{max-height:10rem}.max-h-48{max-height:12rem}.max-h-52{max-height:13rem}.max-h-60{max-height:15rem}.max-h-\[300px\]{max-height:300px}.max-h-\[400px\]{max-height:400px}.max-h-\[50\%\]{max-height:50%}.max-h-\[70vh\]{max-height:70vh}.min-h-0{min-height:0}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-20{width:5rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-\[90vw\]{width:90vw}.w-\[96vw\]{width:96vw}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0}.min-w-12{min-width:3rem}.min-w-\[140px\]{min-width:140px}.min-w-\[200px\]{min-width:200px}.min-w-\[220px\]{min-width:220px}.min-w-\[320px\]{min-width:320px}.min-w-\[60px\]{min-width:60px}.max-w-2xl{max-width:42rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-\[150px\]{max-width:150px}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-sm{max-width:24rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-shrink{flex-shrink:1}.flex-shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.-translate-y-1\/2{--tw-translate-y:-50%}.-translate-y-1\/2,.-translate-y-px{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-px{--tw-translate-y:-1px}.translate-x-0{--tw-translate-x:0px}.translate-x-0,.translate-x-4{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-4{--tw-translate-x:1rem}.rotate-90{--tw-rotate:90deg}.rotate-90,.scale-100{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-100{--tw-scale-x:1;--tw-scale-y:1}.scale-95{--tw-scale-x:.95;--tw-scale-y:.95}.scale-95,.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes bounce{0%,to{animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}}.animate-bounce{animation:bounce 1s infinite}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}.animate-ping{animation:ping 1s cubic-bezier(0,0,.2,1) infinite}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s ease-in-out infinite}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-context-menu{cursor:context-menu}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.resize-none{resize:none}.resize{resize:both}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-1{row-gap:.25rem}.space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(0px*var(--tw-space-y-reverse));margin-top:calc(0px*(1 - var(--tw-space-y-reverse)))}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.125rem*var(--tw-space-y-reverse));margin-top:calc(.125rem*(1 - var(--tw-space-y-reverse)))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.375rem*var(--tw-space-y-reverse));margin-top:calc(.375rem*(1 - var(--tw-space-y-reverse)))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.75rem*var(--tw-space-y-reverse));margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.5rem*var(--tw-space-y-reverse));margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(2rem*var(--tw-space-y-reverse));margin-top:calc(2rem*(1 - var(--tw-space-y-reverse)))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis}.truncate,.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-sm{border-radius:.125rem}.rounded-r{border-bottom-right-radius:.25rem;border-top-right-radius:.25rem}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-red-400\/40{border-color:#f8727266}.border-retro-border{--tw-border-opacity:1;border-color:rgb(var(--color-retro-border)/var(--tw-border-opacity,1))}.border-retro-border\/20{border-color:rgb(var(--color-retro-border)/.2)}.border-retro-border\/30{border-color:rgb(var(--color-retro-border)/.3)}.border-retro-border\/40{border-color:rgb(var(--color-retro-border)/.4)}.border-retro-border\/50{border-color:rgb(var(--color-retro-border)/.5)}.border-retro-cyan{--tw-border-opacity:1;border-color:rgb(var(--color-retro-cyan)/var(--tw-border-opacity,1))}.border-retro-cyan\/30{border-color:rgb(var(--color-retro-cyan)/.3)}.border-retro-cyan\/40{border-color:rgb(var(--color-retro-cyan)/.4)}.border-retro-cyan\/50{border-color:rgb(var(--color-retro-cyan)/.5)}.border-retro-cyan\/70{border-color:rgb(var(--color-retro-cyan)/.7)}.border-retro-green\/30{border-color:rgb(var(--color-retro-green)/.3)}.border-retro-green\/50{border-color:rgb(var(--color-retro-green)/.5)}.border-retro-magenta\/50{border-color:rgb(var(--color-retro-magenta)/.5)}.border-retro-muted{--tw-border-opacity:1;border-color:rgb(var(--color-retro-muted)/var(--tw-border-opacity,1))}.border-retro-muted\/30{border-color:rgb(var(--color-retro-muted)/.3)}.border-retro-orange\/30{border-color:rgb(var(--color-retro-orange)/.3)}.border-retro-orange\/50{border-color:rgb(var(--color-retro-orange)/.5)}.border-retro-red{--tw-border-opacity:1;border-color:rgb(var(--color-retro-red)/var(--tw-border-opacity,1))}.border-retro-red\/30{border-color:rgb(var(--color-retro-red)/.3)}.border-retro-red\/40{border-color:rgb(var(--color-retro-red)/.4)}.border-retro-red\/50{border-color:rgb(var(--color-retro-red)/.5)}.border-retro-subtle\/50{border-color:rgb(var(--color-retro-subtle)/.5)}.border-retro-yellow{--tw-border-opacity:1;border-color:rgb(var(--color-retro-yellow)/var(--tw-border-opacity,1))}.border-retro-yellow\/25{border-color:rgb(var(--color-retro-yellow)/.25)}.border-retro-yellow\/30{border-color:rgb(var(--color-retro-yellow)/.3)}.border-retro-yellow\/50{border-color:rgb(var(--color-retro-yellow)/.5)}.border-transparent{border-color:transparent}.border-t-retro-cyan{--tw-border-opacity:1;border-top-color:rgb(var(--color-retro-cyan)/var(--tw-border-opacity,1))}.border-t-transparent{border-top-color:transparent}.bg-black\/50{background-color:#00000080}.bg-black\/60{background-color:#0009}.bg-black\/70{background-color:#000000b3}.bg-black\/80{background-color:#000c}.bg-retro-black{--tw-bg-opacity:1;background-color:rgb(var(--color-retro-black)/var(--tw-bg-opacity,1))}.bg-retro-border{--tw-bg-opacity:1;background-color:rgb(var(--color-retro-border)/var(--tw-bg-opacity,1))}.bg-retro-cyan{--tw-bg-opacity:1;background-color:rgb(var(--color-retro-cyan)/var(--tw-bg-opacity,1))}.bg-retro-cyan\/10{background-color:rgb(var(--color-retro-cyan)/.1)}.bg-retro-cyan\/15{background-color:rgb(var(--color-retro-cyan)/.15)}.bg-retro-cyan\/20{background-color:rgb(var(--color-retro-cyan)/.2)}.bg-retro-cyan\/30{background-color:rgb(var(--color-retro-cyan)/.3)}.bg-retro-cyan\/5{background-color:rgb(var(--color-retro-cyan)/.05)}.bg-retro-dark{--tw-bg-opacity:1;background-color:rgb(var(--color-retro-dark)/var(--tw-bg-opacity,1))}.bg-retro-dark\/30{background-color:rgb(var(--color-retro-dark)/.3)}.bg-retro-dark\/50{background-color:rgb(var(--color-retro-dark)/.5)}.bg-retro-dark\/60{background-color:rgb(var(--color-retro-dark)/.6)}.bg-retro-dark\/80{background-color:rgb(var(--color-retro-dark)/.8)}.bg-retro-dark\/90{background-color:rgb(var(--color-retro-dark)/.9)}.bg-retro-green{--tw-bg-opacity:1;background-color:rgb(var(--color-retro-green)/var(--tw-bg-opacity,1))}.bg-retro-green\/10{background-color:rgb(var(--color-retro-green)/.1)}.bg-retro-green\/15{background-color:rgb(var(--color-retro-green)/.15)}.bg-retro-green\/20{background-color:rgb(var(--color-retro-green)/.2)}.bg-retro-green\/30{background-color:rgb(var(--color-retro-green)/.3)}.bg-retro-magenta\/20{background-color:rgb(var(--color-retro-magenta)/.2)}.bg-retro-muted{--tw-bg-opacity:1;background-color:rgb(var(--color-retro-muted)/var(--tw-bg-opacity,1))}.bg-retro-muted\/10{background-color:rgb(var(--color-retro-muted)/.1)}.bg-retro-muted\/50{background-color:rgb(var(--color-retro-muted)/.5)}.bg-retro-orange\/10{background-color:rgb(var(--color-retro-orange)/.1)}.bg-retro-orange\/15{background-color:rgb(var(--color-retro-orange)/.15)}.bg-retro-orange\/20{background-color:rgb(var(--color-retro-orange)/.2)}.bg-retro-panel{--tw-bg-opacity:1;background-color:rgb(var(--color-retro-panel)/var(--tw-bg-opacity,1))}.bg-retro-panel\/50{background-color:rgb(var(--color-retro-panel)/.5)}.bg-retro-pink\/20{background-color:rgb(var(--color-retro-pink)/.2)}.bg-retro-red{--tw-bg-opacity:1;background-color:rgb(var(--color-retro-red)/var(--tw-bg-opacity,1))}.bg-retro-red\/10{background-color:rgb(var(--color-retro-red)/.1)}.bg-retro-red\/20{background-color:rgb(var(--color-retro-red)/.2)}.bg-retro-red\/5{background-color:rgb(var(--color-retro-red)/.05)}.bg-retro-red\/80{background-color:rgb(var(--color-retro-red)/.8)}.bg-retro-red\/90{background-color:rgb(var(--color-retro-red)/.9)}.bg-retro-subtle\/10{background-color:rgb(var(--color-retro-subtle)/.1)}.bg-retro-yellow{--tw-bg-opacity:1;background-color:rgb(var(--color-retro-yellow)/var(--tw-bg-opacity,1))}.bg-retro-yellow\/10{background-color:rgb(var(--color-retro-yellow)/.1)}.bg-retro-yellow\/15{background-color:rgb(var(--color-retro-yellow)/.15)}.bg-retro-yellow\/20{background-color:rgb(var(--color-retro-yellow)/.2)}.bg-retro-yellow\/30{background-color:rgb(var(--color-retro-yellow)/.3)}.bg-transparent{background-color:transparent}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.py-0\.5{padding-bottom:.125rem;padding-top:.125rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-1\.5{padding-bottom:.375rem;padding-top:.375rem}.py-12{padding-bottom:3rem;padding-top:3rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-2\.5{padding-bottom:.625rem;padding-top:.625rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.py-4{padding-bottom:1rem;padding-top:1rem}.py-6{padding-bottom:1.5rem;padding-top:1.5rem}.py-8{padding-bottom:2rem;padding-top:2rem}.pb-2{padding-bottom:.5rem}.pl-10{padding-left:2.5rem}.pl-6{padding-left:1.5rem}.pl-8{padding-left:2rem}.pr-3{padding-right:.75rem}.pr-4{padding-right:1rem}.pr-6{padding-right:1.5rem}.pr-7{padding-right:1.75rem}.pr-8{padding-right:2rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-\[0\.55rem\]{font-size:.55rem}.text-\[0\.6rem\]{font-size:.6rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[9px\]{font-size:9px}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-tight{line-height:1.25}.tracking-\[0\.18em\]{letter-spacing:.18em}.tracking-\[0\.25em\]{letter-spacing:.25em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.text-retro-black{--tw-text-opacity:1;color:rgb(var(--color-retro-black)/var(--tw-text-opacity,1))}.text-retro-border{--tw-text-opacity:1;color:rgb(var(--color-retro-border)/var(--tw-text-opacity,1))}.text-retro-cyan{--tw-text-opacity:1;color:rgb(var(--color-retro-cyan)/var(--tw-text-opacity,1))}.text-retro-cyan\/80{color:rgb(var(--color-retro-cyan)/.8)}.text-retro-dark{--tw-text-opacity:1;color:rgb(var(--color-retro-dark)/var(--tw-text-opacity,1))}.text-retro-green{--tw-text-opacity:1;color:rgb(var(--color-retro-green)/var(--tw-text-opacity,1))}.text-retro-magenta{--tw-text-opacity:1;color:rgb(var(--color-retro-magenta)/var(--tw-text-opacity,1))}.text-retro-muted{--tw-text-opacity:1;color:rgb(var(--color-retro-muted)/var(--tw-text-opacity,1))}.text-retro-muted\/50{color:rgb(var(--color-retro-muted)/.5)}.text-retro-muted\/60{color:rgb(var(--color-retro-muted)/.6)}.text-retro-muted\/70{color:rgb(var(--color-retro-muted)/.7)}.text-retro-muted\/80{color:rgb(var(--color-retro-muted)/.8)}.text-retro-orange{--tw-text-opacity:1;color:rgb(var(--color-retro-orange)/var(--tw-text-opacity,1))}.text-retro-pink{--tw-text-opacity:1;color:rgb(var(--color-retro-pink)/var(--tw-text-opacity,1))}.text-retro-red{--tw-text-opacity:1;color:rgb(var(--color-retro-red)/var(--tw-text-opacity,1))}.text-retro-red\/60{color:rgb(var(--color-retro-red)/.6)}.text-retro-red\/70{color:rgb(var(--color-retro-red)/.7)}.text-retro-red\/80{color:rgb(var(--color-retro-red)/.8)}.text-retro-subtle{--tw-text-opacity:1;color:rgb(var(--color-retro-subtle)/var(--tw-text-opacity,1))}.text-retro-text{--tw-text-opacity:1;color:rgb(var(--color-retro-text)/var(--tw-text-opacity,1))}.text-retro-yellow{--tw-text-opacity:1;color:rgb(var(--color-retro-yellow)/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.underline{text-decoration-line:underline}.placeholder-retro-muted::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(var(--color-retro-muted)/var(--tw-placeholder-opacity,1))}.placeholder-retro-muted::placeholder{--tw-placeholder-opacity:1;color:rgb(var(--color-retro-muted)/var(--tw-placeholder-opacity,1))}.placeholder-retro-muted\/50::-moz-placeholder{color:rgb(var(--color-retro-muted)/.5)}.placeholder-retro-muted\/50::placeholder{color:rgb(var(--color-retro-muted)/.5)}.placeholder-retro-subtle::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(var(--color-retro-subtle)/var(--tw-placeholder-opacity,1))}.placeholder-retro-subtle::placeholder{--tw-placeholder-opacity:1;color:rgb(var(--color-retro-subtle)/var(--tw-placeholder-opacity,1))}.accent-retro-cyan{accent-color:rgb(var(--color-retro-cyan)/1)}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.shadow-2xl{--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.shadow-2xl,.shadow-\[0_0_0_1px_rgba\(248\,113\,113\,0\.35\)\]{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_0_1px_rgba\(248\,113\,113\,0\.35\)\]{--tw-shadow:0 0 0 1px hsla(0,91%,71%,.35);--tw-shadow-colored:0 0 0 1px var(--tw-shadow-color)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-lg,.shadow-retro{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-retro{--tw-shadow:0 0 0 1px rgb(var(--color-retro-cyan)/.4);--tw-shadow-colored:0 0 0 1px var(--tw-shadow-color)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring,.ring-1{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-retro-red\/60{--tw-ring-color:rgb(var(--color-retro-red)/.6)}.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(4px);-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{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-duration:.15s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}:root{--color-retro-black:255 255 255;--color-retro-dark:246 248 250;--color-retro-panel:234 238 242;--color-retro-border:208 215 222;--color-retro-cyan:9 105 218;--color-retro-green:26 127 55;--color-retro-yellow:154 103 0;--color-retro-orange:188 76 0;--color-retro-red:207 34 46;--color-retro-magenta:130 80 223;--color-retro-pink:191 57 137;--color-retro-text:31 35 40;--color-retro-muted:101 109 118;--color-retro-subtle:110 118 129;--color-feature-panel:249 250 251;--color-feature-border:223 227 233}.dark{--color-retro-black:13 17 23;--color-retro-dark:22 27 34;--color-retro-panel:33 38 45;--color-retro-border:48 54 61;--color-retro-cyan:88 166 255;--color-retro-green:63 185 80;--color-retro-yellow:210 153 34;--color-retro-orange:219 109 40;--color-retro-red:248 81 73;--color-retro-magenta:188 140 255;--color-retro-pink:247 120 186;--color-retro-text:230 237 243;--color-retro-muted:139 148 158;--color-retro-subtle:110 118 129}::-webkit-scrollbar{height:8px;width:8px}::-webkit-scrollbar-track{--tw-bg-opacity:1;background-color:rgb(var(--color-retro-black)/var(--tw-bg-opacity,1))}::-webkit-scrollbar-thumb{border-radius:.25rem;--tw-bg-opacity:1;background-color:rgb(var(--color-retro-border)/var(--tw-bg-opacity,1))}::-webkit-scrollbar-thumb:hover{--tw-bg-opacity:1;background-color:rgb(var(--color-retro-muted)/var(--tw-bg-opacity,1))}::-moz-selection{background-color:rgb(var(--color-retro-cyan)/.3);--tw-text-opacity:1;color:rgb(var(--color-retro-text)/var(--tw-text-opacity,1))}::selection{background-color:rgb(var(--color-retro-cyan)/.3);--tw-text-opacity:1;color:rgb(var(--color-retro-text)/var(--tw-text-opacity,1))}:focus-visible{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgb(var(--color-retro-cyan)/var(--tw-ring-opacity,1));--tw-ring-offset-width:1px;--tw-ring-offset-color:rgb(var(--color-retro-black)/1)}a:focus:not(:focus-visible),button:focus:not(:focus-visible),input:focus:not(:focus-visible),textarea:focus:not(:focus-visible){outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.chat-markdown{line-height:1.7}.chat-markdown>:first-child{margin-top:0}.chat-markdown>:last-child{margin-bottom:0}.chat-markdown p{margin-bottom:.75em;margin-top:.75em}.chat-markdown h1,.chat-markdown h2,.chat-markdown h3,.chat-markdown h4,.chat-markdown h5,.chat-markdown h6{font-weight:700;line-height:1.3;margin-bottom:.5em;margin-top:1.25em}.chat-markdown h1{border-bottom:1px solid rgb(var(--color-retro-border));font-size:1.25em;padding-bottom:.3em}.chat-markdown h2{border-bottom:1px solid rgb(var(--color-retro-border)/.5);font-size:1.125em;padding-bottom:.25em}.chat-markdown h3{color:rgb(var(--color-retro-cyan));font-size:1em}.chat-markdown h4,.chat-markdown h5,.chat-markdown h6{color:rgb(var(--color-retro-muted));font-size:.95em}.chat-markdown ol,.chat-markdown ul{margin-bottom:.5em;margin-top:.5em;padding-left:1.75em}.chat-markdown ul{list-style-type:disc}.chat-markdown ol{list-style-type:decimal}.chat-markdown li{margin-bottom:.25em;margin-top:.25em}.chat-markdown li>ol,.chat-markdown li>ul{margin-bottom:.125em;margin-top:.125em}.chat-markdown ul ul{list-style-type:circle}.chat-markdown ul ul ul{list-style-type:square}.chat-markdown pre{background-color:rgb(var(--color-retro-panel));border:1px solid rgb(var(--color-retro-border)/.5);border-radius:.375rem;line-height:1.5;margin-bottom:.75em;margin-top:.75em;overflow-x:auto;padding:.75em 1em}.chat-markdown pre code{background:none;border:none;border-radius:0;padding:0}.chat-markdown code,.chat-markdown pre code{color:rgb(var(--color-retro-cyan));font-size:.9em}.chat-markdown code{background-color:rgb(var(--color-retro-panel));border:1px solid rgb(var(--color-retro-border)/.3);border-radius:.25rem;padding:.15em .4em}.chat-markdown table{border-collapse:collapse;display:block;font-size:.9em;margin-bottom:.75em;margin-top:.75em;overflow-x:auto;width:100%}.chat-markdown thead{border-bottom:2px solid rgb(var(--color-retro-border))}.chat-markdown th{background-color:rgb(var(--color-retro-panel));border:1px solid rgb(var(--color-retro-border)/.5);color:rgb(var(--color-retro-cyan));font-weight:700;padding:.5em .75em;text-align:left;white-space:nowrap}.chat-markdown td{border:1px solid rgb(var(--color-retro-border)/.3);padding:.4em .75em}.chat-markdown tbody tr:nth-child(2n){background-color:rgb(var(--color-retro-dark)/.5)}.chat-markdown tbody tr:hover{background-color:rgb(var(--color-retro-panel)/.5)}.chat-markdown blockquote{border-left:3px solid rgb(var(--color-retro-cyan)/.5);color:rgb(var(--color-retro-muted));margin-bottom:.75em;margin-top:.75em;padding-left:1em}.chat-markdown blockquote p{margin-bottom:.25em;margin-top:.25em}.chat-markdown hr{border:none;border-top:1px solid rgb(var(--color-retro-border));margin-bottom:1.25em;margin-top:1.25em}.chat-markdown a{color:rgb(var(--color-retro-cyan));text-decoration:underline;text-underline-offset:2px}.chat-markdown a:hover,.chat-markdown strong{color:rgb(var(--color-retro-text))}.chat-markdown strong{font-weight:700}.chat-markdown em{font-style:italic}.chat-markdown img{border-radius:.375rem;max-width:100%}.chat-markdown input[type=checkbox]{accent-color:rgb(var(--color-retro-cyan));margin-right:.5em}.chat-markdown dl{margin-bottom:.5em;margin-top:.5em}.chat-markdown dt{font-weight:700;margin-top:.5em}.chat-markdown dd{margin-bottom:.25em;padding-left:1.5em}.sr-only{border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px;clip:rect(0,0,0,0)}.sr-only-focusable:focus{height:auto;margin:0;overflow:visible;padding:.5rem;position:static;white-space:normal;width:auto;clip:auto}.placeholder\:text-retro-subtle::-moz-placeholder{--tw-text-opacity:1;color:rgb(var(--color-retro-subtle)/var(--tw-text-opacity,1))}.placeholder\:text-retro-subtle::placeholder{--tw-text-opacity:1;color:rgb(var(--color-retro-subtle)/var(--tw-text-opacity,1))}.last\:border-b-0:last-child{border-bottom-width:0}.hover\:border-retro-border:hover{--tw-border-opacity:1;border-color:rgb(var(--color-retro-border)/var(--tw-border-opacity,1))}.hover\:border-retro-cyan:hover{--tw-border-opacity:1;border-color:rgb(var(--color-retro-cyan)/var(--tw-border-opacity,1))}.hover\:border-retro-cyan\/50:hover{border-color:rgb(var(--color-retro-cyan)/.5)}.hover\:border-retro-green:hover{--tw-border-opacity:1;border-color:rgb(var(--color-retro-green)/var(--tw-border-opacity,1))}.hover\:border-retro-muted:hover{--tw-border-opacity:1;border-color:rgb(var(--color-retro-muted)/var(--tw-border-opacity,1))}.hover\:border-retro-text:hover{--tw-border-opacity:1;border-color:rgb(var(--color-retro-text)/var(--tw-border-opacity,1))}.hover\:border-retro-text\/30:hover{border-color:rgb(var(--color-retro-text)/.3)}.hover\:bg-red-500\/10:hover{background-color:#ef44441a}.hover\:bg-retro-border:hover{--tw-bg-opacity:1;background-color:rgb(var(--color-retro-border)/var(--tw-bg-opacity,1))}.hover\:bg-retro-cyan\/10:hover{background-color:rgb(var(--color-retro-cyan)/.1)}.hover\:bg-retro-cyan\/20:hover{background-color:rgb(var(--color-retro-cyan)/.2)}.hover\:bg-retro-cyan\/30:hover{background-color:rgb(var(--color-retro-cyan)/.3)}.hover\:bg-retro-cyan\/5:hover{background-color:rgb(var(--color-retro-cyan)/.05)}.hover\:bg-retro-cyan\/80:hover{background-color:rgb(var(--color-retro-cyan)/.8)}.hover\:bg-retro-dark:hover{--tw-bg-opacity:1;background-color:rgb(var(--color-retro-dark)/var(--tw-bg-opacity,1))}.hover\:bg-retro-dark\/30:hover{background-color:rgb(var(--color-retro-dark)/.3)}.hover\:bg-retro-green\/10:hover{background-color:rgb(var(--color-retro-green)/.1)}.hover\:bg-retro-green\/20:hover{background-color:rgb(var(--color-retro-green)/.2)}.hover\:bg-retro-green\/30:hover{background-color:rgb(var(--color-retro-green)/.3)}.hover\:bg-retro-green\/90:hover{background-color:rgb(var(--color-retro-green)/.9)}.hover\:bg-retro-magenta\/10:hover{background-color:rgb(var(--color-retro-magenta)/.1)}.hover\:bg-retro-magenta\/30:hover{background-color:rgb(var(--color-retro-magenta)/.3)}.hover\:bg-retro-muted\/10:hover{background-color:rgb(var(--color-retro-muted)/.1)}.hover\:bg-retro-orange\/10:hover{background-color:rgb(var(--color-retro-orange)/.1)}.hover\:bg-retro-orange\/20:hover{background-color:rgb(var(--color-retro-orange)/.2)}.hover\:bg-retro-orange\/30:hover{background-color:rgb(var(--color-retro-orange)/.3)}.hover\:bg-retro-panel:hover{--tw-bg-opacity:1;background-color:rgb(var(--color-retro-panel)/var(--tw-bg-opacity,1))}.hover\:bg-retro-panel\/50:hover{background-color:rgb(var(--color-retro-panel)/.5)}.hover\:bg-retro-pink\/30:hover{background-color:rgb(var(--color-retro-pink)/.3)}.hover\:bg-retro-red:hover{--tw-bg-opacity:1;background-color:rgb(var(--color-retro-red)/var(--tw-bg-opacity,1))}.hover\:bg-retro-red\/10:hover{background-color:rgb(var(--color-retro-red)/.1)}.hover\:bg-retro-red\/20:hover{background-color:rgb(var(--color-retro-red)/.2)}.hover\:bg-retro-red\/30:hover{background-color:rgb(var(--color-retro-red)/.3)}.hover\:bg-retro-subtle\/10:hover{background-color:rgb(var(--color-retro-subtle)/.1)}.hover\:bg-retro-yellow\/10:hover{background-color:rgb(var(--color-retro-yellow)/.1)}.hover\:bg-retro-yellow\/30:hover{background-color:rgb(var(--color-retro-yellow)/.3)}.hover\:bg-white\/20:hover{background-color:#fff3}.hover\:text-retro-cyan:hover{--tw-text-opacity:1;color:rgb(var(--color-retro-cyan)/var(--tw-text-opacity,1))}.hover\:text-retro-cyan\/80:hover{color:rgb(var(--color-retro-cyan)/.8)}.hover\:text-retro-green:hover{--tw-text-opacity:1;color:rgb(var(--color-retro-green)/var(--tw-text-opacity,1))}.hover\:text-retro-green\/80:hover{color:rgb(var(--color-retro-green)/.8)}.hover\:text-retro-red:hover{--tw-text-opacity:1;color:rgb(var(--color-retro-red)/var(--tw-text-opacity,1))}.hover\:text-retro-text:hover{--tw-text-opacity:1;color:rgb(var(--color-retro-text)/var(--tw-text-opacity,1))}.hover\:text-retro-yellow:hover{--tw-text-opacity:1;color:rgb(var(--color-retro-yellow)/var(--tw-text-opacity,1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:no-underline:hover{text-decoration-line:none}.hover\:ring-1:hover{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.hover\:ring-retro-cyan\/50:hover{--tw-ring-color:rgb(var(--color-retro-cyan)/.5)}.hover\:ring-retro-yellow\/50:hover{--tw-ring-color:rgb(var(--color-retro-yellow)/.5)}.focus\:border-retro-cyan:focus{--tw-border-opacity:1;border-color:rgb(var(--color-retro-cyan)/var(--tw-border-opacity,1))}.focus\:bg-retro-cyan\/10:focus{background-color:rgb(var(--color-retro-cyan)/.1)}.focus\:bg-retro-red\/10:focus{background-color:rgb(var(--color-retro-red)/.1)}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-1:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-1:focus,.focus\:ring-2:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-inset:focus{--tw-ring-inset:inset}.focus\:ring-retro-cyan:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(var(--color-retro-cyan)/var(--tw-ring-opacity,1))}.focus\:ring-retro-cyan\/50:focus{--tw-ring-color:rgb(var(--color-retro-cyan)/.5)}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}.group:hover .group-hover\:bg-retro-panel\/50{background-color:rgb(var(--color-retro-panel)/.5)}.group:hover .group-hover\:text-retro-cyan{--tw-text-opacity:1;color:rgb(var(--color-retro-cyan)/var(--tw-text-opacity,1))}.group:hover .group-hover\:opacity-100{opacity:1}.dark\:bg-gradient-to-br:is(.dark *){background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.dark\:from-retro-cyan\/10:is(.dark *){--tw-gradient-from:rgb(var(--color-retro-cyan)/.1) var(--tw-gradient-from-position);--tw-gradient-to:rgb(var(--color-retro-cyan)/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-retro-panel:is(.dark *){--tw-gradient-from:rgb(var(--color-retro-panel)/1) var(--tw-gradient-from-position);--tw-gradient-to:rgb(var(--color-retro-panel)/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:via-retro-panel:is(.dark *){--tw-gradient-to:rgb(var(--color-retro-panel)/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),rgb(var(--color-retro-panel)/1) var(--tw-gradient-via-position),var(--tw-gradient-to)}.dark\:to-retro-cyan\/5:is(.dark *){--tw-gradient-to:rgb(var(--color-retro-cyan)/.05) var(--tw-gradient-to-position)}.dark\:to-retro-magenta\/5:is(.dark *){--tw-gradient-to:rgb(var(--color-retro-magenta)/.05) var(--tw-gradient-to-position)}.dark\:hover\:from-retro-cyan\/5:hover:is(.dark *){--tw-gradient-from:rgb(var(--color-retro-cyan)/.05) var(--tw-gradient-from-position);--tw-gradient-to:rgb(var(--color-retro-cyan)/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:hover\:via-retro-panel:hover:is(.dark *){--tw-gradient-to:rgb(var(--color-retro-panel)/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),rgb(var(--color-retro-panel)/1) var(--tw-gradient-via-position),var(--tw-gradient-to)}.dark\:hover\:to-retro-magenta\/5:hover:is(.dark *){--tw-gradient-to:rgb(var(--color-retro-magenta)/.05) var(--tw-gradient-to-position)}@media(min-width:640px){.sm\:inline{display:inline}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.spotlight[data-v-5b1d1387]{background:linear-gradient(45deg,#00dc82,#36e4da 50%,#0047e1);bottom:-30vh;filter:blur(20vh);height:40vh}.gradient-border[data-v-5b1d1387]{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:.5rem;position:relative}@media(prefers-color-scheme:light){.gradient-border[data-v-5b1d1387]{background-color:#ffffff4d}.gradient-border[data-v-5b1d1387]:before{background:linear-gradient(90deg,#e2e2e2,#e2e2e2 25%,#00dc82,#36e4da 75%,#0047e1)}}@media(prefers-color-scheme:dark){.gradient-border[data-v-5b1d1387]{background-color:#1414144d}.gradient-border[data-v-5b1d1387]:before{background:linear-gradient(90deg,#303030,#303030 25%,#00dc82,#36e4da 75%,#0047e1)}}.gradient-border[data-v-5b1d1387]:before{background-size:400% auto;border-radius:.5rem;content:"";inset:0;-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;opacity:.5;padding:2px;position:absolute;transition:background-position .3s ease-in-out,opacity .2s ease-in-out;width:100%}.gradient-border[data-v-5b1d1387]:hover:before{background-position:-50% 0;opacity:1}.fixed[data-v-5b1d1387]{position:fixed}.left-0[data-v-5b1d1387]{left:0}.right-0[data-v-5b1d1387]{right:0}.z-10[data-v-5b1d1387]{z-index:10}.z-20[data-v-5b1d1387]{z-index:20}.grid[data-v-5b1d1387]{display:grid}.mb-16[data-v-5b1d1387]{margin-bottom:4rem}.mb-8[data-v-5b1d1387]{margin-bottom:2rem}.max-w-520px[data-v-5b1d1387]{max-width:520px}.min-h-screen[data-v-5b1d1387]{min-height:100vh}.w-full[data-v-5b1d1387]{width:100%}.flex[data-v-5b1d1387]{display:flex}.cursor-pointer[data-v-5b1d1387]{cursor:pointer}.place-content-center[data-v-5b1d1387]{place-content:center}.items-center[data-v-5b1d1387]{align-items:center}.justify-center[data-v-5b1d1387]{justify-content:center}.overflow-hidden[data-v-5b1d1387]{overflow:hidden}.bg-white[data-v-5b1d1387]{--un-bg-opacity:1;background-color:rgb(255 255 255/var(--un-bg-opacity))}.px-4[data-v-5b1d1387]{padding-left:1rem;padding-right:1rem}.px-8[data-v-5b1d1387]{padding-left:2rem;padding-right:2rem}.py-2[data-v-5b1d1387]{padding-bottom:.5rem;padding-top:.5rem}.text-center[data-v-5b1d1387]{text-align:center}.text-8xl[data-v-5b1d1387]{font-size:6rem;line-height:1}.text-xl[data-v-5b1d1387]{font-size:1.25rem;line-height:1.75rem}.text-black[data-v-5b1d1387]{--un-text-opacity:1;color:rgb(0 0 0/var(--un-text-opacity))}.font-light[data-v-5b1d1387]{font-weight:300}.font-medium[data-v-5b1d1387]{font-weight:500}.leading-tight[data-v-5b1d1387]{line-height:1.25}.font-sans[data-v-5b1d1387]{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.antialiased[data-v-5b1d1387]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media(prefers-color-scheme:dark){.dark\:bg-black[data-v-5b1d1387]{--un-bg-opacity:1;background-color:rgb(0 0 0/var(--un-bg-opacity))}.dark\:text-white[data-v-5b1d1387]{--un-text-opacity:1;color:rgb(255 255 255/var(--un-text-opacity))}}@media(min-width:640px){.sm\:px-0[data-v-5b1d1387]{padding-left:0;padding-right:0}.sm\:px-6[data-v-5b1d1387]{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-3[data-v-5b1d1387]{padding-bottom:.75rem;padding-top:.75rem}.sm\:text-4xl[data-v-5b1d1387]{font-size:2.25rem;line-height:2.5rem}.sm\:text-xl[data-v-5b1d1387]{font-size:1.25rem;line-height:1.75rem}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.spotlight[data-v-6dec408c]{background:linear-gradient(45deg,#00dc82,#36e4da 50%,#0047e1);filter:blur(20vh)}.fixed[data-v-6dec408c]{position:fixed}.-bottom-1\/2[data-v-6dec408c]{bottom:-50%}.left-0[data-v-6dec408c]{left:0}.right-0[data-v-6dec408c]{right:0}.grid[data-v-6dec408c]{display:grid}.mb-16[data-v-6dec408c]{margin-bottom:4rem}.mb-8[data-v-6dec408c]{margin-bottom:2rem}.h-1\/2[data-v-6dec408c]{height:50%}.max-w-520px[data-v-6dec408c]{max-width:520px}.min-h-screen[data-v-6dec408c]{min-height:100vh}.place-content-center[data-v-6dec408c]{place-content:center}.overflow-hidden[data-v-6dec408c]{overflow:hidden}.bg-white[data-v-6dec408c]{--un-bg-opacity:1;background-color:rgb(255 255 255/var(--un-bg-opacity))}.px-8[data-v-6dec408c]{padding-left:2rem;padding-right:2rem}.text-center[data-v-6dec408c]{text-align:center}.text-8xl[data-v-6dec408c]{font-size:6rem;line-height:1}.text-xl[data-v-6dec408c]{font-size:1.25rem;line-height:1.75rem}.text-black[data-v-6dec408c]{--un-text-opacity:1;color:rgb(0 0 0/var(--un-text-opacity))}.font-light[data-v-6dec408c]{font-weight:300}.font-medium[data-v-6dec408c]{font-weight:500}.leading-tight[data-v-6dec408c]{line-height:1.25}.font-sans[data-v-6dec408c]{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.antialiased[data-v-6dec408c]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media(prefers-color-scheme:dark){.dark\:bg-black[data-v-6dec408c]{--un-bg-opacity:1;background-color:rgb(0 0 0/var(--un-bg-opacity))}.dark\:text-white[data-v-6dec408c]{--un-text-opacity:1;color:rgb(255 255 255/var(--un-text-opacity))}}@media(min-width:640px){.sm\:px-0[data-v-6dec408c]{padding-left:0;padding-right:0}.sm\:text-4xl[data-v-6dec408c]{font-size:2.25rem;line-height:2.5rem}}
|