1import{r as o,p as g,j as e,L as b}from"./index-iPeozO-i.js";import{L as v,X as w}from"./Layout-D7AfRm2N.js";import{S as j}from"./SoldMap-CWGMRadk.js";import{B as y}from"./button-6P0vf2IK.js";import{h as N}from"./featured-1-CehS78QI.js";import{g as k,a as C}from"./project-galleries.functions-pw6piyzs.js";import{c as L}from"./createLucideIcon-C1w5x5Jt.js";import{A as E}from"./arrow-right-Bqm8r1JA.js";import{C as P}from"./chevron-left-BREAM5TH.js";import{C as S}from"./chevron-right-XtBw-2TF.js";import"./client-DtIqrOsZ.js";import"./tslib.es6-eMSY344_.js";import"./plus-YrXEPBt6.js";import"./rotate-ccw-By-eCCh2.js";import"./utils-Bv9VM8dC.js";const z=[["path",{d:"M18 8c0 3.613-3.869 7.429-5.393 8.795a1 1 0 0 1-1.214 0C9.87 15.429 6 11.613 6 8a6 6 0 0 1 12 0",key:"11u0oz"}],["circle",{cx:"12",cy:"8",r:"2",key:"1822b1"}],["path",{d:"M8.714 14h-3.71a1 1 0 0 0-.948.683l-2.004 6A1 1 0 0 0 3 22h18a1 1 0 0 0 .948-1.316l-2-6a1 1 0 0 0-.949-.684h-3.712",key:"q8zwxj"}]],A=L("map-pinned",z),I=n=>n.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/(^-|-$)/g,"");function X(){const[n,f]=o.useState(g),[s,x]=o.useState(null),[r,i]=o.useState(0),u=o.useRef({});o.useEffect(()=>{let t=!1;return k().then(a=>{!t&&a.length&&f(C(a))}).catch(()=>{}),()=>{t=!0}},[]);const p=t=>{x(t),i(0)},d=o.useCallback(()=>x(null),[]);o.useEffect(()=>{if(typeof window>"u")return;const t=()=>{const c=window.location.hash.replace(/^#/,"");if(!c)return;const l=u.current[c];l&&(l.scrollIntoView({behavior:"smooth",block:"center"}),l.classList.add("ring-2","ring-accent","ring-offset-2"),window.setTimeout(()=>{l.classList.remove("ring-2","ring-accent","ring-offset-2")},2400))},a=window.setTimeout(t,150);return window.addEventListener("hashchange",t),()=>{window.clearTimeout(a),window.removeEventListener("hashchange",t)}},[]);const m=o.useCallback(()=>{s&&i(t=>(t+1)%s.images.length)},[s]),h=o.useCallback(()=>{s&&i(t=>(t-1+s.images.length)%s.images.length)},[s]);return o.useEffect(()=>{if(!s)return;const t=a=>{a.key==="Escape"&&d(),a.key==="ArrowRight"&&m(),a.key==="ArrowLeft"&&h()};return document.body.style.overflow="hidden",window.addEventListener("keydown",t),()=>{document.body.style.overflow="",window.removeEventListener("keydown",t)}},[s,d,m,h]),e.jsxs(v,{children:[e.jsxs("section",{className:"relative flex min-h-[60vh] items-end overflow-hidden pb-20",children:[e.jsx("img",{src:N,alt:"Dwell West Homes renovations",className:"absolute inset-0 h-full w-full object-cover",width:1920,height:1080}),e.jsx("div",{className:"absolute inset-0 bg-gradient-to-t from-black/65 via-black/25 to-black/10"}),e.jsxs("div",{className:"relative z-10 mx-auto w-full max-w-7xl px-6",children:[e.jsx("p",{className:"text-sm font-medium uppercase tracking-[0.3em] text-white/70",children:"Portfolio"}),e.jsx("h1",{className:"mt-4 font-heading text-5xl font-bold text-white md:text-7xl",children:"Take a Tour"}),e.jsx("p",{className:"mt-4 max-w-xl text-lg text-white/85",children:"Browse homes we've bought, renovated, and sold. Click any home to view the full photo tour."}),e.jsx(y,{asChild:!0,className:"mt-7 h-11 px-6",children:e.jsxs("a",{href:"#sold-map",children:[e.jsx(A,{className:"h-4 w-4"})," Explore Our Sold Homes Map"]})})]})]}),e.jsx("section",{id:"sold-map",className:"scroll-mt-20 border-b border-border bg-secondary py-16 md:py-20",children:e.jsxs("div",{className:"mx-auto max-w-7xl px-6",children:[e.jsx("p",{className:"text-xs font-medium uppercase tracking-[0.2em] text-accent",children:"Across the County"}),e.jsx("h2",{className:"mt-3 font-heading text-4xl font-bold text-foreground",children:"Homes We've Sold"}),e.jsx("p",{className:"mb-8 mt-4 max-w-2xl text-muted-foreground",children:"Explore our closed deals across San Diego County and beyond."}),e.jsx(j,{})]})}),e.jsx("section",{className:"py-24",children:e.jsxs("div",{className:"mx-auto max-w-7xl px-6",children:[e.jsxs("div",{className:"mb-12",children:[e.jsxs("p",{className:"text-sm font-medium uppercase tracking-[0.2em] text-accent",children:[n.length," Renovations"]}),e.jsx("h2",{className:"mt-2 font-heading text-3xl font-bold text-foreground md:text-4xl",children:"Our C
1omplete Portfolio"})]}),e.jsx("div",{className:"grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-3",children:n.map(t=>{const a=I(t.title),c=e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"relative aspect-[4/3] overflow-hidden bg-muted",children:e.jsx("img",{src:t.thumbnail,alt:t.title,className:"h-full w-full object-cover transition-transform duration-500 group-hover:scale-105",loading:"lazy",width:800,height:600})}),e.jsx("div",{className:"px-5 py-4",children:e.jsx("h3",{className:"font-heading text-lg font-semibold text-foreground",children:t.title})})]});return e.jsx("div",{id:a,ref:l=>{u.current[a]=l},className:"group relative scroll-mt-32 overflow-hidden rounded-lg border border-border bg-card transition-all hover:-translate-y-1 hover:shadow-lg",children:e.jsx("button",{type:"button",onClick:()=>p(t),className:"block w-full text-left",children:c})},t.link||t.title)})})]})}),e.jsx("section",{className:"border-t border-border py-32",children:e.jsxs("div",{className:"mx-auto max-w-3xl px-6 text-center",children:[e.jsx("h2",{className:"font-heading text-4xl font-bold text-foreground",children:"Interested in a Property â or Have One to Sell?"}),e.jsx("p",{className:"mt-4 text-lg text-muted-foreground",children:"Reach out about an available renovation, or let us make a fair, all-cash offer on your home."}),e.jsxs(b,{to:"/contact",className:"mt-8 inline-flex items-center gap-2 rounded-sm bg-foreground px-8 py-3.5 text-sm font-semibold text-background hover:bg-foreground
1/90",children:["Get In Touch",e.jsx(E,{className:"h-4 w-4"})]})]})}),s&&e.jsxs("div",{className:"fixed inset-0 z-[100] flex flex-col bg-black/95 backdrop-blur-sm",role:"dialog","aria-modal":"true","aria-label":`${s.title} photo gallery`,children:[e.jsxs("div",{className:"flex items-center justify-between gap-4 border-b border-white/10 px-4 py-3 sm:px-6",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("h3",{className:"truncate font-heading text-lg font-semibold text-white sm:text-xl",children:s.title}),e.jsxs("p",{className:"text-xs text-white/60",children:[r+1," / ",s.images.length]})]}),e.jsx("div",{className:"flex items-center gap-2",children:e.jsx("button",{type:"button",onClick:d,"aria-label":"Close gallery",className:"rounded-full p-2 text-white/80 hover:bg-white/10 hover:text-white",children:e.jsx(w,{className:"h-5 w-5"})})})]}),e.jsxs("div",{className:"relative flex flex-1 items-center justify-center overflow-hidden p-4",children:[e.jsx("button",{type:"button",onClick:h,"aria-label":"Previous photo",className:"absolute left-2 top-1/2 z-10 -translate-y-1/2 rounded-full bg-black/40 p-2 text-white hover:bg-black/70 sm:left-4 sm:p-3",children:e.jsx(P,{className:"h-6 w-6"})}),e.jsx("img",{src:s.images[r],alt:`${s.title} â photo ${r+1}`,className:"max-h-full max-w-full object-contain"},s.images[r]),e.jsx("button",{type:"button",onClick:m,"aria-label":"Next photo",className:"absolute right-2 top-1/2 z-10 -translate-y-1/2 rounded-full bg-black/40 p-2 text-white hover:bg-black/70 sm:right-4 sm:p-3",children:e.jsx(S,{className:"h-6 w-6"})})]}),e.jsx("div",{className:"border-t border-white/10 bg-black/60 px-2 py-3 sm:px-4",children:e.jsx("div",{className:"flex gap-2 overflow-x-auto",children:s.images.map((t,a)=>e.jsx("button",{type:"button",onClick:()=>i(a),"aria-label":`Show photo ${a+1}`,className:`relative h-16 w-24 shrink-0 overflow-hidden rounded border-2 transition ${a===r?"border-accent opacity-100":"border-transparent opacity-60 hover:opacity-100"}`,children:e.jsx("img",{src:t,alt:"",className:"h-full w-full object-cover",loading:"lazy"})},t))})})]})]})}export{X as component};
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.