// Shared icon set + small atoms used across components const Icon = { Shield: (p) => ( ), Scale: (p) => ( ), Doc: (p) => ( ), Check: (p) => ( ), Book: (p) => ( ), Gavel: (p) => ( ), Cog: (p) => ( ), WhatsApp: (p) => ( ), Instagram: (p) => ( ), LinkedIn: (p) => ( ), Mail: (p) => ( ), Arrow: (p) => , }; // Reveal-on-scroll wrapper function Reveal({ children, delay = 0, as: As = "div", 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("is-in"), delay); io.unobserve(el); } }); }, { threshold: 0.12 }); io.observe(el); return () => io.disconnect(); }, [delay]); return {children}; } const WHATSAPP_LINK = "#"; // Resolves an image: uses the bundled blob URL (window.__resources) when the // page is a standalone export, otherwise falls back to the relative asset path // used by the modular site/ source. const ASSET = (id, path) => (typeof window !== "undefined" && window.__resources && window.__resources[id]) || path; Object.assign(window, { Icon, Reveal, WHATSAPP_LINK, ASSET });