// ui_kits/site/NotFound.jsx — 404 page. dry, a little weird. // Coming-soon copy keyed by route — the three doors lead here intentionally. const SOON_COPY = { '/about': { eyebrow: '→ status: building', big: 'soon.', sub: 'the longer version is being written. resume in the meantime?' }, '/experiments': { eyebrow: '→ status: cooking', big: 'shh.', sub: 'experiments live here. they\'re half-built. come back.' }, '/fun': { eyebrow: '→ status: assembling',big: 'almost.', sub: 'games and toys. nothing here yet. patience.' }, }; const NotFound = ({ setRoute, route }) => { const isSoon = !!SOON_COPY[route]; const copy = SOON_COPY[route] || { eyebrow: '→ status: 404', big: 'lost?', sub: 'so is the page you were looking for.' }; const wrapRef = React.useRef(null); // Subtle text-glitch on hover React.useEffect(() => { const el = wrapRef.current?.querySelector('.nf-big'); if (!el) return; let raf; const tick = () => { const t = performance.now() / 1000; el.style.setProperty('--gx', `${Math.sin(t * 1.7) * 3}px`); el.style.setProperty('--gy', `${Math.cos(t * 2.3) * 2}px`); raf = requestAnimationFrame(tick); }; tick(); return () => cancelAnimationFrame(raf); }, []); return (
{copy.eyebrow}

{copy.big} {copy.big} {copy.big}

{copy.sub}

{!isSoon && (
→ stack trace{`

  Error: page not found
    at Router.resolve (koa.codes:?)
    at you (browser:somewhere)
    at curiosity (good thing, keep it)
`}
)}
{ e.preventDefault(); setRoute('/'); }}> ← go home browse work
); }; window.NotFound = NotFound;