// FGBVA hi-fi shared primitives: logo, nav, chips, icons const FGBVALogo = ({ variant = 'dark', scale = 1 }) => { const navy = variant === 'dark' ? '#0f1d3a' : '#f7f2e4'; const gold = '#b8860b'; const mute = variant === 'dark' ? '#5b6780' : 'rgba(247,242,228,0.55)'; return (
FOUNDERS & GROWTH BUSINESSES
OF VIRGINIA ALLIANCE
A trade association for
Virginia founder-operators
); }; const TopNav = ({ ctaCopy }) => { const [scrolled, setScrolled] = React.useState(false); React.useEffect(() => { const on = () => setScrolled(window.scrollY > 20); window.addEventListener('scroll', on); return () => window.removeEventListener('scroll', on); }, []); return ( ); }; // Reveal helper — adds .in when scrolled into view const Reveal = ({ children, delay = 0, as: Tag = 'div', style = {}, className = '', ...rest }) => { const ref = React.useRef(null); React.useEffect(() => { const el = ref.current; if (!el) return; const io = new IntersectionObserver((entries) => { entries.forEach(e => { if (e.isIntersecting) { setTimeout(() => el.classList.add('in'), delay); io.unobserve(el); } }); }, { threshold: 0.12 }); io.observe(el); return () => io.disconnect(); }, [delay]); return {children}; }; window.FGBVALogo = FGBVALogo; window.TopNav = TopNav; window.Reveal = Reveal;