// Shared building blocks const { useEffect, useRef, useState, useMemo } = React; const Section = ({ id, eyebrow, title, sub, children, className = '', titleClass = '' }) => (
{(eyebrow || title || sub) && (
{eyebrow &&
{eyebrow}
} {title &&

{title}

} {sub &&

{sub}

}
)} {children}
); const Eyebrow = ({ children, dot = true }) => (
{dot && } {children}
); // Brand swirl mark (the "e" from the logo, abstracted) const SwirlMark = ({ size = 28, animate = true }) => ( ); // Use-on-scroll reveal function useReveal() { useEffect(() => { const els = document.querySelectorAll('.reveal'); const io = new IntersectionObserver((entries) => { entries.forEach(e => { if (e.isIntersecting) { e.target.classList.add('in'); io.unobserve(e.target); } }); }, { threshold: 0.12 }); els.forEach(el => io.observe(el)); return () => io.disconnect(); }); } window.Section = Section; window.Eyebrow = Eyebrow; window.SwirlMark = SwirlMark; window.useReveal = useReveal;