/* global React */
// Reusable section components

const { useEffect, useRef, useState } = React;

// Reveal-on-scroll wrapper using IntersectionObserver
window.Reveal = function Reveal({ children, delay = 0, as: As = "div", className = "", style = {} }) {
  const ref = useRef(null);
  const [shown, setShown] = useState(false);
  useEffect(() => {
    if (!ref.current) return;
    const io = new IntersectionObserver(
      (entries) => {
        entries.forEach((e) => {
          if (e.isIntersecting) {
            setTimeout(() => setShown(true), delay);
            io.disconnect();
          }
        });
      },
      { threshold: 0.12, rootMargin: "0px 0px -10% 0px" }
    );
    io.observe(ref.current);
    return () => io.disconnect();
  }, [delay]);
  return React.createElement(
    As,
    { ref, className: `reveal ${shown ? "in" : ""} ${className}`, style },
    children
  );
};

// SectionHeader — mono label + numbered index + title
window.SectionHeader = function SectionHeader({ idx, label, title, kicker }) {
  return React.createElement(
    "div",
    { className: "section-header" },
    React.createElement(
      "div",
      null,
      React.createElement("div", { className: "mono-label", style: { marginBottom: 16 } },
        React.createElement("span", { className: "dot" }),
        label
      ),
      React.createElement("h2", null, title),
      kicker && React.createElement("p", {
        style: { color: "var(--ink-soft)", marginTop: 16, maxWidth: "52ch", fontSize: 16, lineHeight: 1.55 }
      }, kicker)
    ),
    React.createElement("div", { className: "idx" }, idx)
  );
};

// ArrowIcon
window.Arrow = function Arrow({ size = 14 }) {
  return React.createElement(
    "svg",
    { width: size, height: size, viewBox: "0 0 16 16", fill: "none", className: "arrow" },
    React.createElement("path", {
      d: "M3 8h10M9 4l4 4-4 4",
      stroke: "currentColor", strokeWidth: 1.4, strokeLinecap: "round", strokeLinejoin: "round"
    })
  );
};

// Cursor moved to motion.jsx (4 styles: off/aurora/spotlight/comet)
