/* global React */ /* Inline lucide-style icons (stroke, 24 grid) */ const Icon = ({ name, size = 20, strokeWidth = 1.5, ...props }) => { const paths = { lock: <>, heart: , clover: <>, droplet: <>, shield: <>, unlink: <>, coins: <>, sun: <>, quote: , check: , arrowRight: <>, menu: <>, x: <>, phone: , mail: <>, mapPin: <>, clock: <>, eyeOff: <>, messageCircle: , }; return ( {paths[name]} ); }; /* scroll reveal hook */ function useReveal() { React.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.15 }); els.forEach(el => io.observe(el)); return () => io.disconnect(); }, []); } Object.assign(window, { Icon, useReveal });