/* global React */
const { createContext, useContext, useEffect, useMemo, useState } = React;
const LanguageContext = createContext({ language: 'en', isPortuguese: false, setLanguage: () => {} });
function LanguageProvider({ children }) {
const [language, setLanguage] = useState(() => {
try { return localStorage.getItem('tb-language') === 'pt-BR' ? 'pt-BR' : 'en'; }
catch (_) { return 'en'; }
});
useEffect(() => {
document.documentElement.lang = language;
try { localStorage.setItem('tb-language', language); } catch (_) {}
}, [language]);
const value = useMemo(() => ({
language,
isPortuguese: language === 'pt-BR',
setLanguage,
}), [language]);
return {children};
}
function useLanguage() {
return useContext(LanguageContext);
}
function LanguageToggle({ dark = false }) {
const { language, setLanguage } = useLanguage();
const fg = dark ? '#F4EFE5' : 'var(--asphalt)';
const border = dark ? 'rgba(244,239,229,0.35)' : 'var(--line-strong)';
return (
{[
{ code: 'en', label: 'EN' },
{ code: 'pt-BR', label: 'PT-BR' },
].map(option => {
const active = language === option.code;
return (
);
})}
);
}
Object.assign(window, { LanguageProvider, useLanguage, LanguageToggle });