// Main app — composes everything
const { useState, useEffect } = React;

const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{
  "theme": "dark",
  "accentHue": 220,
  "density": "compact",
  "hexLayout": "linear",
  "heroPitch": 0
}/*EDITMODE-END*/;

function App() {
  const [tweaks, setTweak] = window.useTweaks(TWEAK_DEFAULTS);
  const R = window.RESUME;

  // Apply theme + accent + density to <html>
  useEffect(() => {
    document.documentElement.setAttribute("data-theme", tweaks.theme);
    document.documentElement.setAttribute("data-density", tweaks.density);
    document.documentElement.style.setProperty("--accent-h", tweaks.accentHue);
  }, [tweaks.theme, tweaks.accentHue, tweaks.density]);

  const toggleTheme = () => setTweak("theme", tweaks.theme === "dark" ? "light" : "dark");

  const [activeJob, setActiveJob] = useState(0);

  return (
    <>
      <div className="bg-grid" />

      {/* NAV */}
      <nav className="nav">
        <div className="nav-inner">
          <div className="nav-brand">
            <span className="dot" />
            <span>trent.bakow / ai platform</span>
          </div>
          <div className="nav-links">
            <a href="#built">built</a>
            <a href="#capabilities">capabilities</a>
            <a href="#impact">impact</a>
            <a href="#aws">aws</a>
            <a href="#career">career</a>
            <a href="#contact">contact</a>
          </div>
          <div className="nav-actions">
            <button className="btn icon-btn" onClick={toggleTheme} title="Toggle theme">
              {tweaks.theme === "dark" ? "☾" : "☀"}
            </button>
            <a className="btn" href="Trent-Bakow-Resume.pdf" download>↓ resume.pdf</a>
            <a className="btn btn-primary" href={`mailto:${R.email}`}>get in touch</a>
          </div>
        </div>
      </nav>

      <main className="shell">
        {/* HERO */}
        <section className="hero">
          <div className="hero-grid">
            <div>
              <div className="hero-meta">
                <span className="pip" />
                <span>online · {R.location}</span>
                <span style={{color:"var(--line-2)"}}>—</span>
                <span>v.2026.04</span>
              </div>
              <h1>
                Trent Bakow.
                <span className="role">{R.role} · 6+ yrs</span>
              </h1>
              <p className="hero-pitch">{R.pitches[tweaks.heroPitch] || R.pitches[0]}</p>
              <div className="hero-cta">
                <a className="btn btn-primary" href="#contact">→ start a conversation</a>
                <a className="btn" href="Trent-Bakow-Resume.pdf" download>↓ resume.pdf</a>
                <a className="btn" href={`https://github.com/${R.github}`} target="_blank">github / {R.github}</a>
              </div>
            </div>

            <div className="id-card">
              <div className="id-card-head">
                <span>~/identity.json</span>
                <span className="dots"><span/><span/><span/></span>
              </div>
              <div className="id-card-body">
                <div className="id-row"><span className="k">role</span><span className="v accent">eng_manager · ai_platform</span></div>
                <div className="id-row"><span className="k">cloud</span><span className="v">aws · gcp · azure</span></div>
                <div className="id-row"><span className="k">since</span><span className="v">2019</span></div>
                <div className="id-row"><span className="k">based</span><span className="v">utah, us</span></div>
                <div className="id-row"><span className="k">focus</span><span className="v">ai systems · platform eng · team leadership</span></div>
              </div>
            </div>
          </div>
        </section>

        {/* BUILT */}
        <section className="section" id="built" data-screen-label="built">
          <div className="section-head">
            <div>
              <div className="section-num mono">[ 01 / BUILT ]</div>
              <h2 className="section-title">What I've built.</h2>
            </div>
            <div className="section-sub">
              Production systems. Independent products.<br/>And one hackathon win.
            </div>
          </div>
          <div className="projects-grid">
            {R.projects.map((p, i) => <ProjectCard key={i} p={p} />)}
          </div>
        </section>

        {/* CAPABILITIES */}
        <section className="section" id="capabilities" data-screen-label="capabilities">
          <div className="section-head">
            <div>
              <div className="section-num mono">[ 02 / CAPABILITIES ]</div>
              <h2 className="section-title">Capabilities.</h2>
            </div>
            <div className="section-sub">
              Full stack from model to metal.
            </div>
          </div>

          <div className="stack-grid">
            {Object.entries(R.stack).map(([cat, items]) => (
              <div className="stack-cat" key={cat}>
                <div className="stack-name mono">{cat}</div>
                <div className="stack-list">
                  {items.map(it => <div className="stack-item" key={it}>{it}</div>)}
                </div>
              </div>
            ))}
          </div>
        </section>

        {/* IMPACT */}
        <section className="section" id="impact" data-screen-label="impact">
          <div className="section-head">
            <div>
              <div className="section-num mono">[ 03 / IMPACT ]</div>
              <h2 className="section-title">Shipped impact.</h2>
            </div>
            <div className="section-sub">
              Hover any metric for the full story.
            </div>
          </div>
          <div className="metrics">
            {R.metrics.map((m, i) => <MetricCell key={i} m={m} />)}
          </div>
        </section>

        {/* AWS HEX */}
        <section className="section" id="aws" data-screen-label="aws">
          <div className="section-head">
            <div>
              <div className="section-num mono">[ 04 / AWS ]</div>
              <h2 className="section-title">Services I run in production.</h2>
            </div>
            <div className="section-sub">
              Hover any cell for how I've used it.
            </div>
          </div>
          <window.HexGrid services={R.awsServices} layout={tweaks.hexLayout} />
        </section>

        {/* CAREER */}
        <section className="section" id="career" data-screen-label="career">
          <div className="section-head">
            <div>
              <div className="section-num mono">[ 05 / CAREER ]</div>
              <h2 className="section-title">Career.</h2>
            </div>
            <div className="section-sub">
              Pick a role to inspect. Each bullet is a delivered outcome.
            </div>
          </div>

          <div className="timeline-tabs">
            {R.timeline.map((t, i) => (
              <button
                key={i}
                className={"timeline-tab " + (i === activeJob ? "active" : "")}
                onClick={() => setActiveJob(i)}
              >
                <div className="tab-year mono">{t.year}</div>
                <div className="tab-company">{t.company}</div>
                <div className="tab-title">{t.title}</div>
              </button>
            ))}
          </div>

          <div className="timeline-body">
            <div className="tl-bullets">
              {R.timeline[activeJob].bullets.map((b, i) => (
                <div className="tl-bullet" key={i}>
                  <div className="tl-bullet-metric">{b.metric}</div>
                  <div className="tl-bullet-text">{b.text}</div>
                </div>
              ))}
            </div>
          </div>
        </section>

        {/* FOUNDATIONS */}
        <section className="section" id="education" data-screen-label="education">
          <div className="section-head">
            <div>
              <div className="section-num mono">[ 06 / FOUNDATIONS ]</div>
              <h2 className="section-title">Foundations.</h2>
            </div>
            <div className="section-sub">
              Formal education + active certifications.
            </div>
          </div>

          <div className="foundations">
            {R.education.map((e, i) => (
              <FoundationHex
                key={"edu-" + i}
                kind="edu"
                top="B.S."
                title="IT"
                caption="B.S. Information Technology"
                captionMeta="Utah Valley University · Network Admin & Security"
              />
            ))}
            {R.certifications.map((c, i) => (
              <FoundationHex
                key={"cert-" + i}
                kind="cert"
                img={c.img}
                title={c.title}
                caption="AWS Solutions Architect"
                captionMeta="Associate · Amazon Web Services"
                href={c.url}
              />
            ))}
          </div>
        </section>
      </main>

      {/* FOOTER / CONTACT */}
      <footer className="footer" id="contact" data-screen-label="contact">
        <div className="shell">
          <div className="section-num mono" style={{marginBottom: 24}}>[ 06 / CONTACT ]</div>
          <div className="contact-grid">
            <h2 className="contact-pitch">
              Building AI into your platform. Scaling the team doing it. <span>That's the intersection I live in — let's talk.</span>
            </h2>
            <div className="contact-list">
              <div className="row"><span className="k">email</span><span className="v"><a href={`mailto:${R.email}`}>{R.email}</a></span></div>
              <div className="row"><span className="k">github</span><span className="v"><a href={`https://github.com/${R.github}`} target="_blank">github.com/{R.github}</a></span></div>
              <div className="row"><span className="k">linkedin</span><span className="v"><a href={R.linkedin} target="_blank">linkedin →</a></span></div>
            </div>
          </div>

          <div className="foot-meta">
            <div><span className="pip"/>system online · last deploy 2026.04.28</div>
            <div>built by trent · single page · zero deps beyond react</div>
          </div>
        </div>
      </footer>

      <Tweaks tweaks={tweaks} setTweak={setTweak} />
    </>
  );
}

function FoundationHex({ kind, img, top, title, sub, caption, captionMeta, href }) {
  const inner = (
    <div className={"fhex fhex-" + kind}>
      {kind === "cert" && img ? (
        <img src={img} alt={title} className="fhex-img" />
      ) : (
        <>
          <svg className="fhex-bg" viewBox="0 0 100 115.47" preserveAspectRatio="none" aria-hidden="true">
            <polygon points="50,0 100,28.87 100,86.6 50,115.47 0,86.6 0,28.87" />
          </svg>
          <div className="fhex-content">
            {top && <div className="fhex-top mono">{top}</div>}
            <div className="fhex-title">{title}</div>
            {sub && <div className="fhex-sub mono">{sub}</div>}
          </div>
        </>
      )}
    </div>
  );
  const wrapInner = (
    <>
      {inner}
      {caption && (
        <div className="fhex-caption">
          <div className="fhex-caption-title">{caption}</div>
          {captionMeta && <div className="fhex-caption-meta mono">{captionMeta}</div>}
        </div>
      )}
    </>
  );
  if (href) {
    return <a className="fhex-wrap" href={href} target="_blank" rel="noreferrer">{wrapInner}</a>;
  }
  return <div className="fhex-wrap">{wrapInner}</div>;
}

function ProjectCard({ p }) {
  return (
    <div className="project-card">
      <div className="project-header">
        <div className="project-name">{p.name}</div>
        <div className="project-badge mono">{p.badge}</div>
      </div>
      <div className="project-desc">{p.desc}</div>
      <div className="project-tags">
        {p.tags.map(t => <span key={t} className="project-tag">{t}</span>)}
      </div>
    </div>
  );
}

function MetricCell({ m }) {
  const match = m.value.match(/^([+\-$~]?)(.+?)$/);
  const pre = match ? match[1] : "";
  const rest = match ? match[2] : m.value;
  return (
    <div className="metric">
      <div className="metric-num mono">{pre && <span className="pre">{pre}</span>}{rest}</div>
      <div className="metric-label mono">{m.label}</div>
      <div className="metric-detail">{m.detail}</div>
    </div>
  );
}

function Tweaks({ tweaks, setTweak }) {
  const { TweaksPanel, TweakSection, TweakRadio, TweakSlider, TweakSelect } = window;
  if (!TweaksPanel) return null;

  return (
    <TweaksPanel>
      <TweakSection label="Theme">
        <TweakRadio
          label="Mode"
          value={tweaks.theme}
          onChange={(v) => setTweak("theme", v)}
          options={[{value:"dark", label:"Dark"}, {value:"light", label:"Light"}]}
        />
        <TweakSlider
          label="Accent hue"
          value={tweaks.accentHue}
          min={0} max={360} step={5}
          unit="°"
          onChange={(v) => setTweak("accentHue", v)}
        />
        <TweakRadio
          label="Density"
          value={tweaks.density}
          onChange={(v) => setTweak("density", v)}
          options={[{value:"compact", label:"Compact"}, {value:"default", label:"Default"}, {value:"spacious", label:"Spacious"}]}
        />
      </TweakSection>

      <TweakSection label="Layout">
        <TweakRadio
          label="AWS hex"
          value={tweaks.hexLayout}
          onChange={(v) => setTweak("hexLayout", v)}
          options={[{value:"honey", label:"Honey"}, {value:"diamond", label:"Diamond"}, {value:"linear", label:"Linear"}]}
        />
        <TweakSelect
          label="Hero pitch"
          value={String(tweaks.heroPitch)}
          onChange={(v) => setTweak("heroPitch", Number(v))}
          options={window.RESUME.pitches.map((p, i) => ({value: String(i), label: `Pitch ${i+1}`}))}
        />
      </TweakSection>
    </TweaksPanel>
  );
}

const root = ReactDOM.createRoot(document.getElementById("app"));
root.render(<App />);
