/* Main App — Deals on Wheels */
const { useState: useStateA, useEffect: useEffectA, useCallback: useCallbackA } = React;
function App() {
// Tweak defaults — accent + theme intensity + density
const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{
"accent": "gold",
"darkLevel": "noir",
"displayFont": "Cormorant Infant",
"showStockBanner": true
}/*EDITMODE-END*/;
const [t, setTweak] = useTweaks(TWEAK_DEFAULTS);
// Routing
const [route, setRoute] = useStateA({ name: "home", data: null });
const navigate = useCallbackA((name, data = null) => {
setRoute({ name, data });
window.scrollTo({ top: 0, behavior: "instant" });
}, []);
// Apply accent live
useEffectA(() => {
const root = document.documentElement;
const accents = {
gold: ["#C4A24A", "#8E732F", "#D9BC73"],
signal: ["#FF4605", "#B53400", "#FF7D49"],
platinum: ["#D9D2C0", "#8A8676", "#EFE9DA"],
};
const [g, deep, soft] = accents[t.accent] || accents.gold;
root.style.setProperty("--gold", g);
root.style.setProperty("--gold-deep", deep);
root.style.setProperty("--gold-soft", soft);
}, [t.accent]);
useEffectA(() => {
const root = document.documentElement;
if (t.darkLevel === "midnight") {
root.style.setProperty("--noir", "#040508");
root.style.setProperty("--ink", "#0C0E12");
root.style.setProperty("--ink-2", "#11141A");
} else if (t.darkLevel === "graphite") {
root.style.setProperty("--noir", "#16181C");
root.style.setProperty("--ink", "#1E2227");
root.style.setProperty("--ink-2", "#252A31");
} else {
root.style.setProperty("--noir", "#0B0D10");
root.style.setProperty("--ink", "#15181C");
root.style.setProperty("--ink-2", "#1B1F24");
}
}, [t.darkLevel]);
useEffectA(() => {
document.documentElement.style.setProperty("--display", `"${t.displayFont}", "Cormorant Garamond", serif`);
}, [t.displayFont]);
// Enquiry modal
const [enquiry, setEnquiry] = useStateA({ open: false, vehicle: null, mode: "enquire" });
const openEnquiry = (opts = {}) => setEnquiry({ open: true, vehicle: opts.vehicle || null, mode: opts.mode || "enquire" });
const closeEnquiry = () => setEnquiry(e => ({ ...e, open: false }));
// Render
let page = null;
switch (route.name) {
case "inventory":
page =