/* 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 (
);
};
/* 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 });