/* Round country-flag icons + language dropdown. */ function FlagIcon({ code, size = 22 }) { const flags = { us: ( {[0,2,4,6,8,10,12].map(i => )} {[1.6,4.4,7.2].map((y,r)=>[1.6,4,6.4,8.8].map((x,c)=>(c%2===r%2)&&))} ), br: ( ), pt: ( ), es: ( ), ca: ( ), gb: ( ), }; return ( {flags[code]} ); } const BNE_COUNTRIES = [ { code:'us', name:'United States', lang:'en' }, { code:'br', name:'Brasil', lang:'pt-br' }, { code:'pt', name:'Portugal', lang:'pt' }, ]; const LANG_TO_CODE = { en:'us', 'pt-br':'br', pt:'pt' }; function LangDropdown({ lang, setLang, up = false, align = 'right' }) { const [open, setOpen] = useState(false); const ref = useRef(null); useEffect(() => { const h = (e) => { if (ref.current && !ref.current.contains(e.target)) setOpen(false); }; document.addEventListener('pointerdown', h); return () => document.removeEventListener('pointerdown', h); }, []); const cur = BNE_COUNTRIES.find(c => c.code === (LANG_TO_CODE[lang] || 'us')) || BNE_COUNTRIES[0]; const pick = (c) => { setLang(c.lang); setOpen(false); }; return (
{open && (
{BNE_COUNTRIES.map(c => { const active = c.code === cur.code; return ( ); })}
)}
); } Object.assign(window, { FlagIcon, LangDropdown });