import { useState, useEffect, useRef } from 'react'; import GadgetGrid from './GadgetGrid'; import { isWebGLAvailable } from '../lib/webgl-detect'; export default function Hero() { const [webgl, setWebgl] = useState(true); const [visible, setVisible] = useState(false); const containerRef = useRef(null); useEffect(() => { setWebgl(isWebGLAvailable()); // Trigger entrance animation after mount requestAnimationFrame(() => setVisible(true)); }, []); return (
{/* ThreeJS Background */} {webgl ? ( ) : (
)} {/* Scan line overlay for fallback and subtle depth */} {!webgl && (
)} {/* Dark overlay for text readability */}
{/* Content */}
{/* Status indicator */}
SYSTEMS ONLINE
{/* App icon */} Gadget Code {/* Tagline */}

Self-Hosted Agentic Engineering

{/* Subtext */}

The platform where AI agents and humans build software together — on your infrastructure, under your control.

{/* CTAs */} {/* Scroll indicator */}
SCROLL
); }