// ALFARAWI — Tweaks app (drives CSS variables on the live page)
const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{
"gold": "classic",
"headingFont": "El Messiri",
"heroImage": "assets/work-6.jpg",
"heroDarkness": 58,
"showStrip": true
}/*EDITMODE-END*/;
const GOLD_SETS = {
classic: { name: "ذهبي كلاسيكي", c: ["#E6CF95", "#C9A45C", "#9A7233"] },
champagne: { name: "شامبانيا وردي", c: ["#EAD3BC", "#CBA07A", "#A06B3F"] },
copper: { name: "نحاسي دافئ", c: ["#E3B47E", "#C07C3C", "#8A5523"] },
platinum: { name: "بلاتيني فضي", c: ["#DCDEE2", "#AEB3BA", "#7E848C"] }
};
const GOLD_KEYS = Object.keys(GOLD_SETS);
const HERO_IMAGES = [
{ v: "assets/work-6.jpg", label: "فيلا فاخرة" },
{ v: "assets/work-4.jpg", label: "إضاءة دافئة" },
{ v: "assets/work-5.jpg", label: "أبيض وأسود" },
{ v: "assets/work-2.jpg", label: "حجرية" },
{ v: "assets/work-3.jpg", label: "مدخل شامخ" }
];
const FONT_OPTIONS = ["El Messiri", "Reem Kufi", "Cairo", "Tajawal"];
function App() {
const [t, setTweak] = useTweaks(TWEAK_DEFAULTS);
// gold palette
React.useEffect(() => {
const set = GOLD_SETS[t.gold] || GOLD_SETS.classic;
const [c1, c2, c3] = set.c;
const r = document.documentElement.style;
r.setProperty("--gold-1", c1);
r.setProperty("--gold-2", c2);
r.setProperty("--gold-3", c3);
r.setProperty("--gold-grad", `linear-gradient(135deg, ${c1} 0%, ${c2} 45%, ${c3} 100%)`);
}, [t.gold]);
// heading font
React.useEffect(() => {
document.documentElement.style.setProperty("--font-display", `'${t.headingFont}', 'Tajawal', serif`);
}, [t.headingFont]);
// hero image + darkness
React.useEffect(() => {
const img = document.querySelector(".hero-bg img");
if (img) img.src = t.heroImage;
}, [t.heroImage]);
React.useEffect(() => {
const img = document.querySelector(".hero-bg img");
if (img) img.style.opacity = (1 - t.heroDarkness / 100).toFixed(2);
}, [t.heroDarkness]);
// marquee strip visibility
React.useEffect(() => {
const strip = document.querySelector(".strip");
if (strip) strip.style.display = t.showStrip ? "" : "none";
}, [t.showStrip]);
return (
GOLD_SETS[k].c)}
onChange={(v) => {
const key = GOLD_KEYS.find((k) => GOLD_SETS[k].c.join() === v.join()) || "classic";
setTweak("gold", key);
}}
/>
setTweak("headingFont", v)}
/>
({ value: h.v, label: h.label }))}
onChange={(v) => setTweak("heroImage", v)}
/>
setTweak("heroDarkness", v)}
/>
setTweak("showStrip", v)}
/>
);
}
ReactDOM.createRoot(document.getElementById("tweaks-root")).render();