1import{r as t,j as e}from"./vendor-clerk-MwDNJv5P.js";import{c as xr,a as wr,L as ar,I as Or,T as Dr,A as jr,B as Fe,b as qr,d as Fr,u as Gr,e as $r,g as nr,t as X,f as Me,h as Ur,p as zr,i as Jr,S as Hr,j as lr,k as ir,l as or,m as cr}from"./index-BE7kE0xl.js";import{B as W,W as Vr}from"./Wordmark-0tSWuUUW.js";import{S as Wr}from"./DenseProjectRow-CmaZrZst.js";import{V as Kr,S as Yr}from"./VerifiedBadge-CRPb40a8.js";import{C as yr,R as Se,E as Qr}from"./Kinetic-D6QIzA5r.js";import{M as vr}from"./MagneticButton-HYNDKOJe.js";import{A as Xr}from"./arrow-up-right-BJMQSMMj.js";import{f as ur,r as dr,g as fr,b as mr,s as Zr,c as et,M as rt,C as tt,B as st}from"./BriefStep-hrqdTUtD.js";import{L as at}from"./lock-CDPOYzG6.js";import{C as nt}from"./check-D17JMznP.js";import"./vendor-pdf-DfO2iUf6.js";import"./link-2-C2w6ZcHb.js";import"./vendor-motion-Ca9LltCM.js";import"./badge-check-BBj7wTsW.js";import"./vendor-flow-DmhGNnqV.js";import"./plus-CeR89s_5.js";import"./trash-2-BbIAiIpg.js";import"./TopupModal-CS_0hVP5.js";import"./site-BYIucQsR.js";import"./shield-check-C4DMLqjP.js";import"./globe-BEKPonAp.js";const lt=[["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M5.782 5.782A7 7 0 0 0 9 19h8.5a4.5 4.5 0 0 0 1.307-.193",key:"yfwify"}],["path",{d:"M21.532 16.5A4.5 4.5 0 0 0 17.5 10h-1.79A7.008 7.008 0 0 0 10 5.07",key:"jlfiyv"}]],it=xr("cloud-off",lt);const ot=[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],gr=xr("eye",ot),ct="h-10 text-sm sm:h-12 sm:text-base rounded-xl border-border bg-card focus-visible:ring-2 focus-visible:ring-[hsl(var(--ring))]",Oe="text-xs sm:text-[13px] font-semibold text-foreground",ut=({project:s,onDone:c,onBack:j,backLabel:g,busy:f=!1,publicToLibrary:S=!1,onPublicToggle:Z,anonymous:kr=!1,onAnonymousToggle:$e})=>{const{t:y}=wr(),[m,I]=t.useState(()=>({project_name:s.project_name||"",goal:s.goal||""})),$=p=>I(_=>({..._,...p})),oe=!!String(m.project_name||"").trim(),_e=p=>{p.preventDefault(),!(!oe||f)&&c({...m})};return e.jsxs("div",{className:"relative noise-overlay flex min-h-[calc(100vh-9rem)] items-center",children:[e.jsx("div",{className:"pointer-events-none absolute inset-0 hero-radial"}),e.jsxs(yr,{className:"relative grid grid-cols-1 items-center gap-6 py-10 sm:gap-10 sm:py-16 lg:grid-cols-[minmax(0,1fr)_minmax(0,560px)] lg:gap-16",children:[e.jsxs("div",{className:"w-full text-left",children:[e.jsx(Se,{y:10,children:e.jsxs("div",{className:"flex items-center gap-2 text-[11px] font-bold uppercase tracking-[0.18em] text-[hsl(var(--brand))]",children:[e.jsx("span",{className:"h-1.5 w-1.5 rounded-full bg-[hsl(var(--brand))]"}),y("builder.quickSetup.eyebrow")]})}),e.jsx(Se,{delay:.06,children:e.jsx("h1",{className:"mt-3 max-w-[16ch] text-[clamp(1.7rem,3.6vw+1rem,3.9rem)] font-black leading-[1.05] tracking-[-0.03em]",children:(()=>{const p=y("builder.quickSetup.heading"),_=y("builder.quickSetup.headingHighlight"),U=_?p.lastIndexOf(_):-1;return U<0?p:e.jsxs(e.Fragment,{children:[p.slice(0,U).trimEnd(),e.jsx("br",{}),e.jsx("span",{className:"underline decoration-[hsl(var(--brand))] decoration-[5px] underline-offset-[8px] [text-decoration-skip-ink:none]",children:_}),p.slice(U+_.length)]})})()})}),e.jsx(Se,{delay:.12,children:e.jsx("p",{className:"mt-4 hidden max-w-[46ch] text-base leading-relaxed text-muted-foreground sm:block",children:y("builder.quickSetup.body")})})]}),e.jsx(Se,{delay:.1,className:"w-full",children:e.jsxs("form",{"data-testid":W.setupForm,onSubmit:_e,noValidate:!0,className:"rounded-none border-0 bg-transparent p-0 text-left shadow-none sm:rounded-2xl sm:border sm:border-border sm:bg-card/90 sm:p-8 sm:shadow-[0_30px_60px_-45px_rgba(0,0,0,0.4)] sm:backdrop-blur-sm",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(ar,{htmlFor:"qs-name",className:Oe,children:y("builder.quickSetup.projectName")}),e.jsx(Or,{id:"qs-name","data-testid":W.projectName,value:m.project_name,maxLength:20,onChange:p=>$({project_name:p.target.value.slice(0,20)}
1),placeholder:y("builder.quickSetup.projectNamePh"),className:ct})]}),e.jsxs("div",{className:"mt-4 space-y-1.5 sm:mt-5",children:[e.jsx(ar,{htmlFor:"qs-goal",className:Oe,children:y("builder.quickSetup.goal")}),e.jsx(Dr,{id:"qs-goal","data-testid":W.goal,value:m.goal,onChange:p=>$({goal:p.target.value}),rows:3,placeholder:y("builder.quickSetup.goalPh"),className:"text-sm sm:text-base rounded-xl border-border bg-card focus-visible:ring-2 focus-visible:ring-[hsl(var(--ring))]"})]}),Z?e.jsx("div",{className:"mt-4 rounded-xl sm:mt-5 border border-border bg-background/40 p-4",children:e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:Oe,children:y(S?"builder.quickSetup.publicOn":"builder.quickSetup.publicOff")}),e.jsx("p",{className:"mt-1 text-xs leading-relaxed text-muted-foreground",children:y("builder.quickSetup.publicNote")})]}),e.jsx("button",{type:"button",role:"switch","aria-checked":S,"data-testid":"qs-public-toggle",onClick:()=>Z(!S),className:`relative mt-0.5 h-6 w-11 shrink-0 cursor-pointer rounded-full transition-colors ${S?"bg-[hsl(var(--brand))]":"bg-foreground
1/20"}`,children:e.jsx("span",{className:`absolute top-0.5 h-5 w-5 rounded-full bg-white shadow transition-[left] duration-200 ${S?"left-[22px]":"left-0.5"}`})})]})}):null,e.jsxs("div",{className:"mt-6 flex flex-col items-stretch gap-2.5 border-t border-border pt-5 sm:mt-8 sm:gap-3 sm:pt-6 sm:flex-row sm:items-center sm:justify-end sm:gap-3",children:[e.jsxs(vr,{type:"submit",disabled:!oe||f,"data-testid":W.continue,className:"h-9 w-full justify-center rounded-md bg-[hsl(var(--brand))] px-4 text-sm font-medium text-[hsl(var(--brand-foreground))] hover:bg-[hsl(var(--brand-2))] disabled:opacity-40 sm:order-2 sm:w-auto sm:px-5",children:[y("builder.quickSetup.cta")," ",e.jsx(jr,{className:"h-4 w-4"})]}),e.jsxs(Fe,{type:"button",variant:"outline",onClick:j,disabled:f,"data-testid":W.backToCanvas,className:"h-9 w-full justify-center rounded-md border-transparent bg-transparent px-4 text-sm font-medium text-foreground/60 hover:text-foreground sm:order-1 sm:w-auto sm:bg-transparent sm:text-foreground/60 sm:hover:text-foreground",children:[e.jsx(Xr,{className:"h-4 w-4"})," ",g||y("builder.brief.back")]})]})]})})]})]})},dt=()=>new Date().toISOString().slice(0,10),pr=s=>(Array.isArray(s)?s:[]).map(c=>c&&c.type&&c.type!=="labeled"?{...c,type:"labeled"}:c),br=(s,c)=>{const j=new Set((Array.isArray(s)?s:[]).filter(g=>g&&g.data&&g.data.type==="access").map(g=>g.id));return j.size?c.filter(g=>!j.has(g.source)&&!j.has(g.target)):c},ie=()=>({project_name:"",company:"",creator_name:"",role:"",team:"",date:dt(),goal:"",product_type:"",app_format:"",device_priority:"",design_style:"",design_mood:"",design_theme:"",design_density:"",design_shape:"",design_refs:"",design_avoid:"",grill_notes:"",hard_facts:"",global_nav:"",replicate_design:"",da_name:"",da_desc:"",data_models:[],brand_primary:"",brand_accent:"",brand_bg:"",logo_url:"",favicon_url:"",ui_sheet:!1,ui_sheet_url:"",ui_sheet_sig:"",anonymous:!1,setup_done:!1,live_url:"",live_logo_url:"",canvas_style:"v2"}),De={markdown:"",source:"ai",signature:"",lang:""},hr=s=>s.setup_done===!0||["project_name","creator_name","role","goal"].every(c=>String(s[c]||"").trim()),R=1,G=2,ft=800,Ge="worktools-builder-draft",mt=()=>{try{const s=localStorage.getItem(Ge);return s?JSON.parse(s):null}catch{return null}},qe=s=>{try{localStorage.setItem(Ge,JSON.stringify(s))}catch{}},V=()=>{try{localStorage.removeItem(Ge)}catch{}},gt=s=>{const c=s&&s.data||{};return!!(String(c.description||"").trim()||String(c.should||"").trim()||String(c.shouldnt||"").trim())},pt=s=>{if(!s)return!1;if(s.project&&(String(s.project.project_name||"").trim()||String(s.project.goal||"").trim()))return!0;const c=Array.isArray(s.nodes)?s.nodes:[];if(c.length===0)return!1;const j=Array.isArray(s.edges)?s.edges:[];return c.length>1||j.length>0?!0:gt(c[0])},bt=({onSignIn:s,onBack:c,t:j})=>{const g=j("builder.wall.heading"),f=j("builder.wall.headingHighlight"),S=f?g.lastIndexOf(f):-1;return e.jsxs("div",{className:"relative noise-overlay flex min-h-[78vh] items-center sm:min-h-[62vh]",children:[e.jsx("div",{className:"pointer-events-none absolute inset-0 hero-radial"}),e.jsx(yr,{className:"relative py-20 sm:py-24",children:e.jsxs("div",{className:"w-full",children:[e.jsx(Qr,{children:j("builder.wall.eyebrow")}),e.jsx("h1",{className:"mt-5 text-[clamp(1.8rem,2.4vw+0.5rem,3.1rem)] font-black leading-[1.02] tracking-[-0.04em]",children:S<0?g:e.jsxs(e.Fragment,{children:[g.slice(0,S),e.jsx("span",{className:"underline decoration-[hsl(var(--brand))] decoration-[5px] underline-offset-[8px] [text-decoration-skip-ink:none]",children:f}),g.slice(S+f.length)]})}),e.jsx("p",{className:"mt-8 max-w-[52ch] text-base leading-relaxed text-muted-foreground sm:mt-7 sm:text-lg",children:j("builder.wall.body")}),e.jsxs("div",{className:"mt-12 flex flex-col items-stretch gap-3 sm:mt-9 sm:flex-row sm:flex-wrap sm:items-center sm:gap-3.5",children:[e.jsxs(vr,{type:"button",onClick:s,"data-testid":"builder-wall-signin",className:"h-12 w-full justify-center rounded-full bg-[hsl(var(--brand))] px-6 text-sm font-extrabold sm:h-[54px] sm:w-auto sm:px-7 sm:text-[15px] text-[hsl(var(--brand-foreground))] shadow-[0_18px_40px_-22px_rgba(0,0,0,0.6)] hover:bg-[hsl(var(--brand-2))]",children:[j("builder.wall.cta")," ",e.jsx(jr,{className:"h-[18px] w-[18px]"})]}),e.jsx(Fe,{type:"button",variant:"outline",onClick:c,"data-testid":"builder-wall-back",className:"h-12 w-full justify-center rounded-full border-transparent bg-transparent px-5 text-sm font-extrabold text-foreground
1/60 hover:text-foreground sm:h-[54px] sm:w-auto sm:border-border sm:bg-card sm:px-6 sm:text-[15px] sm:text-foreground",children:j("builder.wall.back")})]}),e.jsx("p",{className:"mt-10 text-center text-xs text-foreground/35 sm:mt-6 sm:text-left sm:text-[13.5px] sm:text-foreground/40",children:j("builder.wall.note")})]})})]})};function Gt(){const{t:s,lang:c}=wr(),{email:j,loading:g,authenticated:f,login:S,refresh:Z,highestTier:kr,nextTier:$e,profile:y}=qr(),{id:m}=Fr(),I=Gr(),$=$r(),[oe,_e]=t.useState(()=>!m&&!!($.state&&$.state.newTool)),[p,_]=t.useState(R),[U,ee]=t.useState(R),[l,k]=t.useState(ie),[u,ce]=t.useState([]),[b,ue]=t.useState([]),[i,K]=t.useState(m||null),[Ue,M]=t.useState("draft"),[ze,Sr]=t.useState(!1),[h,re]=t.useState(De),[Y,te]=t.useState(!0),[O,Ne]=t.useState(null),de=t.useRef(!1),[Je,T]=t.useState(""),[_r,se]=t.useState("ai"),[He,D]=t.useState(!1),[Ve,q]=t.useState(!1),[Nr,F]=t.useState(""),[Rr,fe]=t.useState(!1),z=t.useRef(0),me=t.useRef(!1),ae=t.useRef(!1),[Er,We]=t.useState(!1),[ht,Ke]=t.useState(""),Re=t.useRef(0),A=t.useRef(null),ge=t.useRef(null),[pe,Ye]=t.useState(null),[B,Ee]=t.useState(!m),[Ce,Q]=t.useState("idle"),x=!!pe&&!!j&&pe!==j,Ie=f&&$e||null,[xt,Ae]=t.useState(!0);t.useEffect(()=>{if(!Ie){Ae(!0);return}try{Ae(localStorage.getItem(`worktools-levelup-dismissed-${Ie}`)==="1")}catch{Ae(!1)}},[Ie]);const Qe=t.useRef(!1);t.useEffect(()=>{if(Qe.current||!i||x||!h.markdown||l.built_with)return;Qe.current=!0;const a=i;(async()=>{let r=null;try{r=await ur(l,u,b)}catch{}if(E.current!==a)return;const n=dr(l,u,b,r)[0]?.platform;n?.id&&k(o=>o.built_with?o:{...o,built_with:n.id})})()},[i,x,h.markdown,l.built_with]);const E=t.useRef(m||null);t.useEffect(()=>{E.current=i},[i]);const J=t.useRef(null),P=t.useRef(null),be=t.useRef(!1),L=t.useRef(null),Xe=t.useRef(0),he=t.useRef(!1),[Ze,er]=t.useState(!1),[Be,Pe]=t.useState(0),[rr,Cr]=t.useState(!1),ne=t.useRef(!1),xe=a=>{_(a),ee(r=>Math.max(r,a))},we=t.useCallback(()=>({name:(l.project_name||"").trim(),status:Ue,meta:l,nodes:u,edges:b,briefMarkdown:h.markdown||null,briefSource:h.source||null,briefLang:h.lang||null,briefSignature:h.signature||null}),[l,Ue,u,b,h]);t.useEffect(()=>{if(!m)return;let a=!1;return(async()=>{const r=await nr(m);if(a)return;if(!r.ok||!r.project){X.error(s("workspace.loadError")),I("/app",{replace:!0});return}const n=r.project;k({...ie(),canvas_style:"",...n.meta||{}});const o=Array.isArray(n.nodes)?n.nodes:[];ce(o),ue(br(o,pr(n.edges))),M(n.status||"draft");const d=(n.briefSource||"")==="local";re({markdown:n.briefMarkdown||"",source:n.briefSource||"ai",signature:d?"":n.briefSignature||"",lang:n.briefLang||""}),K(n.id),Ye(n.creatorEmail||null),Ne(n.publishedAt||null),te($.state?.publishIntent?!0:!!n.publishedAt);const C=$.state?.resumeStep,w=C===1||C===2?C:n.briefMarkdown?2:1;_(w),ee(Math.max(w,n.briefMarkdown?2:1)),Ee(!0)})(),()=>{a=!0}},[]);const tr=t.useRef(m||null);t.useEffect(()=>{const a=tr.current;tr.current=m||null,!(!a||m)&&(P.current&&clearTimeout(P.current),ne.current=!1,P.current=null,L.current=null,J.current=null,A.current&&A.current.abort(),A.current=null,z.current+=1,ge.current=null,me.current=!1,ae.current=!1,de.current=!1,E.current=null,K(null),k(ie()),ce([]),ue([]),M("draft"),re(De),T(""),se("ai"),D(!1),q(!1),F(""),fe(!1),Ye(null),Ne(null),te(!0),_(R),ee(R),Q("idle"),Ee(!0),V())},[m]);const je=t.useRef(!1),[le,ye]=t.useState(!1),[Ir]=t.useState(()=>m?null:mt()),H=t.useRef(!1),[Ar,sr]=t.useState(!1);t.useEffect(()=>{if(m||g||je.current)return;if(je.current=!0,oe){V();return}const a=Ir;if(!pt(a)){a&&V();return}const r={...ie(),canvas_style:"",...a.project||{}},n=Array.isArray(a.nodes)?a.nodes:[],o=br(n,pr(a.edges)),d=typeof a.step=="number"?Math.min(Math.max(a.step,R),G):R,C=Math.max(typeof a.maxStep=="number"?a.maxStep:d,d);if(k(r),ce(n),ue(o),!f){_(d),ee(C);return}const w=a.resume?G:d;_(w),ee(Math.max(C,w)),ye(!0);let v=!1;return(async()=>{const N=await Me({name:(r.project_name||"").trim(),status:"draft",meta:r,nodes:n,edges:o});if(v){ye(!1);return}N.ok&&N.project?(V(),E.current=N.project.id,K(N.project.id),M(N.project.status||"draft"),Ee(!0),ye(!1),I(`/builder/${N.project.id}`,{replace:!0,state:{resumeStep:w}})):(X.error(s("builder.saveError")),ye(!1))})(),()=>{v=!0}},[m,g,f]),t.useEffect(()=>{m||i||g||!B||!je.current||!(u.length>0||String(l.project_name||"").trim()||String(l.goal||"").trim())||qe({project:l,nodes:u,edges:b,step:p,maxStep:U,ts:Date.now()})},[m,i,g,B,l,u,b,p,U]),t.useEffect(()=>{if(m||i||g||!f||!B||!je.current||le||H.current||u.length===0||ze)return;const a=setTimeout(async()=>
1{if(H.current||E.current)return;H.current=!0;const r=await Me({name:(l.project_name||"").trim(),status:"draft",meta:l,nodes:u,edges:b});H.current=!1,!(!r.ok||!r.project)&&(V(),J.current=JSON.stringify({name:(l.project_name||"").trim(),status:r.project.status||"draft",meta:l,nodes:u,edges:b,briefMarkdown:null,briefSource:null,briefLang:null,briefSignature:null}),E.current=r.project.id,K(r.project.id),M(r.project.status||"draft"),I(`/builder/${r.project.id}`,{replace:!0,state:{resumeStep:p}}))},1500);return()=>clearTimeout(a)},[m,i,g,f,B,le,u,b,l,p,ze]),t.useEffect(()=>{if(!i||!B||x)return;const a=JSON.stringify(we());if(J.current===null){J.current=a;return}if(a!==J.current)return Q("saving"),P.current&&clearTimeout(P.current),P.current=setTimeout(()=>{ve(a)},ft),()=>{P.current&&clearTimeout(P.current)}},[i,B,x,we]);const ve=t.useCallback(async a=>{if(!i||x||E.current!==i)return;if(be.current){L.current=a;return}be.current=!0,Q("saving");const r=JSON.parse(a),n=ne.current;n&&(r.clearScreenPreviews=!0);const o=await Ur(i,r);if(be.current=!1,E.current!==i){L.current=null;return}if(o.ok)if(J.current=a,n&&(ne.current=!1),o.daDeferred)if(he.current)Pe(d=>d+1);else{he.current=!0,er(!0),Pe(0);const d=Date.now();d-Xe.current>=4e3&&(Xe.current=d,X.info(s("builder.daLockedGenerating")))}else he.current&&(he.current=!1,er(!1),Pe(0));else Q("error");
1if(L.current&&L.current!==a){const d=L.current;L.current=null,await ve(d)}else L.current=null,o.ok&&Q("saved")},[i,x]);t.useEffect(()=>{if(!i||!B||x||rr||!Ze)return;const a=Be===0?400:Math.min(3e4,800*2**Math.min(Be,6)),r=setTimeout(()=>{ve(JSON.stringify(we()))},a);return()=>clearTimeout(r)},[i,B,x,rr,Ze,Be,we,ve]);const Br=t.useCallback(async(a,r=G)=>{if(le||H.current)return;const n={...l,...a,setup_done:!0};if(k(n),i||!f){_e(!1);return}H.current=!0,sr(!0);const o=await Me({name:(n.project_name||"").trim(),status:"draft",meta:n,nodes:u,edges:b});H.current=!1,sr(!1),o.ok&&o.project?(K(o.project.id),M(o.project.status||"draft"),V(),I(`/builder/${o.project.id}`,{replace:!0,state:{resumeStep:r,publishIntent:Y}})):X.error(s("builder.saveError"))},[le,i,f,l,u,b,I,s,Y]);t.useEffect(()=>{if(!i||x||!O||l.scene_image_url)return;let a=!1,r=0;const n=setInterval(async()=>{if(a||r++>40){clearInterval(n);return}const o=await nr(i);if(a||!o.ok||!o.project)return;const d=o.project.meta||{};d.scene_image_url&&(clearInterval(n),k(C=>({...C,scene_image_url:d.scene_image_url})))},8e3);return()=>{a=!0,clearInterval(n)}},[i,x,O,l.scene_image_url]),t.useEffect(()=>{if(!i||x||de.current)return;const a=Y,r=!!O;a!==r&&(a&&!(h.markdown||"").trim()||a&&Ce==="saving"||(de.current=!0,(async()=>{const n=a?await zr(i):await Jr(i);de.current=!1,n.ok?Ne(a?n.project&&n.project.publishedAt||new Date().toISOString():null):(te(r),X.error(s("builder.saveError")))})()))},[Y,O,i,x,h.markdown,Ce,s,g,f,B]);const Pr=t.useCallback((a,r,n)=>{re({markdown:a,source:r,signature:n,lang:"en"}),T(a),se(r),M("ready")}
1,[]),Tr=t.useCallback(async a=>{if(!l.ui_sheet||!i||!a)return;const r=++Re.current;Ke(""),We(!0);let n=await fr(i,a),o=0;for(;!n.ok&&!n.aborted&&(n.status===409||n.status===void 0)&&o<24;){if(await new Promise(d=>setTimeout(d,8e3)),Re.current!==r)return;n=await fr(i,a),o+=1}Re.current===r&&(We(!1),n.ok?k(d=>({...d,ui_sheet_url:n.url,...n.sig?{ui_sheet_sig:n.sig}:{}})):n.aborted||Ke(n.error||s("builder.brief.uiSheetError")))},[l.ui_sheet,i,s]),ke=t.useCallback(async(a=!1)=>{const r=mr(l,u,b);if(!a&&A.current&&ge.current===r)return;const n=!!h.markdown&&(h.signature===r||typeof h.signature=="string"&&h.signature.startsWith("mcp-")||Hr.some(v=>h.signature===mr(l,u,b,v)));if(!a&&n){T(h.markdown),se(h.source||"ai"),D(!1),q(!1),F(""),fe(!1);return}const o=++z.current;A.current&&A.current.abort();const d=new AbortController;A.current=d,ge.current=r,D(!0),q(!1),F(""),fe(!1),T("");let C=!0;const w=await Zr(l,u,b,{signal:d.signal,lang:c,projectId:E.current,sig:r,onChunk:v=>{z.current===o&&(C&&(C=!1,D(!1),q(!0)),T(v))}});if(!(z.current!==o||w.source==="aborted")){if(A.current=null,q(!1),D(!1),T(w.markdown),se(w.source),w.source==="blocked"){if(w.reason==="auth"){if(f&&!me.current){me.current=!0;let v=null;try{v=await Z()}catch{}if(z.current!==o)return;if(v&&v.authenticated){ke(!0);return}}fe(!0),F(s("builder.wall.heading"))}else F(s("builder.canvas.minBlocks"));return}if(w.source==="failed"){const v=w.reason==="byok_key_failed"||w.reason==="byok_unavailable";if(!ae.current&&w.reason!=="busy"&&!v){if(ae.current=!0,await new Promise(N=>setTimeout(N,1500)),z.current!==o)return;ke(!0);return}F(w.reason==="byok_key_failed"?s("apiKeys.keyFailed"):w.reason==="byok_unavailable"?s("apiKeys.unavailable"):w.reason==="busy"?s("builder.brief.busyErr"):s("builder.brief.unavailErr"));return}w.markdown&&(me.current=!1,ae.current=!1,re({markdown:w.markdown,source:w.source,signature:r,lang:"en"}),M("ready"),(async()=>{let v=null;try{v=await ur(l,u,b)}catch{}if(z.current!==o)return;const N=dr(l,u,b,v)[0]?.platform;N?.id&&k(Le=>Le.built_with===N.id?Le:{...Le,built_with:N.id})})())}},[l,u,b,c,s,h,Tr,Er,f,Z]);t.useEffect(()=>{if(!(p!==G||!f)){if(x){T(h.markdown||""),se(h.source||"ai"),D(!1),q(!1);return}if(hr(l)){if(et(u)<rt){T(""),F(s("builder.canvas.minBlocks")),D(!1),q(!1);return}ke(!1)}}},[p,f,x,l,u,b]),t.useEffect(()=>()=>{A.current&&A.current.abort()},[]);const Te=He||Ve||!!Je||!!h.markdown,Lr=t.useCallback((a={})=>{if(k(r=>r&&(r.screen_previews&&Object.keys(r.screen_previews).length||r.screen_captures&&Object.keys(r.screen_captures).length)?{...r,screen_previews:{},screen_captures:{}}:r),ne.current=!0,re(r=>r.markdown?De:r),T(""),F(""),D(!1),q(!1),ge.current=null,ae.current=!1,M(r=>r==="ready"?"draft":r),a.full){const r=E.current;r&&!O&&(P.current&&clearTimeout(P.current),L.current=null,ne.current=!1,J.current=null,E.current=null,K(null),Q("idle"),(async()=>{for(let o=0;o<20&&be.current;o++)await new Promise(d=>setTimeout(d,250));let n=await lr(r);n.ok||(n=await lr(r)),n.ok||X.error(s("workspace.deleteFailed"))})(),m&&I("/",{replace:!0})),k(ie()),V()}},[O,m,I,s]),Mr=()=>{if(!i)return null;const r={saving:{icon:e.jsx(or,{className:"h-3.5 w-3.5 animate-spin"}),label:s("builder.saving"),cls:"text-muted-foreground"},saved:{icon:e.jsx(nt,{className:"h-3.5 w-3.5"}),label:s("builder.saved"),cls:"text-[hsl(var(--brand))]"},error:{icon:e.jsx(it,{className:"h-3.5 w-3.5"}),label:s("builder.saveError"),cls:"text-red-600"}}[Ce];return r?e.jsxs("span",{"data-testid":W.saveStatus,className:cr("hidden items-center gap-1.5 text-xs font-medium sm:inline-flex",r.cls),children:[r.icon," ",r.label]}):null};return e.jsxs("div",{"data-testid":W.page,className:"flex h-screen flex-col bg-background text-foreground antialiased",children:[e.jsx("header",{className:"sticky top-0 z-30 shrink-0 border-b border-transparent bg-transparent lg:border-border lg:bg-background/85 lg:backdrop-blur-md lg:dark:border-white/10 lg:dark:bg-black/95",children:e.jsxs("div",{className:"flex h-14 items-center justify-between gap-4 px-3 sm:h-16 sm:px-8",children:[e.jsx("div",{className:"flex items-center gap-3",children:e.jsx(Vr,{})}),e.jsxs("div",{className:"flex items-center gap-2 sm:gap-3",children:[O&&i?e.jsx(Wr,{url:`https://beforevibe.com/library/${i}`,title:(l.project_name||"").trim(),testId:"builder-share",triggerClassName:"flex h-8 w-8 items-center justify-center rounded-full border border-border/70 bg-background/70 text-foreground
1/60 backdrop-blur transition-colors hover:text-foreground lg:border-0 lg:bg-transparent lg:backdrop-blur-0",iconClassName:"h-4 w-4"}):null,x?e.jsxs("span",{"data-testid":"builder-readonly-badge",className:"hidden items-center gap-1.5 rounded-full border border-border bg-foreground/[0.03] px-2.5 py-1 text-xs font-semibold text-foreground/55 sm:inline-flex",children:[e.jsx(gr,{className:"h-3.5 w-3.5"})," ",s("builder.readOnly")]}):e.jsx(Mr,{}),f&&y?.verified?e.jsx(ir,{to:"/profile","data-testid":"builder-verified-badge",className:"hidden sm:inline-flex","aria-label":s("profile.verifiedTag"),children:e.jsx(Kr,{size:"md",label:s("profile.verifiedTag")})}):null,e.jsxs("a",{href:"https://chromewebstore.google.com/detail/kflcdhjcfngkohhibodlldbdmikggmdi",target:"_blank",rel:"noopener noreferrer","data-testid":"builder-nav-chrome-badge",className:"mr-4 hidden shrink-0 items-center gap-2 transition-opacity hover:opacity-75 lg:flex",children:[e.jsx("img",{src:"/builder-logos/wordmarks/chrome-black.png",alt:"Google Chrome",loading:"lazy",className:"h-[13px] w-auto max-w-none opacity-70 dark:hidden"}),e.jsx("img",{src:"/builder-logos/wordmarks/chrome-white.png",alt:"Google Chrome",loading:"lazy",className:"hidden h-[13px] w-auto max-w-none opacity-70 dark:block"}),e.jsx("span",{className:"text-[10px] font-bold uppercase tracking-[0.2em] text-foreground/35",children:s("builder.canvas.heroChrome")})]}),f?null:e.jsx(Fe,{asChild:!0,variant:"outline",className:"hidden h-9 rounded-full border-foreground
1/25 px-5 text-sm font-semibold text-foreground hover:bg-foreground/[0.06] hover:text-foreground sm:inline-flex",children:e.jsx(ir,{to:"/login",state:{from:window.location.pathname+window.location.search+window.location.hash},"data-testid":"builder-nav-signin",style:{fontFamily:"Montserrat, sans-serif"},children:s("nav.signin")})}),e.jsx(Yr,{triggerTestId:"builder-nav-burger",triggerClassName:"h-8 w-8 rounded-full lg:h-10 lg:w-10"})]})]})}),e.jsx("div",{className:cr("min-h-0 flex-1",p===1?"overflow-hidden":"overflow-y-auto"),children:B?e.jsxs(e.Fragment,{children:[x&&e.jsxs("div",{"data-testid":"builder-readonly-banner",className:"flex items-center gap-2.5 border-b border-border bg-[hsl(var(--brand))]/[0.06] px-4 py-2.5 text-sm text-foreground sm:px-8",children:[e.jsx(gr,{className:"h-4 w-4 shrink-0 text-[hsl(var(--brand))]"}),e.jsxs("span",{children:[e.jsx("span",{className:"font-semibold",children:s("builder.readOnly")}),pe?` · ${s("workspace.createdBy")} ${pe}`:""," â ",s("builder.readOnlyHint")]})]}),!x&&Te&&p===R&&e.jsxs("div",{"data-testid":"builder-locked-prd-banner",className:"flex items-center gap-2.5 border-b border-border bg-[hsl(var(--brand))]/[0.06] px-4 py-2.5 text-sm text-foreground sm:px-8",children:[e.jsx(at,{className:"h-4 w-4 shrink-0 text-[hsl(var(--brand))]"}),e.jsxs("span",{children:[e.jsx("span",{className:"font-semibold",children:s("builder.lockedPrd")})," â ",s("builder.lockedPrdHint")]})]}),null,p===R&&e.jsx(tt,{project:l,setProject:k,nodes:u,edges:b,setNodes:ce,setEdges:ue,onPrepare:()=>xe(G),onFlowReset:Lr,onAiBusyChange:Sr,onScreenBusyChange:Cr,readOnly:x||Te,lockReason:x?"ownership":Te?"prd":null,captureOwner:!x,published:!!O,projectId:i,onRequireSignIn:()=>{qe({project:l,nodes:u,edges:b,step:R,maxStep:Math.max(U,R),ts:Date.now()}),S("/")}}),p===G&&(f?!x&&!hr(l)?e.jsx(ut,{project:l,onDone:Br,onBack:()=>xe(R),busy:le||Ar,publicToLibrary:Y,onPublicToggle:te,anonymous:!!l.anonymous,onAnonymousToggle:a=>k(r=>({...r,anonymous:!!a}))}):e.jsx(st,{project:l,projectId:i,briefLang:h.lang||"en",nodes:u,edges:b,brief:h,gen:{markdown:Je,source:_r,loading:He,streaming:Ve,error:Nr,authBlocked:Rr},onRegenerate:()=>ke(!0),onBriefGenerated:Pr,uiSheet:null,onBack:()=>xe(1),onExit:()=>I("/app"),readOnly:x,publicToLibrary:Y,onPublicToggle:te,onLiveChange:a=>k(r=>({...r,...a}))}):e.jsx(bt,{t:s,onBack:()=>xe(R),onSignIn:()=>{qe({project:l,nodes:u,edges:b,step:G,maxStep:G,resume:!0,ts:Date.now()}),S("/")}}))]}):e.jsxs("div",{className:"flex h-full items-center justify-center text-sm font-semibold text-muted-foreground",children:[e.jsx(or,{className:"mr-2 h-5 w-5 animate-spin text-[hsl(var(--brand))]"})," ",s("builder.loadingProject")]})})]})}export{Gt as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.