/* Shared components for the Mammoth-dev site */

const { useState, useEffect, useRef, useMemo } = React;

// ─── Mammoth mascot — uses the official brand PNG ───
function MammothMascot({ size = 120, pose = 'wave', style = {} }) {
  return (
    <img
      src="/brand/mammoth-head.png"
      alt="Mammoth-dev mascot"
      width={size}
      height={size}
      style={{
        display: 'block',
        width: size,
        height: size,
        objectFit: 'contain',
        mixBlendMode: 'multiply',
        ...style,
      }}
    />
  );
}

// ─── Header ───
function Header({ current }) {
  const items = [
    ['Home', '/'],
    ['How It Works', '/how-it-works'],
    ['Pricing', '/pricing'],
    ['Calculator', '/calculator'],
    ['Use Cases', '/use-cases/accountants'],
    ['Learn', '/learn'],
    ['About', '/about'],
  ];
  return (
    <header className="m-header">
      <div className="m-header-inner">
        <a href="/" className="m-logo" style={{textDecoration:'none'}}>
          <MammothMascot size={36} />
          <span>Mammoth-dev</span>
        </a>
        <nav className="m-nav">
          {items.map(([label, href]) => (
            <a key={label} href={href} className={current === label ? 'active' : ''}>{label}</a>
          ))}
        </nav>
        <a href="/book" className="m-btn m-btn-gold">Book a 15-min intro {Ico.arrow(16,'currentColor')}</a>
      </div>
    </header>
  );
}

// ─── CTA Band + Footer ───
function CTABand({ heading = "Ready to stop juggling AI tools?", sub = "15 minutes on a call. No pitch. Just real talk." }) {
  return (
    <section className="m-cta-band">
      <div className="m-container" style={{position:'relative'}}>
        <div style={{display:'flex', justifyContent:'center', marginBottom:16}}>
          <MammothMascot size={88} />
        </div>
        <h2 style={{marginBottom:10}}>{heading}</h2>
        <p style={{fontSize:18, color:'rgba(44,40,36,0.8)', marginBottom:28}}>{sub}</p>
        <div className="m-row" style={{justifyContent:'center'}}>
          <a href="/book" className="m-btn m-btn-russet m-btn-lg">Book a 15-min intro {Ico.arrow(16,'currentColor')}</a>
          <a href="/calculator" className="m-btn m-btn-ghost m-btn-lg" style={{background:'rgba(255,253,249,0.4)', borderColor:'rgba(44,40,36,0.2)'}}>Run the calculator</a>
        </div>
        <p style={{marginTop:18, fontSize:14, color:'rgba(44,40,36,0.75)', display:'inline-flex', gap:18, alignItems:'center', justifyContent:'center', flexWrap:'wrap'}}>
          <span style={{display:'inline-flex', alignItems:'center', gap:6}}>{Ico.check(14,'var(--charcoal)')} Cancel anytime</span>
          <span style={{display:'inline-flex', alignItems:'center', gap:6}}>{Ico.check(14,'var(--charcoal)')} No pitch on the call</span>
          <span style={{display:'inline-flex', alignItems:'center', gap:6}}>{Ico.check(14,'var(--charcoal)')} 15 min max</span>
        </p>
      </div>
    </section>
  );
}

function Footer() {
  return (
    <footer className="m-footer">
      <div className="m-container">
        <div style={{display:'grid', gridTemplateColumns:'1.5fr 1fr 1fr 1fr', gap:40, marginBottom:48}}>
          <div>
            <div className="m-logo" style={{color:'var(--cream)', marginBottom:12}}>
              <MammothMascot size={32} />
              <span>Mammoth-dev</span>
            </div>
            <p style={{color:'var(--mist-2)', fontSize:14, lineHeight:1.6, maxWidth:280}}>
              AI that just works — for small teams who don't have time to figure it out.
            </p>
            <div style={{marginTop:16, display:'flex', gap:12}}>
              <span className="m-tag" style={{background:'rgba(255,253,249,0.1)', color:'var(--mist-2)'}}>32 firms served</span>
              <span className="m-tag" style={{background:'rgba(255,253,249,0.1)', color:'var(--mist-2)'}}>Est. 2024</span>
            </div>
          </div>
          <div>
            <h5>Product</h5>
            <div style={{display:'grid', gap:8}}>
              <a href="/how-it-works">How it works</a>
              <a href="/pricing">Pricing</a>
              <a href="/calculator">ROI Calculator</a>
              <a href="/use-cases/accountants">Use cases</a>
            </div>
          </div>
          <div>
            <h5>Learn</h5>
            <div style={{display:'grid', gap:8}}>
              <a href="/learn">Guides</a>
              <a href="/learn">Videos</a>
              <a href="/learn">Templates</a>
              <a href="/learn">Comparisons</a>
            </div>
          </div>
          <div>
            <h5>Company</h5>
            <div style={{display:'grid', gap:8}}>
              <a href="/about">About</a>
              <a href="/faq">FAQ</a>
              <a href="/book">Book a call</a>
              <a href="mailto:hello@mammoth-dev.com">hello@mammoth-dev.com</a>
            </div>
          </div>
        </div>
        <div style={{borderTop:'1px solid rgba(255,253,249,0.1)', paddingTop:20, display:'flex', justifyContent:'space-between', fontSize:13, color:'var(--mist-2)', opacity:0.7}}>
          <span>© 2026 Mammoth-dev. All rights reserved.</span>
          <span>Privacy · Terms · Sitemap · llms.txt</span>
        </div>
      </div>
    </footer>
  );
}

// ─── Illustration placeholder (for "mammoth illustration" slots) ───
function Illus({ caption, children, height = 320, style = {} }) {
  return (
    <div className="m-illus" style={{height, ...style}}>
      {children}
      <div className="m-illus-caption">{caption}</div>
    </div>
  );
}

// ─── Scroll CTA bar ───
function ScrollCTA() {
  const [visible, setVisible] = useState(false);
  const [dismissed, setDismissed] = useState(false);
  useEffect(() => {
    const on = () => {
      const h = document.documentElement;
      const progress = (h.scrollTop + window.innerHeight) / h.scrollHeight;
      setVisible(progress > 0.5 && progress < 0.95);
    };
    window.addEventListener('scroll', on);
    return () => window.removeEventListener('scroll', on);
  }, []);
  if (dismissed || !visible) return null;
  return (
    <div className="m-scroll-cta">
      <MammothMascot size={28} />
      <span>Worth 15 minutes? No pitch, promise.</span>
      <a href="/book" className="m-btn m-btn-gold" style={{padding:'8px 16px', fontSize:14}}>Book intro</a>
      <button className="close" onClick={() => setDismissed(true)}>×</button>
    </div>
  );
}

// ─── FAQ ───
function FAQ({ items }) {
  return (
    <div style={{display:'grid', gap:12, maxWidth:820, margin:'0 auto'}}>
      {items.map((it, i) => (
        <details key={i} className="m-faq-item">
          <summary>{it.q}</summary>
          <p>{it.a}</p>
        </details>
      ))}
    </div>
  );
}

// ─── Export to window ───
Object.assign(window, {
  MammothMascot, Header, Footer, CTABand, Illus, ScrollCTA, FAQ,
});
