/* global React */
const { useState, useEffect } = React;

// ============ FLOURISH SVG ============
const Flourish = ({ className = '', style = {} }) => (
  <svg viewBox="0 0 400 50" className={className} style={style} xmlns="http://www.w3.org/2000/svg" fill="none">
    <defs>
      <linearGradient id={`gf-${Math.random().toString(36).slice(2,7)}`} x1="0" y1="0" x2="1" y2="0">
        <stop offset="0%" stopColor="#b08a3e" stopOpacity="0.2" />
        <stop offset="20%" stopColor="#c9a961" />
        <stop offset="50%" stopColor="#f5e9c8" />
        <stop offset="80%" stopColor="#c9a961" />
        <stop offset="100%" stopColor="#b08a3e" stopOpacity="0.2" />
      </linearGradient>
      <linearGradient id="goldFlourishShared" x1="0" y1="0" x2="1" y2="0">
        <stop offset="0%" stopColor="#b08a3e" stopOpacity="0.2" />
        <stop offset="20%" stopColor="#c9a961" />
        <stop offset="50%" stopColor="#f5e9c8" />
        <stop offset="80%" stopColor="#c9a961" />
        <stop offset="100%" stopColor="#b08a3e" stopOpacity="0.2" />
      </linearGradient>
    </defs>
    <path d="M200 18 L206 25 L200 32 L194 25 Z" fill="url(#goldFlourishShared)" />
    <path d="M200 25 Q170 5 140 25 Q110 45 80 25 Q60 12 40 22"
      stroke="url(#goldFlourishShared)" strokeWidth="1.4" fill="none" strokeLinecap="round" />
    <circle cx="40" cy="22" r="4" stroke="url(#goldFlourishShared)" strokeWidth="1.2" fill="none" />
    <circle cx="32" cy="22" r="2" stroke="url(#goldFlourishShared)" strokeWidth="0.8" fill="none" />
    <path d="M200 25 Q230 5 260 25 Q290 45 320 25 Q340 12 360 22"
      stroke="url(#goldFlourishShared)" strokeWidth="1.4" fill="none" strokeLinecap="round" />
    <circle cx="360" cy="22" r="4" stroke="url(#goldFlourishShared)" strokeWidth="1.2" fill="none" />
    <circle cx="368" cy="22" r="2" stroke="url(#goldFlourishShared)" strokeWidth="0.8" fill="none" />
  </svg>
);

const NAV_PAGES = [
  { href: 'index.html', label: 'Início', match: ['index.html', ''] },
  { href: 'sobre.html', label: 'Sobre', match: ['sobre.html'] },
  { href: 'servicos.html', label: 'Serviços', match: ['servicos.html'] },
  { href: 'blog.html', label: 'Blog', match: ['blog.html'] },
  { href: 'orcamento.html', label: 'Orçamento', match: ['orcamento.html'] },
];

function currentPage() {
  const path = window.location.pathname.split('/').pop() || 'index.html';
  return decodeURIComponent(path);
}

const Nav = ({ onWhats }) => {
  const [scrolled, setScrolled] = useState(false);
  const [menuOpen, setMenuOpen] = useState(false);
  const here = currentPage();
  useEffect(() => {
    const onScroll = () => setScrolled(window.scrollY > 40);
    window.addEventListener('scroll', onScroll);
    return () => window.removeEventListener('scroll', onScroll);
  }, []);
  return (
    <>
      <nav className={`nav ${scrolled ? 'scrolled' : ''}`}>
        <div className="container nav-inner">
          <a href="index.html" className="nav-logo">
            <img src="assets/logo-maos-ungidas.jpg" alt="Mãos Ungidas Buffet e Eventos" className="nav-logo-img" />
          </a>
          <ul className="nav-links">
            {NAV_PAGES.map(p => (
              <li key={p.href}>
                <a href={p.href} className={p.match.includes(here) ? 'active' : ''}>{p.label}</a>
              </li>
            ))}
          </ul>
          <a href="#" onClick={(e) => { e.preventDefault(); onWhats && onWhats(); }} className="nav-cta">WhatsApp</a>
          <button className="nav-burger" onClick={() => setMenuOpen(true)} aria-label="Menu">
            <span />
          </button>
        </div>
      </nav>
      <div className={`mobile-menu ${menuOpen ? 'open' : ''}`}>
        <button className="mobile-menu-close" onClick={() => setMenuOpen(false)}>✕</button>
        <ul>
          {NAV_PAGES.map((p, i) => (
            <li key={p.href}>
              <a href={p.href}><em>0{i+1}</em>{p.label}</a>
            </li>
          ))}
          <li>
            <a href="#" onClick={(e) => { e.preventDefault(); setMenuOpen(false); onWhats && onWhats(); }}>
              <em>→</em>WhatsApp
            </a>
          </li>
        </ul>
      </div>
    </>
  );
};

// ============ FOOTER ============
const Footer = () => (
  <footer className="footer">
    <div className="container">
      <div className="footer-grid">
        <div className="footer-brand">
          <img src="assets/logo-maos-ungidas.jpg" alt="Mãos Ungidas Buffet e Eventos" className="footer-logo-img" />
          <div className="footer-brand-tag">Buffet · Eventos · Todo Estado de São Paulo</div>
          <p>Cada prato carrega uma intenção, cada evento, uma história. Deixe-nos fazer parte da sua.</p>
        </div>
        <div className="footer-col">
          <h4>Navegação</h4>
          <ul>
            {NAV_PAGES.map(p => (
              <li key={p.href}><a href={p.href}>{p.label}</a></li>
            ))}
          </ul>
        </div>
        <div className="footer-col">
          <h4>Serviços</h4>
          <ul>
            <li><a href="servicos.html">Casamentos</a></li>
            <li><a href="servicos.html">Aniversários</a></li>
            <li><a href="servicos.html">Corporativos</a></li>
            <li><a href="servicos.html">Religiosos</a></li>
            <li><a href="servicos.html">Bar Completo com Barman</a></li>
            <li><a href="servicos.html">Café Colonial</a></li>
          </ul>
        </div>
        <div className="footer-col">
          <h4>Contato</h4>
          <ul>
            <li><a href="https://wa.me/5511969219101" target="_blank" rel="noreferrer">11 96921-9101</a></li>
            <li><a href="mailto:buffetmaosungidas@outlook.com">buffetmaosungidas@outlook.com</a></li>
            <li><a href="https://instagram.com/_buffetmaos.ungidas_" target="_blank" rel="noreferrer">@_buffetmaos.ungidas_</a></li>
            <li><a href="orcamento.html">Solicitar Orçamento</a></li>
          </ul>
        </div>
      </div>

      <div className="footer-regions">
        <div className="footer-regions-label">Regiões Atendidas</div>
        <div className="footer-regions-list">
          {[
            'São Paulo (Capital)', 'Carapicuíba', 'Barueri', 'Alphaville', 'Osasco',
            'Cotia', 'Santana de Parnaíba', 'Jandira', 'Itapevi', 'Pirapora do Bom Jesus',
            'Santos', 'São Vicente', 'Guarujá', 'Praia Grande', 'Cubatão', 'Itanhaém',
            'Todo o Estado de SP'
          ].map(city => (
            <span key={city} className="region-tag">{city}</span>
          ))}
        </div>
      </div>

      <div className="footer-payment">
        <div className="footer-payment-label">Formas de Pagamento</div>
        <div className="footer-payment-icons">
          <span className="pay-badge">PIX</span>
          <span className="pay-badge">Visa</span>
          <span className="pay-badge">Mastercard</span>
          <span className="pay-badge">Elo</span>
          <span className="pay-badge">Hipercard</span>
          <span className="pay-badge">Amex</span>
          <span className="pay-badge">PagSeguro</span>
        </div>
      </div>

      <div className="footer-bottom">
        <div>© 2026 Mãos Ungidas Buffet e Eventos · Todo Estado de São Paulo</div>
        <div>buffetmaosungidas@outlook.com</div>
      </div>
    </div>
  </footer>
);

// ============ FLOATING WHATSAPP ============
const WhatsFab = ({ onClick }) => (
  <a href="#" onClick={(e) => { e.preventDefault(); onClick && onClick(); }} className="wa-fab" aria-label="WhatsApp">
    <svg width="28" height="28" viewBox="0 0 24 24" fill="currentColor">
      <path d="M20.5 3.5A11.9 11.9 0 0 0 12 0C5.4 0 0 5.4 0 12c0 2.1.6 4.2 1.6 6L0 24l6.2-1.6c1.7.9 3.7 1.4 5.7 1.4h.1C18.6 23.8 24 18.4 24 11.9c0-3.2-1.2-6.2-3.5-8.4zM12 21.8h-.1c-1.8 0-3.6-.5-5.1-1.4l-.4-.2-3.7 1 1-3.6-.2-.4c-1-1.6-1.5-3.4-1.5-5.3 0-5.4 4.5-9.9 9.9-9.9 2.6 0 5.1 1 7 2.9s2.9 4.4 2.9 7c0 5.5-4.4 9.9-9.8 9.9zm5.5-7.4c-.3-.1-1.7-.8-2-.9-.3-.1-.5-.1-.7.1-.2.3-.7.9-.9 1.1-.2.2-.3.2-.6.1-1.7-.8-2.8-1.5-3.9-3.4-.3-.5.3-.5.8-1.5.1-.2.1-.3 0-.5 0-.1-.7-1.6-.9-2.2-.2-.6-.5-.5-.7-.5h-.6c-.2 0-.5.1-.8.4-.3.3-1 1-1 2.5s1.1 2.9 1.2 3.1c.2.2 2.1 3.2 5.1 4.5.7.3 1.3.5 1.7.6.7.2 1.4.2 1.9.1.6-.1 1.7-.7 2-1.4.2-.6.2-1.2.2-1.4-.1-.1-.3-.2-.5-.3z"/>
    </svg>
  </a>
);

// ============ PAGE HERO (for inner pages) ============
const PageHero = ({ breadcrumb, title, lede }) => (
  <section className="page-hero">
    <div className="page-hero-bg" />
    <div className="container">
      <div className="breadcrumb">
        <a href="index.html">Início</a>
        <span className="sep">/</span>
        {breadcrumb}
      </div>
      <Flourish style={{ width: 320, margin: '0 auto 28px', display: 'block' }} />
      <h1>{title}</h1>
      <p className="lede" style={{ margin: '0 auto' }}>{lede}</p>
    </div>
  </section>
);

// ============ REVEAL ON SCROLL HOOK ============
function useReveal() {
  useEffect(() => {
    const els = document.querySelectorAll('.reveal');
    const obs = new IntersectionObserver((entries) => {
      entries.forEach(e => { if (e.isIntersecting) e.target.classList.add('visible'); });
    }, { threshold: 0.05, rootMargin: '0px 0px -20px 0px' });
    els.forEach(el => obs.observe(el));
    return () => obs.disconnect();
  }, []);
}

// ============ openWhats ============
function openWhats(num = '5511969219101', msg = 'Olá! Gostaria de solicitar um orçamento para um evento.') {
  window.open(`https://wa.me/${num}?text=${encodeURIComponent(msg)}`, '_blank');
}

Object.assign(window, {
  Flourish, Nav, Footer, WhatsFab, PageHero, useReveal, openWhats, NAV_PAGES
});
