// nav.jsx — header with mobile hamburger, search overlay, language toggle
function Nav({ route, setRoute, cartCount, lang, setLang, cartBadgeRef, onSearchOpen }) {
const [mobileOpen, setMobileOpen] = React.useState(false);
const t = (ar, en) => lang === 'ar' ? ar : en;
const links = [
{ id: 'home', label: t('الرئيسية', 'Home') },
{ id: 'shop', label: t('العطور', 'Boutique') },
{ id: 'attars', label: t('العطّارون', 'Attars') },
{ id: 'story', label: t('قصتنا', 'Story') },
];
React.useEffect(() => {
document.body.style.overflow = mobileOpen ? 'hidden' : '';
return () => { document.body.style.overflow = ''; };
}, [mobileOpen]);
const go = (l) => { setMobileOpen(false); setRoute(l.route || l.id); };
return (
<>
{/* Mobile drawer */}
{mobileOpen && (
setMobileOpen(false)}>
e.stopPropagation()}>
{lang === 'ar' ? 'استبرق' : 'ISTABRAQ'}
{t('Indian Perfumery', 'Indian Perfumery')}
{t('شارع جميرا، دبي · 04-555-7788', 'Jumeirah St, Dubai · 04-555-7788')}
hello@istabraq.ae
)}
>
);
}
function SearchOverlay({ open, onClose, onPick, lang }) {
const [q, setQ] = React.useState('');
const inputRef = React.useRef();
React.useEffect(() => {
if (open) setTimeout(() => inputRef.current?.focus(), 50);
else setQ('');
}, [open]);
if (!open) return null;
const results = q
? PRODUCTS.filter(p =>
p.name_ar.includes(q) ||
p.name_en.toLowerCase().includes(q.toLowerCase()) ||
SCENT_FAMILIES.find(f => f.id === p.family)?.ar.includes(q) ||
SCENT_FAMILIES.find(f => f.id === p.family)?.en.toLowerCase().includes(q.toLowerCase())
).slice(0, 8)
: PRODUCTS.slice(0, 8);
return (
<>
setQ(e.target.value)}
onKeyDown={(e) => e.key === 'Escape' && onClose()} />
{results.map(p => {
const fam = SCENT_FAMILIES.find(f => f.id === p.family);
return (
{ onPick(p); onClose(); }}>
{lang === 'ar' ? p.name_ar : p.name_en}
{lang === 'ar' ? fam.ar : fam.en} · {p.price} AED
);
})}
>
);
}
window.Nav = Nav;
window.SearchOverlay = SearchOverlay;