const moments = [ { id: "residences", eyebrow: "Residences", title: "Room for every rhythm.", body: "Alba’s generous three and four bedroom residences combine private open spaces with flexible layouts, creating homes designed for the changing pace of family life. From slow mornings to busy evenings, there's space to gather, retreat and grow.", img: "./assets/lifestyle.jpg", }, { id: "architecture", eyebrow: "Architecture", title: "Composed by contrast.", body: "Clean architectural lines, framed openings and textural materiality give Alba a strong, contemporary presence. Inspired by Parkdale’s relaxed Bayside setting, the architecture balances bold structure with warmth, shadow and a focus on landscaping, creating a design language that feels both confident and calm.", img: "./assets/parkdale-beach.jpg", }, { id: "location", eyebrow: "Location", title: "Placed for Bayside ease.", body: "Set in the charming locale of Parkdale, Alba places everyday amenity and Bayside ease close at hand. Nearby beaches, parks, sporting reserves, golf courses, leading schools and shopping villages are all within easy reach, along with the established coastal neighbourhoods of Mentone, Mordialloc and Beaumaris.", img: "./assets/parkdale.jpg", }, ]; const BeigeSection = () => { const [active, setActive] = React.useState(-1); const [imgTop, setImgTop] = React.useState(0); const refs = React.useRef([]); const sectionRef = React.useRef(null); // Crossfade: activate the moment whose centre has passed 92% of viewport height React.useEffect(() => { let raf = 0; const TRIGGER = 0.92; const pick = () => { raf = 0; const trigger = window.innerHeight * TRIGGER; let idx = -1; for (let i = 0; i < refs.current.length; i++) { const el = refs.current[i]; if (!el) continue; const r = el.getBoundingClientRect(); if (r.top + r.height / 2 <= trigger) idx = i; } setActive(idx); }; const onScroll = () => { if (!raf) raf = requestAnimationFrame(pick); }; pick(); window.addEventListener("scroll", onScroll, { passive: true }); window.addEventListener("resize", onScroll); return () => { window.removeEventListener("scroll", onScroll); window.removeEventListener("resize", onScroll); if (raf) cancelAnimationFrame(raf); }; }, []); // Sticky image top — constant per viewport height, recalculated only on resize. // Keeping this out of the scroll handler prevents jitter on the sticky element. React.useEffect(() => { const update = () => { if (!sectionRef.current) return; if (window.matchMedia('(max-width: 980px)').matches) { setImgTop(0); return; } const imgHeight = window.innerHeight - 560; // matches CSS calc(100vh - 560px) const navH = 64; setImgTop(navH + (window.innerHeight - navH - imgHeight) / 2); }; window.addEventListener("resize", update); update(); return () => window.removeEventListener("resize", update); }, []); return (
Welcome to Alba Parkdale

A considered expression
of bayside living

With interiors brought to life by Golden in collaboration with architects Martino Leah, Alba offers calm, grounded townhomes in the bayside neighbourhood of Parkdale.

Designed for modern family living, each home balances form and function – offering generous spaces, considered finishes and a quiet sense of retreat.

{moments.map((m, i) => (
refs.current[i] = el} className={"alba-beige__moment" + (i === active ? " is-active" : "")} >
0{i + 1}
{m.eyebrow}

{m.title}

{m.body}

))}
); }; window.BeigeSection = BeigeSection;