/* =========================================================
M-FLOW — App + Tweaks
========================================================= */
const { useState: useStateApp, useEffect: useEffectApp, useRef: useRefApp } = React;
const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{
"palette": "noir",
"density": "normal",
"heroVariant": "default",
"stoneOnManifesto": true,
"stoneOnContact": true,
"serifAccent": true,
"showWaFloat": true
}/*EDITMODE-END*/;
const CONTACT = {
email: "go@mflowia.cloud",
phone: "+55 11 0000-0000",
};
function App() {
const [tweaks, setTweak] = useTweaks(TWEAK_DEFAULTS);
const contactRef = useRefApp(null);
const servicesRef = useRefApp(null);
// apply palette + density to root
useEffectApp(() => {
document.documentElement.dataset.palette = tweaks.palette;
document.documentElement.dataset.density = tweaks.density;
document.documentElement.dataset.serifAccent = tweaks.serifAccent ? "true" : "false";
// Toggle stone backgrounds via CSS variable
document.documentElement.style.setProperty("--manifesto-stone-opacity", tweaks.stoneOnManifesto ? "1" : "0");
document.documentElement.style.setProperty("--contact-stone-opacity", tweaks.stoneOnContact ? "0.32" : "0");
}, [tweaks]);
const scrollTo = (id) => () => {
const el = document.getElementById(id);
if (el) el.scrollIntoView({ behavior: "smooth", block: "start" });
};
return (
<>
{tweaks.showWaFloat && }
setTweak("palette", v)}
options={[
{ value: "noir", label: "Noir" },
{ value: "graphite", label: "Graphite" },
]}
/>
setTweak("palette", v)}
options={[
{ value: "parchment", label: "Parchment" },
{ value: "ink", label: "Ink" },
]}
/>
setTweak("heroVariant", v)}
options={[
{ value: "default", label: "Tipográfico" },
{ value: "split", label: "Com pedra" },
]}
/>
setTweak("stoneOnManifesto", v)}
/>
setTweak("stoneOnContact", v)}
/>
setTweak("density", v)}
options={[
{ value: "compact", label: "Compacto" },
{ value: "normal", label: "Normal" },
{ value: "spacious", label: "Amplo" },
]}
/>
setTweak("showWaFloat", v)}
/>
>
);
}
ReactDOM.createRoot(document.getElementById("root")).render();