/* === ROAR shared components === */ const { useState, useEffect, useMemo, useRef } = React; /* --- Logo: redrawn from the 524×156 outlined italic PNG wordmark --- This is an editorial "roar" lockup in stroked italic script. Inline SVG so it scales. */ function RoarLogo({ size = 96, color = 'currentColor', stroke = 1.6 }) { // Path roughly traces the outlined italic "roar" wordmark (4 stroked letterforms in italic). // Drawn for legibility at small sizes; not pixel-perfect to the source PNG (which we'd redraw with the client). return ( {/* r */} {/* o */} {/* a */} {/* r */} ); } /* Small condensed "R" mark used for favicon-y spots and the footer monogram */ function RoarMark({ size = 32, color = 'currentColor' }) { return ( ); } /* --- Nav --- */ function Nav({ route, setRoute, lang, setLang, openEnquiry }) { const items = [ { id: 'projects', label: 'Projects' }, { id: 'sectors', label: 'Sectors' }, { id: 'studio', label: 'Studio' }, { id: 'awards', label: 'Awards' }, { id: 'contact', label: 'Contact' }, ]; const labels = { EN: items, AR: [ { id: 'projects', label: 'المشاريع' }, { id: 'sectors', label: 'القطاعات' }, { id: 'studio', label: 'الاستوديو' }, { id: 'awards', label: 'الجوائز' }, { id: 'contact', label: 'تواصل' }, ], }; return ( ); } /* --- Footer --- */ function Footer({ setRoute, openEnquiry, lang }) { return ( ); } /* --- Project card --- */ function ProjectCard({ p, onClick, big = false }) { const sector = SECTORS.find(s => s.id === p.sector); return ( onClick(p)}>
{p.name}
{p.name}{p.confidential && NDA}
{p.location}
{sector?.name}
); } /* --- Enquiry slide-over --- */ function EnquiryDrawer({ open, onClose }) { const [step, setStep] = useState(1); const [sent, setSent] = useState(false); const [data, setData] = useState({ name: '', email: '', company: '', sector: '', budget: '', timeline: '', message: '' }); useEffect(() => { if (open) { setStep(1); setSent(false); setData({ name: '', email: '', company: '', sector: '', budget: '', timeline: '', message: '' }); } }, [open]); if (!open) return null; const submit = (e) => { e.preventDefault(); setSent(true); }; return (