/* global React */ const { useEffect, useRef, useState, useCallback } = React; /* IntersectionObserver-based reveal hook */ 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, rootMargin: '0px 0px -10% 0px' }); els.forEach(el => io.observe(el)); return () => io.disconnect(); }, []); } function Eyebrow({ children }) { return {children}; } function SectionHead({ eyebrow, title, subtitle, align }) { return (
{subtitle}
}