// Theorema Tech — Tweaks app
// Exposes: theme variant, logo variant, accent override.
const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{
"theme": "paper",
"logo": "wordmark",
"type": "geist",
"showQED": true
}/*EDITMODE-END*/;
function TweaksApp() {
const [t, setTweak] = useTweaks(TWEAK_DEFAULTS);
// Apply on every change
React.useEffect(() => {
document.documentElement.setAttribute("data-theme", t.theme);
localStorage.setItem("tt_theme", t.theme);
}, [t.theme]);
React.useEffect(() => {
document.documentElement.setAttribute("data-logo", t.logo);
localStorage.setItem("tt_logo", t.logo);
document.querySelectorAll("[data-logo-variant]").forEach((el) => {
el.style.display = el.dataset.logoVariant === t.logo ? "" : "none";
});
}, [t.logo]);
React.useEffect(() => {
const root = document.documentElement;
if (t.type === "geist") {
root.style.setProperty("--font-sans", `"Geist", "Helvetica Neue", Helvetica, Arial, sans-serif`);
} else if (t.type === "space") {
root.style.setProperty("--font-sans", `"Space Grotesk", "Helvetica Neue", sans-serif`);
ensureFont("https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&display=swap");
} else if (t.type === "neueh") {
root.style.setProperty("--font-sans", `"Inter Tight", "Helvetica Neue", sans-serif`);
ensureFont("https://fonts.googleapis.com/css2?family=Inter+Tight:wght@400;500;600;700&display=swap");
}
}, [t.type]);
React.useEffect(() => {
document.querySelectorAll(".qed").forEach((el) => {
el.style.display = t.showQED ? "" : "none";
});
}, [t.showQED]);
return (
setTweak("theme", v)}
/>
setTweak("logo", v)}
/>
setTweak("type", v)}
/>
setTweak("showQED", v)}
/>
);
}
function ensureFont(url) {
if (document.querySelector(`link[href="${url}"]`)) return;
const l = document.createElement("link");
l.rel = "stylesheet";
l.href = url;
document.head.appendChild(l);
}
// Mount
const __twkRoot = document.createElement("div");
document.body.appendChild(__twkRoot);
ReactDOM.createRoot(__twkRoot).render();