/* bloo.app — i18n: language from browser (en default, pt when navigator
   prefers Portuguese). Exposes window.I18n = { LocaleProvider, useLocale, useT }.
   Pricing is always USD. Pages read copy via useT()'s t(en, pt) pair-picker
   rather than a separate key file — keeps each string's two language versions
   side by side for easy upkeep. Must load BEFORE shared.jsx and every page script. */
(function () {
  const LocaleCtx = React.createContext(['en', () => {}]);

  /* No IP/geo lookup; browser language is the privacy-friendly proxy. */
  function detectLocale() {
    try {
      const langs = (navigator.languages && navigator.languages.length) ? navigator.languages : [navigator.language || ''];
      if (langs.some((l) => /^pt/i.test(l))) return 'pt';
    } catch (e) {}
    return 'en';
  }

  function LocaleProvider({ children }) {
    const [locale] = React.useState(detectLocale);

    React.useEffect(() => {
      document.documentElement.lang = locale === 'pt' ? 'pt-BR' : 'en';
    }, [locale]);

    const value = React.useMemo(() => [locale, () => {}], [locale]);
    return <LocaleCtx.Provider value={value}>{children}</LocaleCtx.Provider>;
  }

  function useLocale() {
    return React.useContext(LocaleCtx);
  }

  /* const { t, locale } = useT();  t('English copy', 'Cópia em português') */
  function useT() {
    const [locale] = React.useContext(LocaleCtx);
    const t = React.useCallback((en, pt) => (locale === 'pt' ? pt : en), [locale]);
    return { locale, t };
  }

  window.I18n = { LocaleProvider, useLocale, useT };
})();
