PageSourceSearch

https://www.outdoordesigns.ai/assets/DealRoom-CDzH2udf.js

js outdoordesigns.ai collected 2026-10-05 13:45:58 UTC 25,436 bytes, 1 lines download raw bytes

1import{j as e,X as P,a as ee,M as A,L as te}from"./staleChunkReload-Doa7uMSE.js";import{r as l}from"./vendor-react-vmDq5VVP.js";import{a4 as ue,a9 as E,M as w,bd as he,l as ge,b as pe,u as be,t as fe}from"./main-11d4-Cgn.js";import{d as je}from"./vendor-router-Duf9S0NM.js";import{P as v}from"./phone-BRnQm9M8.js";import{C as we}from"./chevron-up-C0TtSeTn.js";import"./vendor-supabase-7KcKRj6y.js";import"./vendor-genai-Bt8aoFA-.js";const F="https://pdvqjuzhmbirrzaiejoj.supabase.co",y="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InBkdnFqdXpobWJpcnJ6YWllam9qIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTI1ODQzMDQsImV4cCI6MjA2ODE2MDMwNH0.s4148PujCCH_nj6v35vPbU8MuAUC1H3MjKp5mKbXgoo",D=(o,t,c)=>fetch(`${F}/functions/v1/${o}`,{method:"POST",headers:{"Content-Type":"application/json",apikey:y,...c},body:JSON.stringify(t)}),N=(o,t,c,$)=>{D("deal-room-track",{token:o,eventType:t,designIndex:c,metadata:$}).catch(()=>{})},ve=o=>{const t=o.map(c=>`${c.style||""} ${c.description||""} ${c.name||""}`).join(" ").toLowerCase();return t.includes("pool")||t.includes("swim")||t.includes("fiberglass")||t.includes("gunite")?"pool":t.includes("hardscape")||t.includes("paver")||t.includes("patio")||t.includes("driveway")||t.includes("retaining wall")?"hardscape":t.includes("landscape")||t.includes("garden")||t.includes("planting")||t.includes("lawn")?"landscape":t.includes("remodel")||t.includes("renovation")||t.includes("resurface")||t.includes("update")?"remodel":t.includes("outdoor kitchen")||t.includes("bbq")||t.includes("grill")?"outdoor-living":t.includes("light")||t.includes("illuminat")?"lighting":"outdoor"},Ne={pool:{title:"Your Custom Pool Design",subtitle:"A personalized design created specifically for your property",emoji:"🏊"},hardscape:{title:"Your Custom Hardscape Design",subtitle:"A personalized design created specifically for your property",emoji:"🧱"},landscape:{title:"Your Custom Landscape Design",subtitle:"A personalized design created specifically for your property",emoji:"🌿"},remodel:{title:"Your Pool Remodel Design",subtitle:"A fresh new look designed specifically for your existing space",emoji:"✨"},"outdoor-living":{title:"Your Outdoor Living Design",subtitle:"A personalized design created specifically for your property",emoji:"🔥"},lighting:{title:"Your Smart Lighting Design",subtitle:"A personalized lighting plan for your outdoor space",emoji:"💡"},outdoor:{title:"Your Custom Outdoor Design",subtitle:"A personalized design created specifically for your property",emoji:"🏡"}};function Ee(){var Z;const{token:o}=je(),[t,c]=l.useState(null),[$,se]=l.useState(!0),[q,L]=l.useState(""),[ae,p]=l.useState(!1),[re,b]=l.useState(!1),[J,z]=l.useState(null),[k,C]=l.useState(0),[M,oe]=l.useState(null),[Y,le]=l.useState(0),[x,T]=l.useState(""),[u,G]=l.useState(""),[_,X]=l.useState(""),[I,H]=l.useState(""),[h,S]=l.useState(!1),[R,V]=l.useState(null),[Q,ne]=l.useState({}),ie=l.useRef(Date.now());l.useEffect(()=>{if(!o)return;(async()=>{try{const g=await(await fetch(`${F}/rest/v1/deal_rooms?token=eq.${o}&select=token,status,contractor_name,contractor_company,contractor_phone,contractor_email,contractor_license,contractor_logo,contractor_plan,client_name,designs,cost_breakdowns,approved_design_index,approved_at,created_at,expires_at,id`,{headers:{apikey:y,Authorization:`Bearer ${y}`}})).json();if(!g||g.length===0){L("Deal room not found");return}const a=g[0];if(a.expires_at&&new Date(a.expires_at)<new Date){L("This deal room has expired");return}c({token:a.token,status:a.status==="sent"?"opened":a.status,contractorName:a.contractor_name,contractorCompany:a.contractor_company,contractorPhone:a.contractor_phone,contractorEmail:a.contractor_email,contractorLicense:a.contractor_license,contractorLogo:a.contractor_logo,contractorPlan:a.contractor_plan||"starter",clientName:a.client_name,designs:a.designs||[],costBreakdowns:a.cost_breakdowns,approvedDesignIndex:a.approved_design_index,approvedAt:a.approved_at,createdAt:a.created_at}),D("deal-room-public",{token:o}).catch(()=>{});const O=(a.designs||[]).map(m=>
1m.designGenerationId).filter(Boolean);if(O.length>0)try{const K=await(await fetch(`${F}/rest/v1/video_generations?design_generation_id=in.(${O.join(",")})&status=eq.completed&select=design_generation_id,video_url&order=created_at.desc`,{headers:{apikey:y,Authorization:`Bearer ${y}`}})).json();if(Array.isArray(K)){const U={};K.forEach(j=>{j.design_generation_id&&j.video_url&&!U[j.design_generation_id]&&(U[j.design_generation_id]=j.video_url)}),ne(U)}}catch(m){console.warn("Failed to fetch videos:",m)}}catch{L("Failed to load deal room")}finally{se(!1)}})();const r=()=>{const f=Math.round((Date.now()-ie.current)/1e3);N(o,"time_on_page",void 0,{seconds:f})};return window.addEventListener("beforeunload",r),()=>window.removeEventListener("beforeunload",r)},[o]);const ce=async()=>{if(o){S(!0);try{const r=await(await D("deal-room-approve",{token:o,designIndex:k,clientName:x,clientEmail:u,clientPhone:_})).json();r.success?(V("approved"),p(!1)):alert(r.error||"Failed to approve")}catch{alert("Something went wrong. Please try again.")}finally{S(!1)}}},de=async()=>{if(!(!o||!I.trim())){S(!0);try{const r=await(await D("deal-room-message",{token:o,message:I,designIndex:k,clientName:x,clientEmail:u,clientPhone:_})).json();r.success?(V("messaged"),b(!1),H("")):alert(r.error||"Failed to send message")}catch{alert("Something went wrong. Please try again.")}finally{S(!1)}}};if($)return e.jsx("div",{className:"min-h-screen bg-gradient-to-b from-slate-50 to-white flex items-center justify-center",children:e.jsxs("div",{className:"text-center",children:[e.jsx("div",{className:"w-12 h-12 rounded-full border-4 border-slate-200 border-t-blue-600 animate-spin mx-auto mb-4"}),e.jsx("p",{className:"text-slate-500 font-medium",children:"Loading your design..."})]})});if(q)return e.jsx("div",{className:"min-h-screen bg-gradient-to-b from-slate-50 to-white flex items-center justify-center p-6",children:e.jsxs("div",{className:"bg-white rounded-2xl p-10 max-w-md w-full text-center shadow-xl border border-slate-100",children:[e.jsx("div",{className:"w-16 h-16 rounded-full bg-slate-100 flex items-center justify-center mx-auto mb-6",children:e.jsx(P,{className:"w-8 h-8 text-slate-400"})}),e.jsx("h2",{className:"text-xl font-bold text-slate-900 mb-2",children:"Deal Room Unavailable"}),e.jsx("p",{className:"text-slate-500",children:q})]})});if(!t)return null;const d=t.designs||[],me=ve(d),B=Ne[me],n=t.contractorCompany||"Your Contractor",xe=(t.contractorPlan||"starter").toLowerCase(),W=ue(xe,"professional");return R?e.jsx("div",{className:"min-h-screen bg-gradient-to-b from-slate-50 to-white flex items-center justify-center p-6",children:e.jsxs("div",{className:"bg-white rounded-2xl p-10 max-w-lg w-full text-center shadow-xl border border-slate-100",children:[e.jsx("div",{className:"w-20 h-20 rounded-full bg-green-50 flex items-center justify-center mx-auto mb-6",children:e.jsx(E,{className:"w-10 h-10 text-green-600"})}),e.jsx("h2",{className:"text-3xl font-bold text-slate-900 mb-3",children:R==="approved"?"Design Approved!":"Message Sent!"}),e.jsx("p",{className:"text-slate-500 text-lg mb-8 leading-relaxed",children:R==="approved"?`Great choice! ${n} has been notified and will follow up with you to discuss next steps.`:`Your feedback has been sent to ${n}. They'll review it and get back to you shortly.`}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-3 justify-center",children:[t.contractorPhone&&e.jsxs("a",{href:`tel:${t.contractorPhone}`,className:"inline-flex items-center justify-center gap-2 bg-green-600 text-white px-6 py-3.5 rounded-xl font-semibold hover:bg-green-500 transition-colors",children:[e.jsx(v,{className:"w-4 h-4"})," Call ",n]}),t.contractorEmail&&e.jsxs("a",{href:`mailto:${t.contractorEmail}`,className:"inline-flex items-center justify-center gap-2 bg-slate-100 text-slate-700 px-6 py-3.5 rounded-xl font-semibold hover:bg-slate-200 transition-colors",children:[e.jsx(w,{className:"w-4 h-4"})," Send Email"]})]})]})}):e.jsxs("div",{className:"min-h-screen bg-gradient-to-b from-slate-50 to-white",children:[e.jsx("header",{className:"bg-white/95 backdrop-blur-md border-b border-slate-200 sticky top-0 z-50",children:e.jsxs("div",{className:"max-w-5xl mx-auto px-4 sm:px-6 py-3 flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[t.contractorLogo?e.jsx("img",{src:t.contractorLogo,alt:"",className:"h-10 w-10 rounded-xl object-cover shadow-sm"}):e.jsx("div",{className:"h-10 w-10 rounded-xl bg-gradient-to-br from-blue-600 to-blue-700 flex items-center justify-center text-white font-bold text-sm shadow-sm",children:n.charAt(0)}),e.jsxs("div",{children:[e.jsx("h1",{className:"font-bold text-slate-900 text-base sm:text-lg leading-tight",children:n}),t.contractorLicense&&e.jsxs("p",{className:"text-xs text-slate-400 flex items-center gap-1",children:[e.jsx(ee,{className:"w-3 h-3"})," License #",t.contractorLicense]})]})]}),e.jsxs("div",{className:"flex items-center gap-2 sm:gap-3",children:[t.contractorPhone&&e.jsxs("a",{href:`tel:${t.contractorPhone}`,className:"flex items-center gap-1.5 text-sm font-medium text-slate-600 hover:text-green-600 transition-colors bg-slate-50 hover:bg-green-50 px-3 py-2 rounded-lg",children:[e.jsx(v,{className:"w-4 h-4"})," ",e.jsx("span",{className:"hidden sm:inline",children:"Call"})]}),t.contractorEmail&&e.jsxs("a",{href:`mailto:${t.contractorEmail}`,className:"flex items-center gap-1.5 text-sm font-medium text-slate-600 hover:text-blue-600 transition-colors bg-slate-50 hover:bg-blue-50 px-3 py-2 rounded-lg",children:[e.jsx(w,{className:"w-4 h-4"})," ",e.jsx("span",{className:"hidden sm:inline",children:"Email"})]})]})]})}),e.jsxs("div",{className:"max-w-5xl mx-auto px-4 sm:px-6 pb-24 lg:pb-0",children:[e.jsxs("div",{className:"text-center py-5 sm:py-10",children:[e.jsxs("p",{className:"text-[11px] sm:text-xs font-bold uppercase tracking-[0.15em] text-slate-400 mb-1.5",children:[B.emoji," Prepared by ",n]}),e.jsxs("h2",{className:"text-2xl sm:text-4xl font-bold text-slate-900 tracking-tight leading-tight",children:[t.clientName&&e.jsxs("span",{className:"text-slate-500 font-semibold",children:["Hi ",String(t.clientName).split(" ")[0]," — "]}),B.title]}),e.jsx("p",{className:"hidden sm:block text-slate-500 text-lg max-w-lg mx-auto leading-relaxed mt-3",children:B.subtitle})]}),e.jsx("div",{className:`grid gap-8 mb-12 ${d.length===1?"max-w-2xl mx-auto":d.length===2?"grid-cols-1 md:grid-cols-2 max-w-4xl mx-auto":"grid-cols-1 lg:grid-cols-3"}`,children:d.map((s,r)=>{var f,g;return e.jsxs("div",{className:"bg-white rounded-2xl border border-slate-200 overflow-hidden shadow-sm hover:shadow-xl transition-all duration-300 group",ref:a=>{if(a){const i=new IntersectionObserver(([m])=>{m.isIntersecting&&(N(o,"design_viewed",r),i.disconnect())},{threshold:.5});i.observe(a),new IntersectionObserver(([m])=>{m.isIntersecting&&le(r)},{threshold:.6}).observe(a)}},children:[s.imageUrl&&e.jsxs("div",{className:"relative aspect-[4/3] overflow-hidden cursor-pointer",onClick:()=>{z(s.imageUrl),N(o,"design_clicked",r)},children:[e.jsx("img",{src:s.imageUrl,alt:s.name,className:"w-full h-full object-cover group-hover:scale-[1.02] transition-transform duration-500"}),e.jsxs("div",{className:"absolute bottom-3 right-3 bg-white/90 backdrop-blur-sm rounded-lg px-2.5 py-1.5 text-xs font-medium text-slate-600 flex items-center gap-1 shadow-sm",children:[e.jsx(he,{className:"w-3.5 h-3.5"})," Enlarge"]})]}),s.designGenerationId&&Q[s.designGenerationId]&&e.jsxs("div",{className:"relative bg-black",children:[e.jsx("video",{src:Q[s.designGenerationId],autoPlay:!0,muted:!0,loop:!0,playsInl
1ine:!0,className:"w-full h-auto",onPlay:()=>N(o,"video_played",r)}),e.jsx("div",{className:"absolute top-3 left-3 bg-black/60 backdrop-blur-sm rounded-lg px-2.5 py-1 text-[10px] font-bold text-white/90 flex items-center gap-1.5",children:"🎬 AI Walkthrough"})]}),e.jsxs("div",{className:"p-5 sm:p-6",children:[e.jsx("h3",{className:"text-xl font-bold text-slate-900 mb-1.5",children:s.name&&!s.name.toLowerCase().includes("widget generated")?/^.+['']s\s+(pool|hardscape|landscape|outdoor|lighting)\s*(builder|er|ing)?$/i.test(s.name)?"Custom Design":s.name:"Custom Design"}),s.description&&!s.description.toLowerCase().includes("widget generated")&&!s.description.includes("contractor constraints")&&e.jsx("p",{className:"text-slate-500 text-sm mb-4 leading-relaxed line-clamp-2",children:s.description}),((f=s.specs)==null?void 0:f.length)>0&&e.jsx("div",{className:"flex flex-wrap gap-1.5 mb-4",children:s.specs.slice(0,6).map((a,i)=>e.jsxs("span",{className:"bg-blue-50 text-blue-700 text-xs font-medium px-2.5 py-1 rounded-full",children:[a.name,": ",a.feature]},i))}),s.costBreakdown&&Object.keys(s.costBreakdown).length>0&&s.costBreakdown.cost_summary&&e.jsxs("div",{className:"mb-4",children:[e.jsxs("button",{onClick:()=>{oe(M===r?null:r),N(o,"cost_expanded",r)},className:"w-full flex items-center justify-between bg-gradient-to-r from-slate-50 to-slate-100/50 rounded-xl px-4 py-3 text-left hover:from-slate-100 hover:to-slate-50 transition-all",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-[10px] text-slate-400 uppercase tracking-wider font-bold",children:"Estimated Investment"}),e.jsxs("p",{className:"text-xl font-bold text-slate-900",children:["$",(((g=s.costBreakdown.cost_summary)==null?void 0:g.total)||s.costBreakdown.total_cost||0).toLocaleString()]})]}),M===r?e.jsx(we,{className:"w-5 h-5 text-slate-400"}):e.jsx(ge,{className:"w-5 h-5 text-slate-400"})]}),M===r&&s.costBreakdown.detailed_breakdown&&e.jsx("div",{className:"mt-2 bg-slate-50 rounded-xl p-4 space-y-2 animate-in slide-in-from-top-2",children:Object.entries(s.costBreakdown.detailed_breakdown).map(([a,i])=>(i==null?void 0:i.total)>0&&e.jsxs("div",{className:"flex justify-between text-sm",children:[e.jsx("span",{className:"text-slate-500 capitalize",children:a.replace(/_/g," ")}),e.jsxs("span",{className:"font-semibold text-slate-700",children:["$",i.total.toLocaleString()]})]},a))})]}),W?e.jsxs("div",{className:"flex gap-2.5",children:[e.jsxs("button",{onClick:()=>{C(r),p(!0)},className:"flex-1 bg-green-600 hover:bg-green-500 text-white font-bold py-3.5 rounded-xl text-sm transition-all hover:shadow-lg hover:shadow-green-600/20 flex items-center justify-center gap-2",children:[e.jsx(E,{className:"w-4 h-4"})," Approve Design"]}),e.jsx("button",{onClick:()=>{C(r),b(!0)},className:"bg-slate-100 hover:bg-amber-50 text-slate-600 hover:text-amber-700 font-semibold py-3.5 px-4 rounded-xl text-sm transition-all",title:"Request a Change",children:e.jsx(A,{className:"w-4 h-4"})})]}):e.jsxs("div",{className:"flex gap-2.5",children:[t.contractorPhone&&e.jsxs("a",{href:`tel:${t.contractorPhone}`,className:"flex-1 bg-green-600 hover:bg-green-500 text-white font-bold py-3.5 rounded-xl text-sm transition-all hover:shadow-lg hover:shadow-green-600/20 flex items-center justify-center gap-2",children:[e.jsx(v,{className:"w-4 h-4"})," Call ",n]}),t.contractorEmail&&e.jsxs("a",{href:`mailto:${t.contractorEmail}`,className:"flex-1 bg-blue-600 hover:bg-blue-500 text-white font-bold py-3.5 rounded-xl text-sm transition-all flex items-center justify-center gap-2",children:[e.jsx(w,{className:"w-4 h-4"})," Email Us"]})]})]})]},r)})}),e.jsx("div",{className:"border-t border-slate-200 py-10 mb-8",children:e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-6 max-w-3xl mx-auto",children:[e.jsxs("div",{className:"text-center",children:[e.jsx("div",{className:"w-10 h-10 rounded-full bg-blue-50 flex items-center justify-center mx-auto mb-3",children:e.jsx(ee,{className:"w-5 h-5 text-blue-600"})}),e.jsx("h4",{className:"font-semibold text-slate-900 text-sm mb-1",children:"Licensed & Insured"}),e.jsx("p",{className:"text-xs text-slate-400",children:"Professional contractor you can trust"})]}),e.jsxs("div",{className:"text-center",children:[e.jsx("div",{className:"w-10 h-10 rounded-full bg-green-50 flex items-center justify-center mx-auto mb-3",children:e.jsx(pe,{className:"w-5 h-5 text-green-600"})}),e.jsx("h4",{className:"font-semibold text-slate-900 text-sm mb-1",children:"AI-Powered Design"}),e.jsx("p",{className:"text-xs text-slate-400",children:"Visualize your project before breaking ground"})]}),e.jsxs("div",{className:"text-center",children:[e.jsx("div",{className:"w-10 h-10 rounded-full bg-amber-50 flex items-center justify-center mx-auto mb-3",children:e.jsx(be,{className:"w-5 h-5 text-amber-600"})}),e.jsx("h4",{className:"font-semibold text-slate-900 text-sm mb-1",children:"Qu
1ick Response"}),e.jsx("p",{className:"text-xs text-slate-400",children:"Your contractor is notified instantly"})]})]})}),e.jsxs("div",{className:"bg-gradient-to-r from-green-600 to-emerald-600 rounded-2xl p-6 sm:p-8 text-center text-white mb-10 shadow-lg shadow-green-600/10",children:[e.jsx("h3",{className:"text-xl sm:text-2xl font-bold mb-2",children:"Ready to move forward?"}),e.jsxs("p",{className:"text-green-100 mb-5 text-sm sm:text-base",children:["Approve your design above or contact ",n," directly"]}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-3 justify-center",children:[t.contractorPhone&&e.jsxs("a",{href:`tel:${t.contractorPhone}`,className:"inline-flex items-center justify-center gap-2 bg-white text-green-700 px-6 py-3 rounded-xl font-bold hover:bg-green-50 transition-colors text-sm",children:[e.jsx(v,{className:"w-4 h-4"})," ",t.contractorPhone]}),t.contractorEmail&&e.jsxs("a",{href:`mailto:${t.contractorEmail}`,className:"inline-flex items-center justify-center gap-2 bg-green-500/30 text-white px-6 py-3 rounded-xl font-bold hover:bg-green-500/50 transition-colors text-sm border border-green-400/30",children:[e.jsx(w,{className:"w-4 h-4"})," Email Us"]})]})]}),e.jsx("div",{className:"text-center py-6 border-t border-slate-100",children:e.jsxs("p",{className:"text-xs text-slate-400",children:["Powered by ",e.jsx("a",{href:"https://outdoordesigns.ai",target:"_blank",rel:"noopener noreferrer",className:"text-blue-500 hover:underline font-medium",children:"OutdoorDesigns AI"})]})})]}),d.length>0&&e.jsxs("div",{className:"lg:hidden fixed inset-x-0 bottom-0 z-40 bg-white/95 backdrop-blur border-t border-slate-200 px-3 py-2.5",style:{paddingBottom:"max(0.625rem, env(safe-area-inset-bottom))"},children:[d.length>1&&e.jsxs("p",{className:"text-[10px] font-bold text-slate-400 uppercase tracking-wider mb-1.5 text-center",children:["Design ",Y+1," of ",d.length]}),e.jsx("div",{className:"flex gap-2",children:W?e.jsxs(e.Fragment,{children:[e.jsxs("button",{onClick:()=>{C(Y),p(!0)},className:"flex-1 h-12 rounded-xl bg-green-600 hover:bg-green-500 text-white font-bold text-sm flex items-center justify-center gap-2 active:scale-[0.98] transition-transform shadow-lg shadow-green-600/20",children:[e.jsx(E,{className:"w-4 h-4"})," Approve this design"]}),e.jsxs("button",{onClick:()=>{C(Y),b(!0)},className:"h-12 px-4 rounded-xl bg-slate-100 hover:bg-amber-50 text-slate-700 hover:text-amber-700 font-semibold text-sm flex items-center justify-center gap-2 active:scale-[0.98] transition-transform",children:[e.jsx(A,{className:"w-4 h-4"})," Changes"]})]}):e.jsxs(e.Fragment,{children:[t.contractorPhone&&e.jsxs("a",{href:`tel:${t.contractorPhone}`,className:"flex-1 h-12 rounded-xl bg-green-600 text-white font-bold text-sm flex items-center justify-center gap-2 active:scale-[0.98] transition-transform",children:[e.jsx(v,{className:"w-4 h-4"})," Call ",n]}),t.contractorEmail&&e.jsxs("a",{href:`mailto:${t.contractorEmail}`,className:`${t.contractorPhone?"px-4":"flex-1"} h-12 rounded-xl bg-blue-600 text-white font-bold text-sm flex items-center justify-center gap-2 active:scale-[0.98] transition-transform`,children:[e.jsx(w,{className:"w-4 h-4"})," Email"]})]})})]}),J&&e.jsxs("div",{className:"fixed inset-0 bg-black/90 flex items-center justify-center z-[10001] p-4 cursor-pointer",onClick:()=>z(null),children:[e.jsx("button",{onClick:()=>z(null),className:"absolute top-4 right-4 text-white/80 hover:text-white bg-white/10 hover:bg-white/20 rounded-full p-2 transition-colors z-10",children:e.jsx(P,{className:"w-6 h-6"})}),e.jsx("img",{src:J,alt:"Full size design",className:"max-w-full max-h-[90vh] object-contain rounded-lg shadow-2xl",onClick:s=>s.stopPropagation()})]}),ae&&e.jsx("div",{className:"fixed inset-0 bg-black/60 backdrop-blur-sm flex items-center justify-center z-[10000] p-5",onClick:()=>p(!1),children:e.jsxs("div",{className:"bg-white rounded-2xl p-8 max-w-md w-full shadow-2xl relative",onClick:s=>s.stopPropagation(),children:[e.jsx("button",{onClick:()=>p(!1),className:"absolute top-4 right-4 text-slate-400 hover:text-slate-600 bg-slate-100 hover:bg-slate-200 rounded-full p-1.5 transition-colors",children:e.jsx(P,{className:"w-4 h-4"})}),e.jsxs("div",{className:"text-center mb-6",children:[e.jsx("div",{className:"w-16 h-16 rounded-full bg-green-50 flex items-center justify-center mx-auto mb-4",children:e.jsx(E,{className:"w-8 h-8 text-green-600"})}),e.jsx("h3",{className:"text-xl font-bold text-slate-900",children:"Approve This Design"}),e.jsxs("p",{className:"text-sm text-slate-500 mt-1.5",children:[n," will be notified immediately to start planning your project"]})]}),((Z=d[k])==null?void 0:Z.imageUrl)&&e.jsx("div",{className:"rounded-xl overflow-hidden mb-5 border border-slate-100",children:e.jsx("img",{src:d[k].imageUrl,alt:"",className:"w-full h-32 object-cover"})}),e.jsxs("div",{className:"space-y-3 mb-6",children:[e.jsx("input",{type:"text",placeholder:"Your Name *",value:x,onChange:s=>T(s.target.value),className:"w-full border border-slate-200 rounded-xl px-4 py-3 text-sm outline-none focus:border-green-500 focus:ring-2 focus:ring-green-100 transition-all"}),e.jsx("input",{type:"email",placeholder:"Your Email *",value:u,onChange:s=>G(s.target.value),className:"w-full border border-slate-200 rounded-xl px-4 py-3 text-sm outline-none focus:border-green-500 focus:ring-2 focus:ring-green-100 transition-all"}),e.jsx("input",{type:"tel",placeholder:"Your Phone (optional)",value:_,onCh
1ange:s=>X(s.target.value),className:"w-full border border-slate-200 rounded-xl px-4 py-3 text-sm outline-none focus:border-green-500 focus:ring-2 focus:ring-green-100 transition-all"})]}),e.jsxs("button",{onClick:ce,disabled:h||!x.trim()||!u.trim(),className:"w-full bg-green-600 hover:bg-green-500 text-white font-bold py-3.5 rounded-xl transition-all disabled:opacity-50 disabled:cursor-not-allowed flex items-center justify-center gap-2 hover:shadow-lg hover:shadow-green-600/20",children:[h?e.jsx(te,{className:"w-4 h-4 animate-spin"}):e.jsx(fe,{className:"w-4 h-4"}),h?"Sending Approval...":"Approve & Notify Contractor"]}),e.jsx("p",{className:"text-[11px] text-slate-400 text-center mt-3",children:"This is not a contract. Your contractor will follow up to discuss details."})]})}),re&&e.jsx("div",{className:"fixed inset-0 bg-black/60 backdrop-blur-sm flex items-center justify-center z-[10000] p-5",onClick:()=>b(!1),children:e.jsxs("div",{className:"bg-white rounded-2xl p-8 max-w-md w-full shadow-2xl relative",onClick:s=>s.stopPropagation(),children:[e.jsx("button",{onClick:()=>b(!1),className:"absolute top-4 right-4 text-slate-400 hover:text-slate-600 bg-slate-100 hover:bg-slate-200 rounded-full p-1.5 transition-colors",children:e.jsx(P,{className:"w-4 h-4"})}),e.jsxs("div",{className:"text-center mb-6",children:[e.jsx("div",{className:"w-16 h-16 rounded-full bg-amber-50 flex items-center justify-center mx-auto mb-4",children:e.jsx(A,{className:"w-8 h-8 text-amber-600"})}),e.jsx("h3",{className:"text-xl font-bold text-slate-900",children:"Request Changes"}),e.jsxs("p",{className:"text-sm text-slate-500 mt-1.5",children:["Tell ",n," what you'd like adjusted"]})]}),e.jsxs("div",{className:"space-y-3 mb-6",children:[e.jsx("textarea",{placeholder:"What changes would you like? (e.g., different shape, add a spa, change the decking material...)",value:I,onChange:s=>H(s.target.value),rows:4,className:"w-full border border-slate-200 rounded-xl px-4 py-3 text-sm outline-none focus:border-amber-500 focus:ring-2 focus:ring-amber-100 resize-none transition-all"}),e.jsx("input",{type:"text",placeholder:"Your Name *",value:x,onChange:s=>T(s.target.value),className:"w-full border border-slate-200 rounded-xl px-4 py-3 text-sm outline-none focus:border-amber-500 focus:ring-2 focus:ring-amber-100 transition-all"}),e.jsx("input",{type:"email",placeholder:"Your Email *",value:u,onChange:s=>G(s.target.value),className:"w-full border border-slate-200 rounded-xl px-4 py-3 text-sm outline-none focus:border-amber-500 focus:ring-2 focus:ring-amber-100 transition-all"}),e.jsx("input",{type:"tel",placeholder:"Your Phone (optional)",value:_,onChange:s=>X(s.target.value),className:"w-full border border-slate-200 rounded-xl px-4 py-3 text-sm outline-none focus:border-amber-500 focus:ring-2 focus:ring-amber-100 transition-all"})]}),e.jsxs("button",{onClick:de,disabled:h||!I.trim()||!x.trim()||!u.trim(),className:"w-full bg-amber-500 hover:bg-amber-400 text-white font-bold py-3.5 rounded-xl transition-all disabled:opacity-50 disabled:cursor-not-allowed flex items-center justify-center gap-2",children:[h?e.jsx(te,{className:"w-4 h-4 animate-spin"}):e.jsx(A,{className:"w-4 h-4"}),h?"Sending...":"Send Change Request"]})]})})]})}export{Ee 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.