// ============================================================ // Work gallery + project detail modal - FreshWave Digital Studio // ============================================================ function WorkPage({ onOpenProject }) { const [filter, setFilter] = useState('All'); const filtered = filter === 'All' ? PROJECTS : PROJECTS.filter((p) => p.category === filter); return (
Personal favorites

FreshWave favorites

A curated wall of pieces that best show the studio range: glow details, tiny replicas, fidget toys, statues and one-off character work.

{/* Filter chips */}
{WORK_CATEGORIES.map((c) => ( ))}
{/* Grid */}
{filtered.map((p) => ())}
{filtered.length === 0 && (
Nothing in this category yet.
)}
); } // Project detail modal ---------------------------------------------------- function ProjectModal({ project, onClose }) { useEffect(() => { const onKey = (e) => { if (e.key === 'Escape') onClose(); }; document.addEventListener('keydown', onKey); document.body.style.overflow = 'hidden'; return () => { document.removeEventListener('keydown', onKey); document.body.style.overflow = ''; }; }, [onClose]); if (!project) return null; const blocks = [ { k: 'Overview', v: project.overview }, { k: 'The challenge', v: project.challenge }, { k: 'Our approach', v: project.approach }, { k: 'Outcome', v: project.outcome }, ]; return (
e.stopPropagation()} >
{project.category} {project.year} ยท {project.material}

{project.title}

{project.description}

{blocks.map((b) => (

{b.k}

{b.v}

))}
); } Object.assign(window, { WorkPage, ProjectModal });