// hero.jsx — 3 hero variations for Ultra 3D Brasil
const { useState, useEffect, useRef } = React;

function Words({ text, base = 0 }) {
  return text.split(" ").map((w, i) => (
    <span key={i} className="word" style={{ animationDelay: (base + i * 0.07) + "s" }}>{w}&nbsp;</span>
  ));
}

function Headline({ text }) {
  // split on "/" -> part after is the gold italic accent
  const [main, accent] = text.split("/").map(s => s.trim());
  const mainWords = main.split(" ").length;
  return (
    <h1 className="serif reveal-word">
      <Words text={main} />
      {accent && <span className="italic-accent"><Words text={accent} base={mainWords * 0.07 + 0.05} /></span>}
    </h1>
  );
}

function HeroPill() {
  return (
    <div className="hero-pill fade-up">
      <span className="dot" style={{ color: "var(--blue)" }}><Logo3D /></span>
      Impressão 3D multicolor · <b>Brasil</b>
    </div>
  );
}

function HeroActions() {
  return (
    <div className="hero-actions fade-up" style={{ transitionDelay: ".15s" }}>
      <a className="btn btn-primary" href={WHATSAPP} target="_blank" rel="noopener">
        Pedir orçamento no WhatsApp <span className="arrow">→</span>
      </a>
      <a className="link-arrow" href="#catalogo">Ver catálogo <span className="arrow">→</span></a>
    </div>
  );
}

function HeroStats() {
  const stats = [
    { n: "4", l: "cores na mesma peça" },
    { n: "48h", l: "prazo médio do mockup" },
    { n: "+50", l: "modelos no catálogo" },
  ];
  return (
    <div className="hero-stats fade-up" style={{ transitionDelay: ".25s" }}>
      {stats.map((s, i) => (
        <div className="stat" key={i}>
          <div className="n">{s.n}</div>
          <div className="l">{s.l}</div>
        </div>
      ))}
    </div>
  );
}

function HeroCopy({ headline }) {
  return (
    <div className="hero-copy">
      <HeroPill />
      <Headline text={headline} />
      <p className="lead fade-up" style={{ transitionDelay: ".1s" }}>
        Bonecos, colecionáveis e chaveiros dos seus personagens favoritos — God of War, Star Wars e muito mais.
        Impressos em 3D com acabamento à mão e atendimento direto com quem produz.
      </p>
      <HeroActions />
      <HeroStats />
    </div>
  );
}

function PrintFigure() {
  const ref = useRef(null);
  useEffect(() => {
    const el = ref.current;
    if (!el) return;
    const t1 = setTimeout(() => el.classList.add("go"), 500);
    const t2 = setTimeout(() => el.classList.add("done"), 500 + 2700);
    return () => { clearTimeout(t1); clearTimeout(t2); };
  }, []);
  return (
    <div className="print-stage" ref={ref}>
      <div className="print-bed"></div>
      <div className="print-piece">
        <image-slot id="hero-print" src="uploads/3d5.jpg" placeholder="Arraste a foto da sua peça" shape="rounded" radius="14"></image-slot>
        <div className="layer-lines"></div>
      </div>
      <div className="printhead">
        <div className="gantry"></div>
        <div className="nozzle"></div>
      </div>
      <div className="chip chip-1"><span className="mk" style={{ color: "var(--blue)" }}><Logo3D /></span> Feito à mão</div>
      <div className="chip chip-2">
        <span className="swatches"><i style={{ background: "#3a6b3a" }}></i><i style={{ background: "#c9a86a" }}></i><i style={{ background: "#333389" }}></i></span>
        Troca de cor automática
      </div>
    </div>
  );
}

function HeroPrint({ headline }) {
  return (
    <div className="wrap">
      <div className="hero-split">
        <HeroCopy headline={headline} />
        <div className="fade-up" style={{ transitionDelay: ".2s" }}><PrintFigure /></div>
      </div>
    </div>
  );
}

function Turntable() {
  return (
    <div className="turntable fade-up" style={{ transitionDelay: ".2s" }}>
      <div className="tt-scene">
        <div className="tt-glow"></div>
        <div className="tt-ring"></div>
        <div className="tt-disc"></div>
        <div className="tt-piece">
          <image-slot id="hero-pedestal" src="uploads/3d1.jpg" placeholder="Arraste a foto da peça" shape="rounded" radius="16"></image-slot>
        </div>
        <span className="tt-spark" style={{ top: "18%", left: "20%" }}></span>
        <span className="tt-spark" style={{ top: "30%", right: "14%", width: 5, height: 5 }}></span>
        <span className="tt-spark" style={{ bottom: "30%", left: "12%", width: 5, height: 5 }}></span>
      </div>
    </div>
  );
}

function HeroPedestal({ headline }) {
  return (
    <div className="wrap hero-centered">
      <div className="hero-pill fade-up" style={{ margin: "0 auto 28px" }}>
        <span className="dot" style={{ color: "var(--blue)" }}><Logo3D /></span>
        Impressão 3D multicolor · <b>Brasil</b>
      </div>
      <Headline text={headline} />
      <p className="lead fade-up" style={{ transitionDelay: ".1s" }}>
        Bonecos, colecionáveis e chaveiros dos seus personagens favoritos — impressos em 3D
        com acabamento à mão e atendimento direto com quem produz.
      </p>
      <HeroActions />
      <Turntable />
    </div>
  );
}

function HeroType({ headline }) {
  const [main, accent] = headline.split("/").map(s => s.trim());
  return (
    <div className="wrap hero-type">
      <div className="hero-glow g1"></div>
      <div className="hero-glow g2"></div>
      <div className="hero-glow g3"></div>
      <div className="hero-pill fade-up" style={{ margin: "0 auto 28px" }}>
        <span className="dot" style={{ color: "var(--blue)" }}><Logo3D /></span>
        Impressão 3D multicolor · <b>Brasil</b>
      </div>
      <div className="big reveal-word">
        <Words text={main} />
        {accent && <span className="sub serif"><Words text={accent} base={0.4} /></span>}
      </div>
      <p className="lead fade-up" style={{ transitionDelay: ".15s", maxWidth: "32em" }}>
        Personagens de games, mascotes de time, bonecos e chaveiros — impressos em 3D
        com acabamento à mão e atendimento direto com quem produz.
      </p>
      <HeroActions />
      <div className="floaters">
        <div className="floater f1"><image-slot id="hero-float-1" src="uploads/3d7.jpg" placeholder="Peça 1"></image-slot></div>
        <div className="floater f2"><image-slot id="hero-float-2" src="uploads/3d12.jpg" placeholder="Peça 2"></image-slot></div>
      </div>
    </div>
  );
}

function Hero({ variant, headline }) {
  const ref = useRef(null);
  useEffect(() => {
    const el = ref.current;
    if (!el) return;
    const tm = setTimeout(() => el.classList.add("in"), 80);
    return () => clearTimeout(tm);
  }, [variant]);
  const headlines = {
    impressao: headline || "Personagens que saem da tela / e ganham forma.",
    pedestal: headline || "Colecionáveis que merecem / um pedestal.",
    tipografico: headline || "Ultra 3D / suas ideias, impressas.",
  };
  const h = headline || headlines[variant];
  return (
    <section className={"hero hero-" + variant} ref={ref} id="inicio">
      {variant === "impressao" && <HeroPrint headline={h} />}
      {variant === "pedestal" && <HeroPedestal headline={h} />}
      {variant === "tipografico" && <HeroType headline={h} />}
    </section>
  );
}

Object.assign(window, { Hero });
