// Shell: top nav, footer, status bars const { useState, useEffect, useRef } = React; function Logo({ size = 28, inverted = true }) { // Text-only wordmark const scale = size / 28; return (
Done Events
); } function TopBar({ lang, setLang, dir }) { return (
Est. 2005 — Dubai Media City +971 4 439 0900 · info@doneevents.com |
); } function Nav({ route, go, t, lang, setLang }) { const [scrolled, setScrolled] = useState(false); useEffect(()=>{ const onScroll = () => setScrolled(window.scrollY > 20); window.addEventListener('scroll', onScroll); return () => window.removeEventListener('scroll', onScroll); }, []); const items = [ ['work', t.nav.work], ['services', t.nav.services], ['events', t.nav.events], ['about', t.nav.about], ['partner', t.nav.partner], ['contact', t.nav.contact], ]; return ( <> ); } function TickerBar({ lang }) { const items = lang==='ar' ? ['ريدفست دبي', 'مهرجان دبي للجاز', 'بليندد', 'تاغ فيست', 'DXB Laughs', 'منذ ٢٠٠٥'] : ['RedFestDXB', 'Dubai Jazz Festival', 'Blended', 'TagFest', 'DXBLaughs', 'Government', 'Corporate', 'Talent Booking', 'Est. 2005', 'Part of Arab Media Group']; const doubled = [...items, ...items, ...items]; return (
{doubled.map((s,i)=>( {s} ))}
); } function Footer({ t, go }) { return ( ); } // Stock-image overlay flag function StockFlag({ lang }) { return {lang==='ar' ? 'صورة مرجعية' : 'Stock · placeholder'}; } Object.assign(window, { Logo, Nav, Footer, TickerBar, StockFlag });