// 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 });