// app.jsx — vfrog landing page main app

const { useState: useS, useEffect: useE, useRef: useR } = React;

// H1 variations (Tweaks)
const H1_OPTIONS = {
  default: {
    line1: 'The full physical AI loop.',
    line2: <>Any robot. <em>Any model.</em></>,
  },
  stop: {
    line1: <>Stop building robot infrastructure.</>,
    line2: <em>Start shipping robot skills.</em>,
  },
  six_months: {
    line1: <>Six engineering-months of platform work,</>,
    line2: <>in <em>two weeks</em> of onboarding.</>,
  },
  one_loop: {
    line1: 'One loop for physical AI —',
    line2: <>on <em>any robot</em>, <em>any model</em>.</>,
  },
};

// ─── Nav ─────────────────────────────────────────────────────────────
function Nav() {
  return (
    <nav className="nav">
      <div className="wrap nav-inner">
        <a href="#" className="nav-brand">
          <img src={window.__resources?.logo || "assets/logo.png"} alt="vfrog" />
          <span className="wordmark">vfrog</span>
        </a>
        <div className="nav-links">
          <a href="#loop">Loop</a>
          <a href="#pillars">Pillars</a>
          <a href="#cost">Value</a>
          <a href="#onboarding">Onboarding</a>
          <a href="#faq">FAQ</a>
          <span className="pin">v2026.05</span>
          <a href="https://cal.com/nchamprenault-vfrog/website-inbound" className="nav-cta" target="_blank" rel="noopener noreferrer">Book a call <span className="arrow">→</span></a>
        </div>
      </div>
    </nav>
  );
}

// ─── Hero ────────────────────────────────────────────────────────────
function Hero({ h1Variant }) {
  const variant = H1_OPTIONS[h1Variant] || H1_OPTIONS.default;
  // live tick for the meta line
  const [tick, setTick] = useS(0);
  useE(() => {
    const id = setInterval(() => setTick(t => t + 1), 1000);
    return () => clearInterval(id);
  }, []);
  const now = new Date();
  const ts = now.toISOString().replace('T', ' ').slice(0, 19) + ' UTC';

  return (
    <section className="hero" id="top">
      <div className="hero-bg"></div>
      <div className="hero-bg-overlay"></div>

      <div className="hero-meta">
        <span><b>{ts}</b></span>
        <span>LAT 53.9758° N</span>
        <span>LON 32.1574° E</span>
        <span><b><span className="status-dot">●</span> ONLINE</b></span>
      </div>

      <div className="wrap hero-inner">
        <div className="hero-eyebrow">
          <span className="pulse"></span>
          Physical AI infrastructure for robotics labs
        </div>

        <h1>
          <span className="ln">{variant.line1}</span>
          <span className="ln">{variant.line2}</span>
        </h1>

        <p className="hero-sub">
          Capture, train, evaluate, and deploy robot skills end-to-end — with synthetic data built in and no model lock-in. Built for robotics teams who'd rather ship skills than build infrastructure.
        </p>

        <div className="hero-cta-row">
          <a className="btn btn-primary" href="https://cal.com/nchamprenault-vfrog/website-inbound" target="_blank" rel="noopener noreferrer">Book a discovery call <span className="arrow">→</span></a>
          <a className="btn btn-ghost" href="#loop">See how the loop works <span className="arrow">↓</span></a>
        </div>

        <div className="hero-microcopy">
          <span>Two-week onboarding from call to running environment</span>
          <span className="sep">·</span>
          <span>Works with your robot, your model, your stack</span>
        </div>
      </div>

      <div className="hero-scroll-hint">
        <span>SCROLL</span>
        <span className="line"></span>
        <span>§ 01 LOOP</span>
      </div>
    </section>
  );
}

// ─── App ─────────────────────────────────────────────────────────────
const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{
  "h1Variant": "default",
  "showRoadmap": true,
  "loopTreatment": "flow"
}/*EDITMODE-END*/;

function App() {
  const [t, setTweak] = useTweaks(TWEAK_DEFAULTS);

  // Scroll reveal observer
  useE(() => {
    const els = document.querySelectorAll('.reveal');
    if (!('IntersectionObserver' in window)) {
      els.forEach(el => el.classList.add('in'));
      return;
    }
    const io = new IntersectionObserver((entries) => {
      entries.forEach(e => {
        if (e.isIntersecting) {
          e.target.classList.add('in');
          io.unobserve(e.target);
        }
      });
    }, { threshold: 0.08, rootMargin: '0px 0px -40px 0px' });
    els.forEach(el => io.observe(el));
    return () => io.disconnect();
  }, []);

  return (
    <>
      <Nav />
      <Hero h1Variant={t.h1Variant} />

      <div className="reveal"><LoopSection showRoadmap={t.showRoadmap} treatment={t.loopTreatment} /></div>
      <div className="reveal"><Pillars /></div>
      <div className="reveal"><CostSection /></div>
      <div className="reveal"><OnboardingSection /></div>
      <div className="reveal"><FAQSection /></div>
      <div className="reveal"><FinalCTA /></div>
      <Footer />

      <TweaksPanel>
        <TweakSection label="Hero H1" />
        <TweakRadio label="Variant"
          value={t.h1Variant}
          options={[
            { value: 'default',    label: 'Default loop' },
            { value: 'stop',       label: 'Stop / Start' },
            { value: 'six_months', label: 'Six months' },
            { value: 'one_loop',   label: 'One loop' },
          ]}
          onChange={(v) => setTweak('h1Variant', v)} />

        <TweakSection label="Roadmap" />
        <TweakToggle label="Show 'H2 2026' badges"
          value={t.showRoadmap}
          onChange={(v) => setTweak('showRoadmap', v)} />

        <TweakSection label="Loop diagram" />
        <TweakRadio label="Treatment"
          value={t.loopTreatment}
          options={[
            { value: 'flow',      label: 'Pipeline' },
            { value: 'circle',    label: 'Circular' },
            { value: 'schematic', label: 'ASCII' },
          ]}
          onChange={(v) => setTweak('loopTreatment', v)} />
      </TweaksPanel>
    </>
  );
}

ReactDOM.createRoot(document.getElementById('root')).render(<App />);
