/* ============================================================
   Gaung AI — Shared Components
   ============================================================ */

const { useState, useEffect, useMemo, useRef } = React;

// ---- Language context ------------------------------------
const LangCtx = React.createContext({ lang: 'id', setLang: () => {} });

function t(entry, lang) {
  if (!entry) return '';
  if (typeof entry === 'string') return entry;
  return entry[lang] || entry.id || '';
}

// ---- Logo ------------------------------------------------
function Logo() {
  return (
    <a href="#home" className="logo" aria-label="Gaung.ai" style={{display:'flex',alignItems:'center',gap:8}}>
      <img src="assets/logo-mark.png" alt="" style={{width:30,height:30,objectFit:'contain'}}/>
      <span className="logo-mark">GAUNG</span>
      <span className="logo-dot">.ai</span>
    </a>
  );
}

// ---- Nav -------------------------------------------------
function Nav({ route, setRoute }) {
  const { lang, setLang } = React.useContext(LangCtx);
  const C = window.GAUNG_CONTENT.nav;
  const [scrolled, setScrolled] = useState(false);
  const [mobileOpen, setMobileOpen] = useState(false);

  useEffect(() => {
    const onScroll = () => setScrolled(window.scrollY > 6);
    window.addEventListener('scroll', onScroll);
    return () => window.removeEventListener('scroll', onScroll);
  }, []);

  const links = [
    ['home', C.home],
    ['how', C.how],
    ['services', C.services],
    ['cases', C.cases],
    ['pricing', C.pricing],
    ['blog', C.blog],
    ['contact', C.contact],
  ];

  return (
    <nav className={`nav ${scrolled ? 'scrolled' : ''}`}>
      <div className="nav-inner">
        <Logo />
        <div className="nav-links">
          {links.map(([k, entry]) => (
            <a
              key={k}
              href={`#${k}`}
              className={`nav-link ${route === k ? 'active' : ''}`}
              onClick={(e) => { e.preventDefault(); setRoute(k); }}
            >
              {t(entry, lang)}
            </a>
          ))}
        </div>
        <div className="nav-right">
          <div className="lang-toggle" role="group" aria-label="Language">
            <button className={lang === 'id' ? 'active' : ''} onClick={() => setLang('id')}>ID</button>
            <button className={lang === 'en' ? 'active' : ''} onClick={() => setLang('en')}>EN</button>
          </div>
          <a href="dashboard.html" className="nav-link" style={{padding:'8px 14px'}}>
            {t(C.login, lang)}
          </a>
          <a href="#contact" className="btn btn-primary" onClick={(e) => { e.preventDefault(); setRoute('contact'); }}>
            {t(C.demo, lang)}
          </a>
        </div>
      </div>
    </nav>
  );
}

// ---- Footer ----------------------------------------------
function Footer({ setRoute }) {
  const { lang } = React.useContext(LangCtx);
  const F = window.GAUNG_CONTENT.footer;
  const N = window.GAUNG_CONTENT.nav;

  return (
    <footer className="footer">
      <div className="wrap">
        <div className="footer-cols">
          <div>
            <div style={{display:'flex',alignItems:'center',gap:2,marginBottom:14}}>
              <span style={{fontWeight:700,fontSize:22,letterSpacing:'-0.03em',background:'var(--grad)',WebkitBackgroundClip:'text',backgroundClip:'text',color:'transparent'}}>GAUNG</span>
              <span style={{color:'#fff',fontWeight:600,fontSize:22,letterSpacing:'-0.03em'}}>.ai</span>
            </div>
            <p style={{fontSize:14,color:'oklch(70% 0.008 70)',maxWidth:280,lineHeight:1.5}}>{t(F.tag, lang)}</p>
            <p style={{fontSize:13,color:'oklch(55% 0.008 70)',marginTop:24}}>gaungelevasidigital@gmail.com</p>
            <p style={{fontSize:13,color:'oklch(55% 0.008 70)',marginTop:4}}>{t({id:'Jakarta, Indonesia',en:'Jakarta, Indonesia'}, lang)}</p>
          </div>
          <div>
            <h5>{t(F.product, lang)}</h5>
            <ul>
              <li><a href="#how" onClick={(e)=>{e.preventDefault();setRoute('how')}}>{t(N.how, lang)}</a></li>
              <li><a href="#services" onClick={(e)=>{e.preventDefault();setRoute('services')}}>{t(N.services, lang)}</a></li>
              <li><a href="#pricing" onClick={(e)=>{e.preventDefault();setRoute('pricing')}}>{t(N.pricing, lang)}</a></li>
            </ul>
          </div>
          <div>
            <h5>{t(F.company, lang)}</h5>
            <ul>
              <li><a href="#cases" onClick={(e)=>{e.preventDefault();setRoute('cases')}}>{t(N.cases, lang)}</a></li>
              <li><a href="#contact" onClick={(e)=>{e.preventDefault();setRoute('contact')}}>{t(N.contact, lang)}</a></li>
              <li><a href="#">{t({id:'Karir',en:'Careers'}, lang)}</a></li>
            </ul>
          </div>
          <div>
            <h5>{t(F.resources, lang)}</h5>
            <ul>
              <li><a href="#blog" onClick={(e)=>{e.preventDefault();setRoute('blog')}}>{t(N.blog, lang)}</a></li>
              <li><a href="#">{t({id:'Playbook',en:'Playbooks'}, lang)}</a></li>
              <li><a href="#">{t({id:'Status',en:'Status'}, lang)}</a></li>
            </ul>
          </div>
          <div>
            <h5>{t(F.legal, lang)}</h5>
            <ul>
              <li><a href="#">{t({id:'Kebijakan Privasi',en:'Privacy'}, lang)}</a></li>
              <li><a href="#">{t({id:'Syarat Layanan',en:'Terms'}, lang)}</a></li>
              <li><a href="#">{t({id:'DPA',en:'DPA'}, lang)}</a></li>
            </ul>
          </div>
        </div>
        <div className="footer-bottom">
          <div>{t(F.rights, lang)}</div>
          <div>app.gaung.app</div>
        </div>
      </div>
    </footer>
  );
}

// ---- Placeholder image -----------------------------------
function Placeholder({ label, ratio = '4 / 3', style }) {
  return (
    <div className="placeholder" style={{aspectRatio: ratio, ...style}}>
      <span>{label}</span>
    </div>
  );
}

// ---- Hero (with variants) --------------------------------
function Hero({ variant, setRoute }) {
  const { lang } = React.useContext(LangCtx);
  const H = window.GAUNG_CONTENT.home;

  const headlines = {
    A: (
      <h1 className="h-display reveal">
        {t(H.heroA1, lang)}<br/>
        <span className="grad">{t(H.heroA2, lang)}</span>{' '}
        <span className="serif">{t(H.heroA3, lang)}</span>
      </h1>
    ),
    B: (
      <h1 className="h-display reveal">
        {t(H.heroB1, lang)}<br/>
        <span className="serif">{t(H.heroB2, lang)}</span>{' '}
        {t(H.heroB3, lang)}
      </h1>
    ),
    C: (
      <h1 className="h-display reveal">
        <span className="serif">{t(H.heroC1, lang)}</span>{' '}
        {t(H.heroC2, lang)}<br/>
        <span className="grad">{t(H.heroC3, lang)}</span>
      </h1>
    ),
  };

  return (
    <section className="hero">
      <div className="wrap">
        <div className="hero-badge reveal">
          <span className="hero-badge-pill">{t({id:'BARU',en:'NEW'}, lang)}</span>
          <span>{t(H.badge, lang)}</span>
        </div>
        <div style={{maxWidth: 960}}>
          {headlines[variant] || headlines.A}
        </div>
        <p className="lead mt-6 reveal reveal-1">{t(H.heroSub, lang)}</p>
        <div className="hero-cta-row reveal reveal-2">
          <a href="#contact" className="btn btn-grad" onClick={(e)=>{e.preventDefault();setRoute('contact')}}>
            {t(H.ctaPrimary, lang)} <span aria-hidden>→</span>
          </a>
          <a href="#how" className="btn btn-ghost" onClick={(e)=>{e.preventDefault();setRoute('how')}}>
            {t(H.ctaSecondary, lang)}
          </a>
        </div>
        <div className="hero-sub-row reveal reveal-3">
          <span>
            <svg width="14" height="14" viewBox="0 0 14 14" fill="none"><circle cx="7" cy="7" r="6" stroke="#ea008c" strokeWidth="1.2"/><path d="M4 7l2 2 4-4" stroke="#ea008c" strokeWidth="1.4" fill="none"/></svg>
            {t(H.subHero1, lang)}
          </span>
          <span>
            <svg width="14" height="14" viewBox="0 0 14 14" fill="none"><circle cx="7" cy="7" r="6" stroke="#ea008c" strokeWidth="1.2"/><path d="M4 7l2 2 4-4" stroke="#ea008c" strokeWidth="1.4" fill="none"/></svg>
            {t(H.subHero2, lang)}
          </span>
          <span>
            <svg width="14" height="14" viewBox="0 0 14 14" fill="none"><circle cx="7" cy="7" r="6" stroke="#ea008c" strokeWidth="1.2"/><path d="M4 7l2 2 4-4" stroke="#ea008c" strokeWidth="1.4" fill="none"/></svg>
            {t(H.subHero3, lang)}
          </span>
        </div>

        {/* Hero visual - dashboard mock */}
        <div className="reveal reveal-4" style={{marginTop: 72}}>
          <HeroDashMock />
        </div>
      </div>
    </section>
  );
}

// ---- Hero dashboard mock --------------------------------
function HeroDashMock() {
  const { lang } = React.useContext(LangCtx);
  return (
    <div style={{
      background:'var(--dark)', color:'var(--dark-ink)',
      border:'1px solid var(--dark-line)', borderRadius:16,
      padding: 20, position:'relative', overflow:'hidden',
      boxShadow:'0 40px 80px -20px rgba(234, 0, 140, 0.18), 0 20px 40px -10px rgba(0,0,0,0.2)'
    }}>
      {/* top chrome */}
      <div style={{display:'flex',alignItems:'center',gap:10,paddingBottom:14,borderBottom:'1px solid var(--dark-line)'}}>
        <div style={{display:'flex',gap:6}}>
          <span style={{width:10,height:10,borderRadius:99,background:'#ff6b6b'}}/>
          <span style={{width:10,height:10,borderRadius:99,background:'#ffd166'}}/>
          <span style={{width:10,height:10,borderRadius:99,background:'#51cf66'}}/>
        </div>
        <div style={{fontFamily:'var(--mono)', fontSize:11, color:'oklch(65% 0.008 70)', marginLeft:8}}>app.gaung.app/dashboard</div>
        <div style={{marginLeft:'auto', display:'flex', gap:8, alignItems:'center'}}>
          <span style={{fontSize:10, padding:'3px 8px', background:'var(--grad)', color:'#fff', borderRadius:99, fontWeight:600}}>LIVE</span>
          <span style={{fontSize:11, color:'oklch(70% 0.008 70)'}}>{t({id:'Sinkron 12 dtk lalu', en:'Synced 12s ago'}, lang)}</span>
        </div>
      </div>

      {/* KPI row */}
      <div className="dash-kpi" style={{display:'grid',gap:12,marginTop:20}}>
        {[
          { l: t({id:'Lead masuk', en:'Leads in'}, lang), v:'2,847', d:'+12.4%' },
          { l: t({id:'Balasan WA', en:'WA replies'}, lang), v:'968', d:'+38%' },
          { l: t({id:'Meeting ter-booking', en:'Meetings booked'}, lang), v:'142', d:'+24%' },
          { l: t({id:'Pipeline value', en:'Pipeline value'}, lang), v:'IDR 4.2B', d:'+19%' },
        ].map((k,i) => (
          <div key={i} style={{background:'var(--dark-2)',borderRadius:10,padding:'14px 16px',border:'1px solid var(--dark-line)'}}>
            <div style={{fontSize:10,color:'oklch(65% 0.008 70)',textTransform:'uppercase',letterSpacing:'.08em',fontWeight:600}}>{k.l}</div>
            <div style={{fontSize:26,fontWeight:500,letterSpacing:'-0.02em',marginTop:4}}>{k.v}</div>
            <div style={{fontSize:11,color:'#51cf66',marginTop:2}}>↑ {k.d}</div>
          </div>
        ))}
      </div>

      {/* chart zone */}
      <div className="dash-chart-grid" style={{display:'grid',gap:12,marginTop:12}}>
        <div style={{background:'var(--dark-2)',borderRadius:10,padding:18,border:'1px solid var(--dark-line)',minHeight:180}}>
          <div style={{display:'flex',justifyContent:'space-between',alignItems:'flex-start',marginBottom:16}}>
            <div>
              <div style={{fontSize:13,fontWeight:500}}>{t({id:'Lead flow 30 hari', en:'Lead flow, 30 days'}, lang)}</div>
              <div style={{fontSize:11,color:'oklch(65% 0.008 70)',marginTop:2}}>{t({id:'WhatsApp + Email', en:'WhatsApp + Email'}, lang)}</div>
            </div>
            <div style={{display:'flex',gap:8,fontSize:10}}>
              <span style={{display:'flex',alignItems:'center',gap:4,color:'oklch(70% 0.008 70)'}}>
                <span style={{width:8,height:8,borderRadius:2,background:'#ea008c'}}/>WA
              </span>
              <span style={{display:'flex',alignItems:'center',gap:4,color:'oklch(70% 0.008 70)'}}>
                <span style={{width:8,height:8,borderRadius:2,background:'#ff8a10'}}/>Email
              </span>
            </div>
          </div>
          <svg viewBox="0 0 400 120" width="100%" height="120" preserveAspectRatio="none">
            <defs>
              <linearGradient id="hgm" x1="0" x2="0" y1="0" y2="1">
                <stop offset="0" stopColor="#ea008c" stopOpacity="0.35"/>
                <stop offset="1" stopColor="#ea008c" stopOpacity="0"/>
              </linearGradient>
              <linearGradient id="hgo" x1="0" x2="0" y1="0" y2="1">
                <stop offset="0" stopColor="#ff8a10" stopOpacity="0.3"/>
                <stop offset="1" stopColor="#ff8a10" stopOpacity="0"/>
              </linearGradient>
            </defs>
            <path d="M0,90 C40,80 60,60 100,55 C140,50 160,70 200,50 C240,30 260,40 300,25 C340,10 360,20 400,10 L400,120 L0,120 Z" fill="url(#hgm)"/>
            <path d="M0,90 C40,80 60,60 100,55 C140,50 160,70 200,50 C240,30 260,40 300,25 C340,10 360,20 400,10" stroke="#ea008c" strokeWidth="1.6" fill="none"/>
            <path d="M0,100 C40,95 80,90 120,80 C160,70 200,85 240,70 C280,55 320,65 360,50 C380,45 400,48 400,48 L400,120 L0,120 Z" fill="url(#hgo)"/>
            <path d="M0,100 C40,95 80,90 120,80 C160,70 200,85 240,70 C280,55 320,65 360,50 C380,45 400,48 400,48" stroke="#ff8a10" strokeWidth="1.6" fill="none"/>
          </svg>
        </div>

        {/* Live conversation feed */}
        <div style={{background:'var(--dark-2)',borderRadius:10,padding:18,border:'1px solid var(--dark-line)'}}>
          <div style={{fontSize:13,fontWeight:500,marginBottom:12}}>{t({id:'Conversation Engine', en:'Conversation Engine'}, lang)}</div>
          {[
            { n:'Budi S.', msg: t({id:'Berapa harga paket enterprise?', en:'Price for enterprise tier?'}, lang), tag:'hot' },
            { n:'Rina K.', msg: t({id:'Bisa demo minggu ini?', en:'Can we demo this week?'}, lang), tag:'hot' },
            { n:'PT Merdeka', msg: t({id:'Kirim proposal', en:'Send proposal'}, lang), tag:'warm' },
          ].map((c,i)=> (
            <div key={i} style={{display:'flex',gap:10,padding:'8px 0',borderTop:i?'1px solid var(--dark-line)':'none'}}>
              <div style={{width:28,height:28,borderRadius:99,background:'var(--grad)',color:'#fff',display:'flex',alignItems:'center',justifyContent:'center',fontSize:11,fontWeight:600,flexShrink:0}}>
                {c.n[0]}
              </div>
              <div style={{flex:1,minWidth:0}}>
                <div style={{fontSize:12,fontWeight:500,display:'flex',justifyContent:'space-between'}}>
                  <span>{c.n}</span>
                  <span style={{fontSize:9,padding:'1px 6px',borderRadius:4,background: c.tag==='hot' ? 'oklch(30% 0.1 30)' : 'oklch(30% 0.08 80)', color: c.tag==='hot' ? '#ff8a8a' : '#ffcc88', textTransform:'uppercase',letterSpacing:'.08em',fontWeight:600}}>{c.tag}</span>
                </div>
                <div style={{fontSize:11,color:'oklch(65% 0.008 70)',marginTop:2,whiteSpace:'nowrap',overflow:'hidden',textOverflow:'ellipsis'}}>{c.msg}</div>
              </div>
            </div>
          ))}
        </div>
      </div>
    </div>
  );
}

Object.assign(window, { LangCtx, t, Logo, Nav, Footer, Placeholder, Hero, HeroDashMock });
