/* Aifit Life Platform — main app */
const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{
"purple": "#7C6BA6",
"headingFont": "Shippori Mincho",
"aiColor": "#C2A55E",
"showRail": true
}/*EDITMODE-END*/;
function App() {
const { useState, useEffect } = React;
const D = window.AIFIT;
const [t, setTweak] = useTweaks(TWEAK_DEFAULTS);
const [selected, setSelected] = useState(null);
useEffect(() => {
const r = document.documentElement;
r.style.setProperty("--purple", t.purple);
r.style.setProperty("--purple-mid", `color-mix(in srgb, ${t.purple} 82%, #2f2942)`);
r.style.setProperty("--purple-deep", `color-mix(in srgb, ${t.purple} 62%, #2f2942)`);
}, [t.purple]);
useEffect(() => {
document.documentElement.style.setProperty("--mincho",
`"${t.headingFont}", "Hiragino Mincho ProN", "Yu Mincho", serif`);
}, [t.headingFont]);
useEffect(() => {
const r = document.documentElement;
r.style.setProperty("--gold", t.aiColor);
r.style.setProperty("--gold-deep", `color-mix(in srgb, ${t.aiColor} 62%, #4a3a14)`);
}, [t.aiColor]);
useEffect(() => {
const io = new IntersectionObserver((es) => {
es.forEach((e) => { if (e.isIntersecting) { e.target.classList.add("in"); io.unobserve(e.target); } });
}, { threshold: 0.14 });
document.querySelectorAll(".reveal").forEach((el) => io.observe(el));
return () => io.disconnect();
}, []);
const accents = {};
D.PLATFORM.forEach((p) => { accents[p.key] = p.color; });
return (
{t.showRail && }
setTweak("purple", v)} />
setTweak("aiColor", v)} />
setTweak("headingFont", v)} />
setTweak("showRail", v)} />
);
}
ReactDOM.createRoot(document.getElementById("root")).render();