/* Tweaks app for the Tom Walton Urology home page.
Renders ONLY the Tweaks panel; applies values to the existing static page
via CSS custom properties + light DOM edits. Hidden entirely when Tweaks is off. */
const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{
"accent": "Antique Gold",
"headingFont": "Cormorant Garamond",
"radius": 8,
"headline": "East Midlands\nUrologist & Robotic Surgeon",
"heroBrightness": 100,
"showTrustStrip": true
}/*EDITMODE-END*/;
/* Accent ramps — each redefines the gold scale used across the site. */
const ACCENT_RAMPS = {
"Antique Gold": { 700:"#826619",600:"#977824",500:"#b08d4f",400:"#c6a96a",300:"#d8c193",200:"#e7d9b9",50:"#f5efe1" },
"Warm Bronze": { 700:"#7a4f24",600:"#8f5e2c",500:"#a9763f",400:"#c08a52",300:"#d2a679",200:"#e6cdb0",50:"#f6ece1" },
"Petrol Teal": { 700:"#155e63",600:"#1a7077",500:"#2c8a91",400:"#4aa3a9",300:"#82c2c6",200:"#bfe0e2",50:"#e6f3f3" },
"Burgundy": { 700:"#6f2233",600:"#862a3e",500:"#a13b50",400:"#b85a6e",300:"#d08f9d",200:"#e7c5cd",50:"#f7e9ec" }
};
const FONTS = {
"Cormorant Garamond": { stack: '"Cormorant Garamond", Georgia, serif', google: null },
"Playfair Display": { stack: '"Playfair Display", Georgia, serif', google: "Playfair+Display:wght@500;600;700" },
"Lora": { stack: '"Lora", Georgia, serif', google: "Lora:wght@500;600;700" }
};
const loadedFonts = new Set();
function ensureFont(name) {
const f = FONTS[name];
if (!f || !f.google || loadedFonts.has(name)) return;
const link = document.createElement("link");
link.rel = "stylesheet";
link.href = "https://fonts.googleapis.com/css2?family=" + f.google + "&display=swap";
document.head.appendChild(link);
loadedFonts.add(name);
}
function App() {
const [t, setTweak] = useTweaks(TWEAK_DEFAULTS);
React.useEffect(() => {
const root = document.documentElement.style;
const ramp = ACCENT_RAMPS[t.accent] || ACCENT_RAMPS["Antique Gold"];
root.setProperty("--gold-700", ramp[700]);
root.setProperty("--gold-600", ramp[600]);
root.setProperty("--gold-500", ramp[500]);
root.setProperty("--gold-400", ramp[400]);
root.setProperty("--gold-300", ramp[300]);
root.setProperty("--gold-200", ramp[200]);
root.setProperty("--gold-50", ramp[50]);
}, [t.accent]);
React.useEffect(() => {
const f = FONTS[t.headingFont] || FONTS["Cormorant Garamond"];
ensureFont(t.headingFont);
document.documentElement.style.setProperty("--font-display", f.stack);
}, [t.headingFont]);
React.useEffect(() => {
const root = document.documentElement.style;
root.setProperty("--radius-md", t.radius + "px");
root.setProperty("--radius-sm", Math.max(0, t.radius - 3) + "px");
root.setProperty("--radius-lg", (t.radius + 6) + "px");
}, [t.radius]);
React.useEffect(() => {
const el = document.querySelector(".hero__title");
if (el) { el.style.whiteSpace = "pre-line"; el.textContent = t.headline; }
}, [t.headline]);
React.useEffect(() => {
const img = document.querySelector(".hero__bg img");
if (img) img.style.filter = "brightness(" + (t.heroBrightness / 100) + ")";
}, [t.heroBrightness]);
React.useEffect(() => {
const strip = document.querySelector(".trust-strip");
if (strip) strip.style.display = t.showTrustStrip ? "" : "none";
}, [t.showTrustStrip]);
return (
setTweak("accent", v)} />
setTweak("headingFont", v)} />
setTweak("radius", v)} />
setTweak("headline", v)} />
setTweak("heroBrightness", v)} />
setTweak("showTrustStrip", v)} />
);
}
ReactDOM.createRoot(document.getElementById("tweak-root")).render();