/* global React */ const { useMemo } = React; // ---------- Light rays / shimmer (hero bg) ---------- function LightRays() { const rays = useMemo(() => { const r = []; for (let i = 0; i < 14; i++) { r.push({ angle: (i * 360 / 14) + Math.random() * 8, length: 30 + Math.random() * 25, opacity: 0.05 + Math.random() * 0.08, }); } return r; }, []); const specks = useMemo(() => { const s = []; for (let i = 0; i < 35; i++) { s.push({ cx: Math.random() * 100, cy: Math.random() * 100, r: Math.random() * 0.18 + 0.05, o: Math.random() * 0.35 + 0.15, }); } return s; }, []); return ( {rays.map((r, i) => ( ))} {specks.map((s, i) => ( ))} ); } // ---------- Tree of Life silhouette (echoes logo) ---------- function TreeMark({ size = 36, color = "#b8883f" }) { return ( {/* canopy */} {/* trunk */} {/* roots */} ); } // ---------- Sun ornament (warm gold) ---------- function SunOrnament({ size = 180, color = "#d8b56a", opacity = 0.55 }) { const rays = []; for (let i = 0; i < 32; i++) { const angle = (i * 360) / 32; const long = i % 2 === 0; rays.push( ); } return ( {rays} ); } // ---------- Moon phases divider ---------- function MoonDivider({ color = "#b8883f" }) { return ( ); } // ---------- Service icon set (warm gold) ---------- const ServiceIcon = ({ kind, size = 28, color = "#b8883f" }) => { const common = { width: size, height: size, viewBox: "0 0 32 32", fill: "none", stroke: color, strokeWidth: 0.8 }; if (kind === "eye") return ( ); if (kind === "angel") return ( ); if (kind === "number") return ( ); if (kind === "astro") return ( ); if (kind === "radio") return ( ); if (kind === "infinity") return ( ); if (kind === "crystal") return ( ); if (kind === "reiki") return ( ); return null; }; // ---------- Modality icon ---------- function ModalityIcon({ kind, color = "#f4e3b8" }) { const size = 44; const common = { width: size, height: size, viewBox: "0 0 48 48", fill: "none", stroke: color, strokeWidth: 0.9 }; if (kind === "in-person") return ( ); if (kind === "online") return ( ); return null; } Object.assign(window, { LightRays, TreeMark, SunOrnament, MoonDivider, ServiceIcon, ModalityIcon });