// components/Header.jsx

// Bandeiras SVG inline (estilizadas, formato circular de 18px)
const FlagBR = () => (
  <svg width="18" height="18" viewBox="0 0 18 18" aria-hidden="true">
    <defs><clipPath id="brc"><circle cx="9" cy="9" r="9"/></clipPath></defs>
    <g clipPath="url(#brc)">
      <rect width="18" height="18" fill="#009C3B"/>
      <path d="M9 2.5L16 9l-7 6.5L2 9z" fill="#FFDF00"/>
      <circle cx="9" cy="9" r="3" fill="#002776"/>
      <path d="M6.2 8.8c1.6-.5 3.5-.5 5.6.1" stroke="#fff" strokeWidth="0.5" fill="none"/>
    </g>
  </svg>
);
const FlagUS = () => (
  <svg width="18" height="18" viewBox="0 0 18 18" aria-hidden="true">
    <defs><clipPath id="usc"><circle cx="9" cy="9" r="9"/></clipPath></defs>
    <g clipPath="url(#usc)">
      <rect width="18" height="18" fill="#fff"/>
      {[0,2,4,6,8,10,12].map(y=>(<rect key={y} y={y*1.286} width="18" height="1.286" fill="#B22234"/>))}
      <rect width="8" height="9" fill="#3C3B6E"/>
      {Array.from({length:9}).map((_,i)=>(
        <circle key={i} cx={1.2+(i%4)*1.8} cy={1.2+Math.floor(i/4)*2} r="0.3" fill="#fff"/>
      ))}
    </g>
  </svg>
);
const FlagES = () => (
  <svg width="18" height="18" viewBox="0 0 18 18" aria-hidden="true">
    <defs><clipPath id="esc"><circle cx="9" cy="9" r="9"/></clipPath></defs>
    <g clipPath="url(#esc)">
      <rect width="18" height="18" fill="#AA151B"/>
      <rect y="4.5" width="18" height="9" fill="#F1BF00"/>
    </g>
  </svg>
);

const LANGS = [
  { code: 'pt', label: 'Português', short: 'PT', Flag: FlagBR },
  { code: 'en', label: 'English', short: 'EN', Flag: FlagUS },
  { code: 'es', label: 'Español', short: 'ES', Flag: FlagES },
];

const LangSwitcher = ({ inDrawer = false, onPick }) => {
  const [open, setOpen] = React.useState(false);
  const [lang, setLang] = React.useState('pt');
  const ref = React.useRef(null);

  React.useEffect(() => {
    try {
      const saved = localStorage.getItem('mai_lang');
      if (saved && LANGS.find(l => l.code === saved)) setLang(saved);
    } catch (e) {}
  }, []);

  React.useEffect(() => {
    if (!open) return;
    const onDoc = (e) => { if (ref.current && !ref.current.contains(e.target)) setOpen(false); };
    document.addEventListener('mousedown', onDoc);
    return () => document.removeEventListener('mousedown', onDoc);
  }, [open]);

  const pick = (code) => {
    if (code === lang) {
      setOpen(false);
      if (onPick) onPick();
      return;
    }
    setLang(code);
    try { localStorage.setItem('mai_lang', code); } catch (e) {}
    setOpen(false);
    if (onPick) onPick();
    // Reload so all components pick up the new dictionary
    if (typeof window !== 'undefined' && window.MAI_SET_LANG) {
      window.MAI_SET_LANG(code);
    } else if (typeof window !== 'undefined') {
      window.location.reload();
    }
  };

  const current = LANGS.find(l => l.code === lang) || LANGS[0];
  const Cur = current.Flag;

  return (
    <div className={"lang-switch " + (inDrawer ? 'is-drawer ' : '') + (open ? 'is-open' : '')} ref={ref}>
      <button
        type="button"
        className="lang-btn"
        aria-haspopup="listbox"
        aria-expanded={open}
        aria-label={(typeof window !== 'undefined' && window.t ? window.t('cta.idioma') : 'Idioma') + ': ' + current.label}
        onClick={() => setOpen(o => !o)}
      >
        <span className="lang-flag"><Cur /></span>
        <span className="lang-code mono">{current.short}</span>
        <svg className="lang-chev" width="10" height="10" viewBox="0 0 10 10" aria-hidden="true">
          <path d="M2 4l3 3 3-3" stroke="currentColor" strokeWidth="1.4" fill="none" strokeLinecap="round" strokeLinejoin="round"/>
        </svg>
      </button>
      {open ? (
        <ul className="lang-menu" role="listbox">
          {LANGS.map(l => {
            const F = l.Flag;
            const active = l.code === lang;
            return (
              <li key={l.code} role="option" aria-selected={active}>
                <button type="button" className={"lang-opt " + (active ? 'is-active' : '')} onClick={() => pick(l.code)}>
                  <span className="lang-flag"><F /></span>
                  <span className="lang-opt-label">{l.label}</span>
                  <span className="lang-opt-short mono">{l.short}</span>
                </button>
              </li>
            );
          })}
        </ul>
      ) : null}
    </div>
  );
};

const Header = () => {
  const [scrolled, setScrolled] = React.useState(false);
  const [menuOpen, setMenuOpen] = React.useState(false);
  // detecta se a página atual está numa subpasta conhecida (blog/ ou legal/)
  // e prefixa '../' nos paths relativos. Ignora qualquer prefix de servidor.
  const pathInfo = (() => {
    if (typeof window === 'undefined') return { isHome: true, prefix: '' };
    const p = decodeURIComponent(window.location.pathname);
    const segs = p.split('/').filter(Boolean);
    const file = segs[segs.length - 1] || '';
    const parent = segs[segs.length - 2] || '';
    const inSubfolder = parent === 'blog' || parent === 'legal';
    const prefix = inSubfolder ? '../' : '';
    const isHome = !inSubfolder && (
      file === '' || /^(index\.html|Member AI Site\.html)$/i.test(file)
    );
    return { isHome, prefix };
  })();
  const { isHome, prefix } = pathInfo;
  // Brand link: clean URL on home (no #hero pollution); plain index.html elsewhere.
  // The Hero section is at the very top of the page, so scrolling to top is
  // visually identical to scrolling to #hero — but the URL stays clean.
  const homeHref = isHome ? '/' : (prefix + 'index.html');
  const planosHref = prefix + 'planos.html';
  const blogHref = prefix + 'blog.html';
  const suporteHref = prefix + 'suporte.html';
  const homeAnchor = (anchor) => isHome ? anchor : (prefix + 'index.html' + anchor);

  React.useEffect(() => {
    const on = () => setScrolled(window.scrollY > 40);
    on();
    window.addEventListener('scroll', on, { passive: true });
    return () => window.removeEventListener('scroll', on);
  }, []);

  React.useEffect(() => {
    if (menuOpen) {
      document.body.classList.add('menu-open');
    } else {
      document.body.classList.remove('menu-open');
    }
    return () => document.body.classList.remove('menu-open');
  }, [menuOpen]);

  const close = () => setMenuOpen(false);

  // Brand click on the home page: smooth-scroll to top and strip any #hash
  // (e.g. a stale #hero left over from a prior visit or a shared link).
  const goHome = (e) => {
    close();
    if (!isHome) return; // off-home: let the browser navigate to /
    e.preventDefault();
    try { window.scrollTo({ top: 0, behavior: 'smooth' }); }
    catch (err) { window.scrollTo(0, 0); }
    try {
      window.history.replaceState(null, '',
        window.location.pathname + window.location.search);
    } catch (err) {}
  };

  return (
    <React.Fragment>
      <header className={"site-header " + (scrolled ? "is-scrolled" : "") + (menuOpen ? " menu-is-open" : "")}>
        <div className="container header-inner">
          <a className="brand" href={homeHref} onClick={goHome}>
            <img src="https://app.memberai.pro/_next/static/media/actuallogo.304fec7e.png" alt="" className="brand-logo" />
            <span className="brand-word">Member AI</span>
          </a>
          <nav className="nav">
            <a href={planosHref}>{t('nav.planos')}</a>
            <a href={prefix + "casos.html"}>Cases</a>
            <a href={prefix + "integracoes.html"}>Integrações</a>
            <a href={blogHref}>{t('nav.blog')}</a>
            <a href={suporteHref}>{t('nav.suporte')}</a>
          </nav>
          <div className="header-cta">
            <LangSwitcher />
            <a className="link" href="https://app.memberai.pro/login" target="_blank" rel="noopener">{t('cta.entrar')}</a>
            <a className="btn btn-primary btn-sm" href="https://app.memberai.pro/signup" target="_blank" rel="noopener">{t('cta.criar_conta')}</a>
          </div>
          <button
            className="mobile-menu-btn"
            aria-label={menuOpen ? t('cta.menu_close') : t('cta.menu_open')}
            aria-expanded={menuOpen}
            onClick={() => setMenuOpen(!menuOpen)}
          >
            <span className={"mmb-bar mmb-bar-1 " + (menuOpen ? "is-open" : "")} />
            <span className={"mmb-bar mmb-bar-2 " + (menuOpen ? "is-open" : "")} />
            <span className={"mmb-bar mmb-bar-3 " + (menuOpen ? "is-open" : "")} />
          </button>
        </div>
      </header>

      {/* Drawer mobile */}
      <div className={"mobile-drawer " + (menuOpen ? "is-open" : "")} aria-hidden={!menuOpen}>
        <nav className="mobile-drawer-nav">
          <a href={planosHref} onClick={close}>{t('nav.planos')}</a>
          <a href={prefix + "casos.html"} onClick={close}>Cases</a>
          <a href={prefix + "integracoes.html"} onClick={close}>Integrações</a>
          <a href={prefix + "sobre.html"} onClick={close}>Sobre</a>
          <a href={blogHref} onClick={close}>{t('nav.blog')}</a>
          <a href={homeAnchor("#faq")} onClick={close}>{t('nav.faq')}</a>
          <a href={suporteHref} onClick={close}>{t('nav.suporte')}</a>
        </nav>
        <div className="mobile-drawer-cta">
          <LangSwitcher inDrawer onPick={close} />
          <a className="link" href="https://app.memberai.pro/login" target="_blank" rel="noopener" onClick={close}>{t('cta.entrar')}</a>
          <a className="btn btn-primary" href="https://app.memberai.pro/signup" target="_blank" rel="noopener" onClick={close}>
            {t('cta.criar_conta')}
            <svg width="14" height="14" viewBox="0 0 14 14" fill="none"><path d="M2 7h10M8 3l4 4-4 4" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" /></svg>
          </a>
        </div>
      </div>
    </React.Fragment>
  );
};
