// Zen Interiors — Case Study page function CaseStudyPage({ navigate, slug, openEnquiry }) { const projects = window.ZEN_PROJECTS; const project = projects.find(p => p.slug === slug); const idx = projects.findIndex(p => p.slug === slug); const next = projects[(idx + 1) % projects.length]; const prev = projects[(idx - 1 + projects.length) % projects.length]; const [lightbox, setLightbox] = useState(-1); useEffect(() => { window.scrollTo({ top: 0, behavior: 'instant' }); }, [slug]); if (!project) { return (
404

Project not found.

); } return (
{/* Hero */}
{project.name}
{ e.preventDefault(); navigate('/projects'); }} style={{ color: 'rgba(250,247,242,0.85)', borderBottom: '1px solid rgba(250,247,242,0.4)' }}> Projects / {project.sector}

{project.name}.

PHOTO CREDIT TBC
{/* Metadata bar */}
{[ { label: 'Sector', value: project.sector }, { label: 'Location', value: project.location }, { label: 'Year', value: project.year }, { label: 'Scope', value: project.scope }, project.award && { label: 'Recognition', value: project.award, accent: true }, ].filter(Boolean).map(m => (
{m.label}
{m.value}
))}
{/* Narrative — Brief & Concept */}
The brief

{project.brief}

{/* Single image break */} {project.gallery[1] && (
FRAME 02 — {project.name.toUpperCase()} PHOTO CREDIT TBC
)}
The concept

{project.concept}

Materials
{project.materials.map((m, i) => (
{m}
))}
{/* Gallery grid */}
Gallery

The rooms in full.

{project.gallery.length} frames
{project.gallery.map((src, i) => { // Asymmetric mosaic const layouts = [ { col: 'span 12', ratio: '16/9' }, { col: 'span 7', ratio: '4/5' }, { col: 'span 5', ratio: '4/5' }, { col: 'span 5', ratio: '4/5' }, { col: 'span 7', ratio: '4/5' }, { col: 'span 6', ratio: '3/4' }, { col: 'span 6', ratio: '3/4' }, ]; const L = layouts[i % layouts.length]; return ( ); })}

⚠ ALL FRAMES — PHOTOGRAPHER CREDIT & REPUBLICATION RIGHTS TO BE CONFIRMED BEFORE PUBLISHING.

{/* CTA inline */}
Begin a similar project

Tell us about your home.

Call us
{/* Next / Prev */}
{ e.preventDefault(); navigate(`/projects/${prev.slug}`); }} style={{ display: 'block', cursor: 'pointer' }}>
← Previous project
{prev.name}

{prev.name}

{prev.sector} · {prev.location}
{ e.preventDefault(); navigate(`/projects/${next.slug}`); }} style={{ display: 'block', cursor: 'pointer', textAlign: 'right' }}>
Next project →
{next.name}

{next.name}

{next.sector} · {next.location}
{lightbox >= 0 && ( setLightbox(-1)} onPrev={() => setLightbox(i => (i - 1 + project.gallery.length) % project.gallery.length)} onNext={() => setLightbox(i => (i + 1) % project.gallery.length)} /> )}
); } window.CaseStudyPage = CaseStudyPage;