// ============================================================
// MAAC GHAZIABAD — Tweaks panel app
// ------------------------------------------------------------
// A small React app that renders the in-design Tweaks panel and
// applies the chosen options to the (plain HTML) page by setting
// CSS variables / classes on the document. It only changes how the
// page LOOKS — all content stays in index.html.
//
// Color combinations are derived from the MAAC logo identity:
// red + black + white. Each palette is [primary, gradientEnd, deep].
// ============================================================
const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{
"palette": ["#ff2e2e", "#ff5a1a", "#d40f2a"],
"tone": "midnight",
"corners": "rounded",
"displayFont": "Anton",
"animations": true,
"tickerSpeed": 30,
"heroBanner": "https://images.unsplash.com/photo-1492691527719-9d1e07e534b4?w=1920&q=85&auto=format&fit=crop"
}/*EDITMODE-END*/;
// Logo-derived color combinations (all red-forward, per MAAC brand)
const PALETTES = [
["#ff2e2e", "#ff5a1a", "#d40f2a"], // MAAC Red (red → orange)
["#ED1C24", "#ff4d3d", "#b5121a"], // Signature Red (classic logo red)
["#ff1e56", "#ff7a1a", "#d4083f"], // Crimson Heat
["#ff3b30", "#ff2d7e", "#cc1f6a"] // Neon Red / Pink
];
const FONT_MAP = {
"Anton": '"Anton", "Arial Narrow", sans-serif',
"Bebas": '"Bebas Neue", "Arial Narrow", sans-serif',
"Oswald": '"Oswald", "Arial Narrow", sans-serif'
};
// Full-width hero banner options (swap any for your own student/centre photo)
const HERO_BANNERS = {
"Editing Suite": "https://images.unsplash.com/photo-1492691527719-9d1e07e534b4?w=1920&q=85&auto=format&fit=crop",
"Creative Studio": "https://images.unsplash.com/photo-1574717024653-61fd2cf4d44d?w=1920&q=85&auto=format&fit=crop",
"Gaming / Neon": "https://images.unsplash.com/photo-1550745165-9bc0b252726f?w=1920&q=85&auto=format&fit=crop",
"Design Desk": "https://images.unsplash.com/photo-1626785774573-4b799315345d?w=1920&q=85&auto=format&fit=crop"
};
function MaacTweaks() {
const [t, setTweak] = useTweaks(TWEAK_DEFAULTS);
// Apply every tweak to the page whenever something changes
React.useEffect(() => {
const root = document.documentElement;
// --- Brand color combination ---
const [primary, grad, deep] = t.palette;
root.style.setProperty("--red", primary);
root.style.setProperty("--orange", grad);
root.style.setProperty("--red-deep", deep || primary);
root.style.setProperty("--pink", grad);
const hot = `linear-gradient(120deg, ${primary} 0%, ${grad} 100%)`;
root.style.setProperty("--grad-hot", hot);
root.style.setProperty("--grad-pink", hot);
// --- Background tone ---
if (t.tone === "charcoal") {
root.style.setProperty("--ink", "#121214");
root.style.setProperty("--ink-2", "#1a1a1f");
root.style.setProperty("--surface", "#212127");
root.style.setProperty("--surface-2", "#2a2a31");
} else {
root.style.setProperty("--ink", "#08080a");
root.style.setProperty("--ink-2", "#0f0f13");
root.style.setProperty("--surface", "#161619");
root.style.setProperty("--surface-2", "#1f1f25");
}
// --- Corner style ---
const rounded = t.corners === "rounded";
root.style.setProperty("--radius", rounded ? "18px" : "4px");
root.style.setProperty("--radius-sm", rounded ? "12px" : "4px");
// --- Display font ---
root.style.setProperty("--font-display", FONT_MAP[t.displayFont] || FONT_MAP.Anton);
// --- Animations on/off ---
document.body.classList.toggle("no-anim", !t.animations);
// --- Ticker speed ---
document.querySelectorAll(".ticker__track").forEach((el) => {
el.style.animationDuration = t.tickerSpeed + "s";
});
// --- Hero banner image ---
const banner = document.getElementById("heroBanner");
if (banner) banner.style.backgroundImage = `url('${t.heroBanner}')`;
}, [t]);
return (
setTweak("palette", v)}
/>
setTweak("tone", v)}
/>
setTweak("corners", v)}
/>
setTweak("displayFont", v)}
/>
({ label: k, value: HERO_BANNERS[k] }))}
onChange={(v) => setTweak("heroBanner", v)}
/>
setTweak("tickerSpeed", v)}
/>
setTweak("animations", v)}
/>
setTweak("tickerSpeed", v)}
/>
);
}
ReactDOM.createRoot(document.getElementById("tweaks-root")).render();