const { Toast, Button } = window.JabberwockeeDesignSystem_646027; function App() { const [proj, setProj] = React.useState(null); const [contact, setContact] = React.useState(false); const [toast, setToast] = React.useState(null); const n = window.JW_DATA.projects.length; const nav = (id) => { const el = document.getElementById(id); if (!el) return; const y = id === "top" ? 0 : el.getBoundingClientRect().top + window.scrollY - 72; window.scrollTo({ top: y, behavior: "smooth" }); }; React.useEffect(() => { const io = new IntersectionObserver((es) => es.forEach((e) => e.isIntersecting && e.target.classList.add("is-in")), { threshold: 0.15 }); document.querySelectorAll(".jw-section, .jw-logos").forEach((s) => io.observe(s)); return () => io.disconnect(); }, []); return ( <>