/* 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 (
);
}
// ---------- Tree of Life silhouette (echoes logo) ----------
function TreeMark({ size = 36, color = "#b8883f" }) {
return (
);
}
// ---------- 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 (
);
}
// ---------- 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 });