/* app.jsx — composición + Tweaks */
const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{
"accent": "#0d57a8",
"fontPair": "archivo",
"animIntensity": 1,
"heroTitle": "Dra. María Eugenia Terán.",
"heroRole": ""
}/*EDITMODE-END*/;
const FONT_PAIRS = {
archivo: { display: '"Archivo", Helvetica, sans-serif', body: '"Manrope", Helvetica, sans-serif' },
grotesk: { display: '"Space Grotesk", Helvetica, sans-serif', body: '"Manrope", Helvetica, sans-serif' },
helvetica:{ display: '"Helvetica Neue", Helvetica, Arial, sans-serif', body: '"Helvetica Neue", Helvetica, Arial, sans-serif' },
plex: { display: '"IBM Plex Sans", Helvetica, sans-serif', body: '"IBM Plex Sans", Helvetica, sans-serif' },
};
function accentBright(hex) {
// lighten the accent for the "bright" variable
try {
const c = hex.replace("#", "");
const r = parseInt(c.slice(0, 2), 16), g = parseInt(c.slice(2, 4), 16), b = parseInt(c.slice(4, 6), 16);
const mix = (x) => Math.round(x + (255 - x) * 0.28);
return `rgb(${mix(r)}, ${mix(g)}, ${mix(b)})`;
} catch (e) { return hex; }
}
function accentSoft(hex) {
try {
const c = hex.replace("#", "");
const r = parseInt(c.slice(0, 2), 16), g = parseInt(c.slice(2, 4), 16), b = parseInt(c.slice(4, 6), 16);
return `rgba(${r}, ${g}, ${b}, 0.10)`;
} catch (e) { return "#e8f0fb"; }
}
function App() {
const [t, setTweak] = useTweaks(TWEAK_DEFAULTS);
useReveal();
// apply tweaks to :root
React.useEffect(() => {
const r = document.documentElement.style;
r.setProperty("--accent", t.accent);
r.setProperty("--accent-bright", accentBright(t.accent));
r.setProperty("--accent-soft", accentSoft(t.accent));
const fp = FONT_PAIRS[t.fontPair] || FONT_PAIRS.archivo;
r.setProperty("--font-display", fp.display);
r.setProperty("--font-body", fp.body);
r.setProperty("--anim-scale", String(t.animIntensity));
}, [t.accent, t.fontPair, t.animIntensity]);
return (
setTweak("accent", v)}
/>
setTweak("fontPair", v)}
/>
setTweak("animIntensity", v)}
/>
setTweak("heroTitle", v)}
/>
setTweak("heroRole", v)}
/>
);
}
ReactDOM.createRoot(document.getElementById("root")).render();