/* Tweaks panel for the Gustavo Ferreira site.
Loads after tweaks-panel.jsx (which exports TweaksPanel + useTweaks + control primitives to window). */
(function(){
const { useEffect } = React;
const { TweaksPanel, useTweaks, TweakSection, TweakRadio, TweakSelect } = window;
function GFTweaks(){
// Initialise from whatever the page's inline DEFAULTS script already applied
// BEFORE React mounted — this preserves each page's own direction lock and
// density instead of clobbering them with a single global default.
const rootEl = document.documentElement;
const initDir = rootEl.getAttribute("data-dir") || "sereno";
const initDensityVal = parseFloat(
getComputedStyle(rootEl).getPropertyValue("--density")
) || 1;
const initDensidade = initDensityVal < 0.95 ? "compacto" : "arejado";
const [t, setTweak] = useTweaks({
direcao: initDir,
densidade: initDensidade,
});
const firstDensity = React.useRef(true);
// Apply visual direction via root attribute
useEffect(() => {
document.documentElement.setAttribute("data-dir", t.direcao);
}, [t.direcao]);
// Skip the first run so the page keeps its own bespoke density on load;
// only react to explicit user toggles afterwards.
useEffect(() => {
if (firstDensity.current) { firstDensity.current = false; return; }
document.documentElement.style.setProperty(
"--density",
t.densidade === "compacto" ? "0.85" : "1"
);
}, [t.densidade]);
return (
setTweak("direcao", v)}
options={[
{ value: "sereno", label: "Sereno — off-white + serifa" },
{ value: "mono", label: "Mono — carvão + sans técnica" },
{ value: "editorial", label: "Editorial — areia + serifa" },
]}
/>
setTweak("densidade", v)}
options={[
{ value: "arejado", label: "Arejado" },
{ value: "compacto", label: "Compacto" },
]}
/>
);
}
const root = ReactDOM.createRoot(document.getElementById("tweaks-root"));
root.render();
})();