claudeship 0.2.9 → 0.2.10

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.
Files changed (51) hide show
  1. package/apps/server/dist/preview/preview.controller.d.ts +1 -0
  2. package/apps/server/dist/preview/preview.controller.js +10 -0
  3. package/apps/server/dist/preview/preview.controller.js.map +1 -1
  4. package/apps/server/dist/preview/preview.service.d.ts +1 -0
  5. package/apps/server/dist/preview/preview.service.js +26 -2
  6. package/apps/server/dist/preview/preview.service.js.map +1 -1
  7. package/apps/server/dist/tsconfig.tsbuildinfo +1 -1
  8. package/apps/server/package.json +1 -1
  9. package/apps/web/.next/BUILD_ID +1 -1
  10. package/apps/web/.next/app-build-manifest.json +5 -5
  11. package/apps/web/.next/app-path-routes-manifest.json +1 -1
  12. package/apps/web/.next/build-manifest.json +2 -2
  13. package/apps/web/.next/cache/.previewinfo +1 -1
  14. package/apps/web/.next/cache/.rscinfo +1 -1
  15. package/apps/web/.next/cache/.tsbuildinfo +1 -1
  16. package/apps/web/.next/cache/config.json +3 -3
  17. package/apps/web/.next/cache/eslint/.cache_j3uhuz +1 -1
  18. package/apps/web/.next/cache/webpack/client-production/0.pack +0 -0
  19. package/apps/web/.next/cache/webpack/client-production/index.pack +0 -0
  20. package/apps/web/.next/cache/webpack/edge-server-production/index.pack +0 -0
  21. package/apps/web/.next/cache/webpack/server-production/0.pack +0 -0
  22. package/apps/web/.next/cache/webpack/server-production/index.pack +0 -0
  23. package/apps/web/.next/prerender-manifest.json +10 -10
  24. package/apps/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  25. package/apps/web/.next/server/app/_not-found.html +1 -1
  26. package/apps/web/.next/server/app/_not-found.rsc +1 -1
  27. package/apps/web/.next/server/app/index.html +1 -1
  28. package/apps/web/.next/server/app/index.rsc +2 -2
  29. package/apps/web/.next/server/app/page_client-reference-manifest.js +1 -1
  30. package/apps/web/.next/server/app/project/[id]/page.js +2 -2
  31. package/apps/web/.next/server/app/project/[id]/page_client-reference-manifest.js +1 -1
  32. package/apps/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  33. package/apps/web/.next/server/app/settings.html +1 -1
  34. package/apps/web/.next/server/app/settings.rsc +1 -1
  35. package/apps/web/.next/server/app-paths-manifest.json +1 -1
  36. package/apps/web/.next/server/pages/404.html +1 -1
  37. package/apps/web/.next/server/pages/500.html +1 -1
  38. package/apps/web/.next/server/server-reference-manifest.json +1 -1
  39. package/apps/web/.next/static/chunks/298-0052659e33e4d728.js +1 -0
  40. package/apps/web/.next/static/chunks/app/page-38144e6d92a7262e.js +1 -0
  41. package/apps/web/.next/static/chunks/app/project/[id]/{page-4c15c33bf78552cb.js → page-fda0243fd985a398.js} +1 -1
  42. package/apps/web/.next/trace +17 -17
  43. package/apps/web/package.json +1 -1
  44. package/apps/web/src/components/preview/PreviewPanel.tsx +16 -1
  45. package/apps/web/src/components/workspace/WorkspaceLayout.tsx +5 -5
  46. package/apps/web/src/stores/usePreviewStore.ts +22 -0
  47. package/package.json +1 -1
  48. package/apps/web/.next/static/chunks/595-00a84eeccb7bfc27.js +0 -1
  49. package/apps/web/.next/static/chunks/app/page-3d093f7f480a8599.js +0 -1
  50. /package/apps/web/.next/static/{yVw9J0lkf1zLx2qq5O3Tu → BkxwYU6TU6sW5wqk0e_iF}/_buildManifest.js +0 -0
  51. /package/apps/web/.next/static/{yVw9J0lkf1zLx2qq5O3Tu → BkxwYU6TU6sW5wqk0e_iF}/_ssgManifest.js +0 -0
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[974],{559:(e,t,r)=>{Promise.resolve().then(r.bind(r,882))},660:(e,t,r)=>{"use strict";r.d(t,{F:()=>o});let a=r(5603).env.NEXT_PUBLIC_API_URL||"http://localhost:14000/api";async function s(e,t){let r="".concat(a).concat(e),s=await fetch(r,{...t,headers:{"Content-Type":"application/json",...null==t?void 0:t.headers}});if(!s.ok)throw Error((await s.json().catch(()=>({message:"Request failed"}))).message||"HTTP error! status: ".concat(s.status));if(204!==s.status)return s.json()}let o={get:e=>s(e),post:(e,t)=>s(e,{method:"POST",body:t?JSON.stringify(t):void 0}),put:(e,t)=>s(e,{method:"PUT",body:t?JSON.stringify(t):void 0}),delete:e=>s(e,{method:"DELETE"}),uploadFiles:async(e,t)=>{let r=new FormData;t.forEach(e=>r.append("files",e));let s="".concat(a,"/projects/").concat(e,"/files/upload"),o=await fetch(s,{method:"POST",body:r});if(!o.ok)throw Error((await o.json().catch(()=>({message:"Upload failed"}))).message||"HTTP error! status: ".concat(o.status));return o.json()}}},882:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>R});var a=r(8481),s=r(8526),o=r(3973),n=r(7176),i=r(4816),l=r.n(i),c=r(6224),d=r(8964);let p=(0,d.A)("Smartphone",[["rect",{width:"14",height:"20",x:"5",y:"2",rx:"2",ry:"2",key:"1yt0o3"}],["path",{d:"M12 18h.01",key:"mhygvu"}]]),u=(0,d.A)("Trash2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]]),m=(0,d.A)("Server",[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]]);var h=r(9049);let g=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("div",{ref:t,className:(0,h.cn)("rounded-xl border bg-card text-card-foreground shadow",r),...s})});g.displayName="Card",s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("div",{ref:t,className:(0,h.cn)("flex flex-col space-y-1.5 p-6",r),...s})}).displayName="CardHeader",s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("h3",{ref:t,className:(0,h.cn)("font-semibold leading-none tracking-tight",r),...s})}).displayName="CardTitle",s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("p",{ref:t,className:(0,h.cn)("text-sm text-muted-foreground",r),...s})}).displayName="CardDescription",s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("div",{ref:t,className:(0,h.cn)("p-6 pt-0",r),...s})}).displayName="CardContent",s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("div",{ref:t,className:(0,h.cn)("flex items-center p-6 pt-0",r),...s})}).displayName="CardFooter";var x=r(5594),f=r(4859),j=r(9426);function y(e){var t;let{project:r,onDelete:s}=e,{locale:o}=(0,j.B)(),n=(r.projectType,(t=r.backendFramework)===f.V_.EXPRESS?"from-green-500/20 to-emerald-500/5":t===f.V_.FASTAPI?"from-teal-500/20 to-cyan-500/5":"from-blue-500/20 to-indigo-500/5");return(0,a.jsx)(l(),{href:"/project/".concat(r.id),children:(0,a.jsxs)(g,{className:"group relative cursor-pointer overflow-hidden border transition-all hover:border-primary/50 hover:shadow-lg",children:[(0,a.jsx)("div",{className:"absolute inset-0 bg-gradient-to-br ".concat(n," opacity-0 transition-opacity group-hover:opacity-100")}),(0,a.jsxs)("div",{className:"relative p-4",children:[(0,a.jsxs)("div",{className:"flex items-start justify-between gap-2",children:[(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)("div",{className:"flex h-10 w-10 items-center justify-center rounded-lg bg-primary/10 text-primary",children:function(e){switch(e){case f.gM.WEB:return(0,a.jsx)(c.A,{className:"h-5 w-5"});case f.gM.NATIVE:return(0,a.jsx)(p,{className:"h-5 w-5"});default:return(0,a.jsx)(c.A,{className:"h-5 w-5"})}}(r.projectType)}),(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsx)("h3",{className:"truncate font-semibold",children:r.name}),(0,a.jsx)("p",{className:"text-xs text-muted-foreground",children:function(e,t){let r=new Date().getTime()-new Date(e).getTime(),a=Math.floor(r/6e4),s=Math.floor(r/36e5),o=Math.floor(r/864e5);return"ko"===t?a<1?"방금 전":a<60?"".concat(a,"분 전"):s<24?"".concat(s,"시간 전"):o<7?"".concat(o,"일 전"):new Date(e).toLocaleDateString("ko-KR"):a<1?"Just now":a<60?"".concat(a,"m ago"):s<24?"".concat(s,"h ago"):o<7?"".concat(o,"d ago"):new Date(e).toLocaleDateString("en-US")}(r.updatedAt,o)})]})]}),s&&(0,a.jsx)(x.$,{variant:"ghost",size:"icon",className:"h-8 w-8 shrink-0 opacity-0 transition-opacity group-hover:opacity-100",onClick:e=>{e.preventDefault(),e.stopPropagation(),s(r.id)},children:(0,a.jsx)(u,{className:"h-4 w-4 text-destructive"})})]}),(0,a.jsxs)("div",{className:"mt-4 flex flex-wrap gap-2",children:[r.backendFramework!==f.V_.NONE&&(0,a.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-full bg-secondary px-2.5 py-0.5 text-xs font-medium",children:[(0,a.jsx)(m,{className:"h-3 w-3"}),r.backendFramework===f.V_.EXPRESS?"Express":"FastAPI"]}),(0,a.jsx)("span",{className:"rounded-full bg-secondary px-2.5 py-0.5 text-xs text-muted-foreground",children:r.projectType===f.gM.WEB?"Web":"Native"})]})]})]})})}let N=(0,d.A)("Plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]),v=(0,d.A)("Sparkles",[["path",{d:"M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z",key:"4pj2yx"}],["path",{d:"M20 3v4",key:"1olli1"}],["path",{d:"M22 5h-4",key:"1gvqau"}],["path",{d:"M4 17v2",key:"vumght"}],["path",{d:"M5 18H3",key:"zchphs"}]]);function b(e){let{onClick:t}=e,{t:r}=(0,j.B)();return(0,a.jsxs)(g,{className:"group relative cursor-pointer overflow-hidden border-2 border-dashed transition-all hover:border-primary hover:shadow-lg",onClick:t,children:[(0,a.jsx)("div",{className:"absolute inset-0 bg-gradient-to-br from-primary/10 to-primary/5 opacity-0 transition-opacity group-hover:opacity-100"}),(0,a.jsxs)("div",{className:"relative flex h-full min-h-[140px] flex-col items-center justify-center gap-3 p-6",children:[(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsx)("div",{className:"flex h-12 w-12 items-center justify-center rounded-xl bg-primary/10 transition-colors group-hover:bg-primary/20",children:(0,a.jsx)(N,{className:"h-6 w-6 text-primary transition-transform group-hover:scale-110"})}),(0,a.jsx)(v,{className:"absolute -right-1 -top-1 h-4 w-4 text-primary opacity-0 transition-opacity group-hover:opacity-100"})]}),(0,a.jsxs)("div",{className:"text-center",children:[(0,a.jsx)("span",{className:"font-medium text-muted-foreground transition-colors group-hover:text-foreground",children:r("project.create")}),(0,a.jsx)("p",{className:"mt-1 text-xs text-muted-foreground/70",children:r("project.createDescription")})]})]})]})}function w(e){let{projects:t,onCreateClick:r,onDelete:s}=e;return(0,a.jsxs)("div",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4",children:[t.map(e=>(0,a.jsx)(y,{project:e,onDelete:s},e.id)),(0,a.jsx)(b,{onClick:r})]})}let k=e=>{let{open:t,onOpenChange:r,children:s}=e;return t?(0,a.jsxs)("div",{className:"fixed inset-0 z-50",children:[(0,a.jsx)("div",{className:"fixed inset-0 bg-black/80",onClick:()=>null==r?void 0:r(!1)}),s]}):null},E=s.forwardRef((e,t)=>{let{className:r,children:s,...o}=e;return(0,a.jsx)("div",{ref:t,className:(0,h.cn)("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg sm:rounded-lg",r),onClick:e=>e.stopPropagation(),...o,children:s})});E.displayName="DialogContent";let S=e=>{let{className:t,...r}=e;return(0,a.jsx)("div",{className:(0,h.cn)("flex flex-col space-y-1.5 text-center sm:text-left",t),...r})};S.displayName="DialogHeader";let P=e=>{let{className:t,...r}=e;return(0,a.jsx)("div",{className:(0,h.cn)("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",t),...r})};P.displayName="DialogFooter";let A=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("h2",{ref:t,className:(0,h.cn)("text-lg font-semibold leading-none tracking-tight",r),...s})});A.displayName="DialogTitle";let C=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("p",{ref:t,className:(0,h.cn)("text-sm text-muted-foreground",r),...s})});C.displayName="DialogDescription";var F=r(5338);function T(e){let{open:t,onOpenChange:r,onSubmit:o,isLoading:n}=e,{t:i}=(0,j.B)(),[l,c]=(0,s.useState)(""),[d,p]=(0,s.useState)(f.gM.WEB),[u,m]=(0,s.useState)(f.V_.NONE);return(0,a.jsx)(k,{open:t,onOpenChange:r,children:(0,a.jsx)(E,{className:"max-w-lg",children:(0,a.jsxs)("form",{onSubmit:e=>{e.preventDefault(),l.trim()&&(o({name:l.trim(),projectType:d,backendFramework:u}),c(""),p(f.gM.WEB),m(f.V_.NONE))},children:[(0,a.jsxs)(S,{children:[(0,a.jsx)(A,{children:i("project.createTitle")}),(0,a.jsx)(C,{children:i("project.name")})]}),(0,a.jsxs)("div",{className:"grid gap-4 py-4",children:[(0,a.jsxs)("div",{className:"grid gap-2",children:[(0,a.jsx)("label",{htmlFor:"name",className:"text-sm font-medium",children:i("project.name")}),(0,a.jsx)(F.p,{id:"name",value:l,onChange:e=>c(e.target.value),placeholder:i("project.namePlaceholder"),autoFocus:!0})]}),(0,a.jsxs)("div",{className:"grid gap-2",children:[(0,a.jsx)("label",{className:"text-sm font-medium",children:i("project.type")}),(0,a.jsxs)("div",{className:"grid grid-cols-2 gap-2",children:[(0,a.jsxs)(x.$,{type:"button",variant:d===f.gM.WEB?"default":"outline",className:"h-16 flex-col gap-1",onClick:()=>p(f.gM.WEB),children:[(0,a.jsx)("span",{className:"text-xl",children:"\uD83C\uDF10"}),(0,a.jsx)("span",{className:"text-xs",children:i("project.typeWeb")})]}),(0,a.jsxs)(x.$,{type:"button",variant:d===f.gM.NATIVE?"default":"outline",className:"h-16 flex-col gap-1",onClick:()=>p(f.gM.NATIVE),children:[(0,a.jsx)("span",{className:"text-xl",children:"\uD83D\uDCF1"}),(0,a.jsx)("span",{className:"text-xs",children:i("project.typeNative")})]})]})]}),d===f.gM.WEB&&(0,a.jsxs)("div",{className:"grid gap-2",children:[(0,a.jsx)("label",{className:"text-sm font-medium",children:i("project.backendStack")}),(0,a.jsxs)("div",{className:"grid grid-cols-3 gap-2",children:[(0,a.jsxs)(x.$,{type:"button",variant:u===f.V_.NONE?"default":"outline",className:"h-20 flex-col gap-1",onClick:()=>m(f.V_.NONE),children:[(0,a.jsx)("span",{className:"text-lg",children:"⚡"}),(0,a.jsx)("span",{className:"text-xs text-center leading-tight",children:i("project.backendNone")})]}),(0,a.jsxs)(x.$,{type:"button",variant:u===f.V_.EXPRESS?"default":"outline",className:"h-20 flex-col gap-1",onClick:()=>m(f.V_.EXPRESS),children:[(0,a.jsx)("span",{className:"text-lg",children:"\uD83D\uDFE2"}),(0,a.jsxs)("span",{className:"text-xs text-center leading-tight",children:["Express",(0,a.jsx)("br",{}),"(Node.js)"]})]}),(0,a.jsxs)(x.$,{type:"button",variant:u===f.V_.FASTAPI?"default":"outline",className:"h-20 flex-col gap-1",onClick:()=>m(f.V_.FASTAPI),children:[(0,a.jsx)("span",{className:"text-lg",children:"\uD83D\uDC0D"}),(0,a.jsxs)("span",{className:"text-xs text-center leading-tight",children:["FastAPI",(0,a.jsx)("br",{}),"(Python)"]})]})]})]})]}),(0,a.jsxs)(P,{children:[(0,a.jsx)(x.$,{type:"button",variant:"outline",onClick:()=>r(!1),children:i("common.cancel")}),(0,a.jsx)(x.$,{type:"submit",disabled:!l.trim()||n,children:i(n?"common.loading":"common.create")})]})]})})})}var D=r(4264);function R(){let e=(0,o.useRouter)(),{t}=(0,j.B)(),[r,i]=(0,s.useState)(!1),{projects:l,isLoading:c,fetchProjects:d,createProject:p,deleteProject:u}=(0,D.I)();(0,s.useEffect)(()=>{d()},[d]);let m=async t=>{try{let r=await p(t);i(!1),e.push("/project/".concat(r.id))}catch(e){console.error("Failed to create project:",e)}},h=async e=>{if(confirm(t("project.deleteConfirm")))try{await u(e)}catch(e){console.error("Failed to delete project:",e)}};return(0,a.jsxs)("div",{className:"min-h-screen bg-background",children:[(0,a.jsx)(n.Y,{}),(0,a.jsxs)("main",{className:"container px-4 py-8",children:[(0,a.jsxs)("div",{className:"mb-8",children:[(0,a.jsx)("h2",{className:"text-2xl font-bold",children:t("home.title")}),(0,a.jsx)("p",{className:"mt-1 text-muted-foreground",children:0===l.length?t("home.createFirst"):"".concat(l.length," ").concat(1===l.length?"project":"projects")})]}),c&&0===l.length?(0,a.jsx)("div",{className:"flex h-40 items-center justify-center text-muted-foreground",children:t("common.loading")}):(0,a.jsx)(w,{projects:l,onCreateClick:()=>i(!0),onDelete:h})]}),(0,a.jsx)(T,{open:r,onOpenChange:i,onSubmit:m,isLoading:c})]})}},3973:(e,t,r)=>{"use strict";var a=r(6145);r.o(a,"useParams")&&r.d(t,{useParams:function(){return a.useParams}}),r.o(a,"useRouter")&&r.d(t,{useRouter:function(){return a.useRouter}})},4264:(e,t,r)=>{"use strict";r.d(t,{I:()=>o});var a=r(4876),s=r(660);let o=(0,a.v)((e,t)=>({projects:[],currentProject:null,isLoading:!1,error:null,fetchProjects:async()=>{e({isLoading:!0,error:null});try{let t=await s.F.get("/projects");e({projects:t,isLoading:!1})}catch(t){e({error:t instanceof Error?t.message:"Failed to fetch projects",isLoading:!1})}},createProject:async t=>{e({isLoading:!0,error:null});try{let r=await s.F.post("/projects",t);return e(e=>({projects:[{id:r.id,name:r.name,projectType:r.projectType,backendFramework:r.backendFramework,updatedAt:r.updatedAt},...e.projects],isLoading:!1})),r}catch(t){throw e({error:t instanceof Error?t.message:"Failed to create project",isLoading:!1}),t}},deleteProject:async t=>{e({isLoading:!0,error:null});try{await s.F.delete("/projects/".concat(t)),e(e=>({projects:e.projects.filter(e=>e.id!==t),isLoading:!1}))}catch(t){throw e({error:t instanceof Error?t.message:"Failed to delete project",isLoading:!1}),t}},fetchProject:async t=>{e({isLoading:!0,error:null});try{let r=await s.F.get("/projects/".concat(t));e({currentProject:r,isLoading:!1})}catch(t){e({error:t instanceof Error?t.message:"Failed to fetch project",isLoading:!1})}},setCurrentProject:t=>e({currentProject:t}),clearError:()=>e({error:null})}))},4859:(e,t,r)=>{"use strict";r.d(t,{V_:()=>s,gM:()=>a,Xh:()=>o});var a=function(e){return e.WEB="WEB",e.NATIVE="NATIVE",e}({}),s=function(e){return e.NONE="NONE",e.EXPRESS="EXPRESS",e.FASTAPI="FASTAPI",e}({}),o=function(e){return e.USER="USER",e.ASSISTANT="ASSISTANT",e.SYSTEM="SYSTEM",e}({})},5338:(e,t,r)=>{"use strict";r.d(t,{p:()=>n});var a=r(8481),s=r(8526),o=r(9049);let n=s.forwardRef((e,t)=>{let{className:r,type:s,...n}=e;return(0,a.jsx)("input",{type:s,className:(0,o.cn)("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",r),ref:t,...n})});n.displayName="Input"},5594:(e,t,r)=>{"use strict";r.d(t,{$:()=>l});var a=r(8481),s=r(8526),o=r(4176),n=r(9049);let i=(0,o.F)("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),l=s.forwardRef((e,t)=>{let{className:r,variant:s,size:o,...l}=e;return(0,a.jsx)("button",{className:(0,n.cn)(i({variant:s,size:o,className:r})),ref:t,...l})});l.displayName="Button"},6224:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});let a=(0,r(8964).A)("Globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]])},7176:(e,t,r)=>{"use strict";r.d(t,{Y:()=>u});var a=r(8481),s=r(4816),o=r.n(s),n=r(9432),i=r(9150),l=r(7746),c=r(5594),d=r(9426);function p(){let{locale:e,setLocale:t,t:r}=(0,d.B)();return(0,a.jsx)(c.$,{variant:"ghost",size:"icon",onClick:()=>{t("en"===e?"ko":"en")},className:"h-9 w-9 text-xs font-medium",title:r("language.select"),children:"en"===e?"EN":"KO"})}function u(e){let{title:t,showBack:r,backHref:s="/"}=e,{t:u}=(0,d.B)(),m=t||u("common.appName");return(0,a.jsx)("header",{className:"sticky top-0 z-40 border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60",children:(0,a.jsxs)("div",{className:"flex h-14 w-full items-center justify-between px-4",children:[(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[r?(0,a.jsx)(o(),{href:s,children:(0,a.jsx)(c.$,{variant:"ghost",size:"icon",className:"h-9 w-9",children:(0,a.jsx)(i.A,{className:"h-5 w-5"})})}):(0,a.jsx)(n.default,{src:"/logo.svg",alt:"ClaudeShip",width:36,height:36,className:"rounded-lg"}),(0,a.jsx)("h1",{className:"text-lg font-semibold",children:m})]}),(0,a.jsxs)("div",{className:"flex items-center gap-1",children:[(0,a.jsx)(p,{}),(0,a.jsx)(o(),{href:"/settings",children:(0,a.jsx)(c.$,{variant:"ghost",size:"icon",className:"h-9 w-9",title:u("header.settings"),children:(0,a.jsx)(l.A,{className:"h-5 w-5"})})})]})]})})}},9049:(e,t,r)=>{"use strict";r.d(t,{cn:()=>o});var a=r(5806),s=r(4159);function o(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return(0,s.QP)((0,a.$)(t))}},9426:(e,t,r)=>{"use strict";r.d(t,{B:()=>i});var a=r(4876),s=r(1203);let o={en:JSON.parse('{"common":{"appName":"ClaudeShip","loading":"Loading...","error":"Error","save":"Save","cancel":"Cancel","delete":"Delete","create":"Create","close":"Close","refresh":"Refresh","settings":"Settings"},"header":{"home":"Home","settings":"Settings"},"home":{"title":"My Projects","noProjects":"No projects yet","createFirst":"Create your first project to get started"},"project":{"create":"New Project","createDescription":"Build with AI","createTitle":"Create New Project","name":"Project Name","namePlaceholder":"my-awesome-app","type":"Project Type","typeWeb":"Web App","typeNative":"Native App","backendStack":"Backend Stack","backendNone":"Frontend Only","backendExpress":"Express (Node.js)","backendFastapi":"FastAPI (Python)","delete":"Delete Project","deleteConfirm":"Are you sure you want to delete this project?","updated":"Updated"},"chat":{"title":"Chat","placeholder":"Describe what you want to build...","askPlaceholder":"Ask a question about your project...","queuePlaceholder":"Queue another message...","send":"Send","thinking":"AI is thinking...","uploading":"Uploading files...","queueCount":"{count} message(s) queued","toolRunning":"Running","toolCompleted":"Completed","newConversation":"New Chat","modeAsk":"Ask","modeBuild":"Build"},"preview":{"title":"Preview","start":"Start Preview","stop":"Stop Preview","starting":"Starting...","notReady":"Project not ready for preview","waitForAI":"Wait for AI to create the project files","openInNewTab":"Open in New Tab"},"fileExplorer":{"title":"Files","empty":"No files yet","loading":"Loading files...","error":"Failed to load files","open":"Open File Explorer","close":"Close File Explorer"},"language":{"select":"Language","en":"English","ko":"한국어"},"settings":{"title":"Settings","projectsPath":{"title":"Projects Folder","description":"Location where your projects are stored","saved":"Settings saved successfully","note":"New projects will be created in this folder. Existing projects are not affected."}}}'),ko:JSON.parse('{"common":{"appName":"ClaudeShip","loading":"로딩 중...","error":"오류","save":"저장","cancel":"취소","delete":"삭제","create":"생성","close":"닫기","refresh":"새로고침","settings":"설정"},"header":{"home":"홈","settings":"설정"},"home":{"title":"내 프로젝트","noProjects":"프로젝트가 없습니다","createFirst":"첫 번째 프로젝트를 만들어 시작하세요"},"project":{"create":"새 프로젝트","createDescription":"AI와 함께 만들기","createTitle":"새 프로젝트 생성","name":"프로젝트 이름","namePlaceholder":"my-awesome-app","type":"프로젝트 유형","typeWeb":"웹 앱","typeNative":"네이티브 앱","backendStack":"백엔드 스택","backendNone":"프론트엔드 전용","backendExpress":"Express (Node.js)","backendFastapi":"FastAPI (Python)","delete":"프로젝트 삭제","deleteConfirm":"이 프로젝트를 삭제하시겠습니까?","updated":"업데이트"},"chat":{"title":"채팅","placeholder":"만들고 싶은 것을 설명하세요...","askPlaceholder":"프로젝트에 대해 질문하세요...","queuePlaceholder":"다음 메시지를 입력하세요...","send":"전송","thinking":"AI가 생각 중...","uploading":"파일 업로드 중...","queueCount":"{count}개의 메시지가 대기 중","toolRunning":"실행 중","toolCompleted":"완료","newConversation":"새 대화","modeAsk":"Ask","modeBuild":"Build"},"preview":{"title":"미리보기","start":"미리보기 시작","stop":"미리보기 중지","starting":"시작 중...","notReady":"프로젝트가 미리보기 준비가 되지 않았습니다","waitForAI":"AI가 프로젝트 파일을 생성할 때까지 기다려주세요","openInNewTab":"새 탭에서 열기"},"fileExplorer":{"title":"파일","empty":"파일이 없습니다","loading":"파일 로딩 중...","error":"파일 로드 실패","open":"파일 탐색기 열기","close":"파일 탐색기 닫기"},"language":{"select":"언어","en":"English","ko":"한국어"},"settings":{"title":"설정","projectsPath":{"title":"프로젝트 폴더","description":"프로젝트가 저장되는 위치","saved":"설정이 저장되었습니다","note":"새 프로젝트는 이 폴더에 생성됩니다. 기존 프로젝트에는 영향을 주지 않습니다."}}}')},n=(0,a.v)()((0,s.Zr)(e=>({locale:"ko",setLocale:t=>e({locale:t})}),{name:"claudeship-locale"}));function i(){let e=n(e=>e.locale);return{t:(t,r)=>(function(e,t,r){let a=t||n.getState().locale,s=e.split("."),i=o[a];for(let t of s)if(i&&"object"==typeof i&&t in i)i=i[t];else{for(let t of(i=o.en,s))if(!i||"object"!=typeof i||!(t in i))return e;else i=i[t];break}let l="string"==typeof i?i:e;if(r)for(let[e,t]of Object.entries(r))l=l.replace(RegExp("\\{".concat(e,"\\}"),"g"),String(t));return l})(t,e,r),locale:e,setLocale:n(e=>e.setLocale)}}}},e=>{e.O(0,[992,59,498,358],()=>e(e.s=559)),_N_E=e.O()}]);