// Hero.jsx — thomasgoodman.me const Hero = () => { const [typed, setTyped] = React.useState(""); const full = "$ whoami"; React.useEffect(() => { let i = 0; const t = setInterval(() => { if (i <= full.length) { setTyped(full.slice(0, i)); i++; } else clearInterval(t); }, 80); return () => clearInterval(t); }, []); return (
{/* Content */}
{/* Terminal prompt typewriter */} {/* Name */}

Thomas "Tommy" Goodman

{/* Role subtitle */}
Full-Stack Developer
{/* Location */}
Helensville, Auckland, New Zealand
{/* Tagline */}

Avionics technician turned full-stack developer. 15+ years of safety-critical systems thinking with the Royal New Zealand Air Force, now building reliable web applications.

{/* CTA row */}
{/* Primary: View Resume */} { e.currentTarget.style.background = "var(--color-accent-hover)"; e.currentTarget.style.boxShadow = "var(--shadow-glow)"; }} onMouseLeave={(e) => { e.currentTarget.style.background = "var(--color-accent)"; e.currentTarget.style.boxShadow = "none"; }} > View Resume {/* Secondary: Get in Touch */} { e.currentTarget.style.background = "var(--color-accent-subtle)"; }} onMouseLeave={(e) => { e.currentTarget.style.background = "transparent"; }} > Get in Touch {/* Tertiary: GitHub */} { e.currentTarget.style.color = "var(--color-text-primary)"; }} onMouseLeave={(e) => { e.currentTarget.style.color = "var(--color-text-secondary)"; }} > GitHub
); }; Object.assign(window, { Hero });