const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{
"accent": "gold",
"glow": true,
"mesh": true
}/*EDITMODE-END*/;
function Tweaks({ open, onClose, state, setState }) {
if (!open) return null;
const swatches = [
{ id:"navy", c:"#1B3A6B" },
{ id:"gold", c:"#C9A84C" },
{ id:"green", c:"#4d9379" },
{ id:"graphite", c:"#6c7a8e" },
{ id:"offwhite", c:"#ecead8" },
];
const update = (k, v) => {
const next = { ...state, [k]: v };
setState(next);
window.parent.postMessage({type:"__edit_mode_set_keys", edits:{[k]:v}}, "*");
};
return (
Tweaks
Cor de acento
{swatches.map(s => (
update("accent", s.id)}/>
))}
Glow no CTA final
update("glow", !state.glow)}>
Mesh no Hero
update("mesh", !state.mesh)}>
);
}
function App() {
const [state, setState] = React.useState(TWEAK_DEFAULTS);
const [tweaksOpen, setTweaksOpen] = React.useState(false);
React.useEffect(() => {
const onMsg = (e) => {
if (!e.data) return;
if (e.data.type === "__activate_edit_mode") setTweaksOpen(true);
if (e.data.type === "__deactivate_edit_mode") setTweaksOpen(false);
};
window.addEventListener("message", onMsg);
window.parent.postMessage({type:"__edit_mode_available"}, "*");
return () => window.removeEventListener("message", onMsg);
}, []);
React.useEffect(() => {
document.documentElement.setAttribute("data-accent", state.accent);
}, [state.accent]);
const closeTweaks = () => {
setTweaksOpen(false);
window.parent.postMessage({type:"__edit_mode_dismissed"}, "*");
};
return (
<>
>
);
}
ReactDOM.createRoot(document.getElementById("root")).render();
requestAnimationFrame(() => {
const sp = document.getElementById("boot-splash");
if (!sp) return;
setTimeout(() => {
sp.classList.add("done");
setTimeout(() => sp.remove(), 700);
}, 260);
});