/* Root App */ const { useState: useStateA, useEffect: useEffectA } = React; const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{ "accent": "violet", "locale": "en", "hero": "photo", "density": "editorial" }/*EDITMODE-END*/; function App() { const [tw, setTweak] = useTweaks(TWEAK_DEFAULTS); // Sync html dir + lang for RTL useEffectA(() => { document.documentElement.dir = tw.locale === "ar" ? "rtl" : "ltr"; document.documentElement.lang = tw.locale === "ar" ? "ar" : "en"; }, [tw.locale]); // Apply accent and density classes to body useEffectA(() => { document.body.classList.remove("accent-violet", "accent-noir", "accent-steel"); document.body.classList.add(`accent-${tw.accent}`); document.body.classList.toggle("density-compact", tw.density === "compact"); }, [tw.accent, tw.density]); const [quoteOpen, setQuoteOpen] = useStateA(false); const copy = COPY[tw.locale] || COPY.en; const openQuote = () => setQuoteOpen(true); const closeQuote = () => setQuoteOpen(false); return ( <> setTweak("locale", v)} copy={copy} onQuote={openQuote} onAccount={openQuote} /> {/* Floating concierge CTAs */}
setTweak("locale", v)} options={[{ value: "en", label: "EN" }, { value: "ar", label: "AR · ع" }]} /> setTweak("accent", v)} options={[ { value: "violet", color: "#55148E", label: "UAS violet" }, { value: "noir", color: "#0B0E14", label: "Noir-only" }, { value: "steel", color: "#2C5070", label: "Steel" }, ]} /> setTweak("hero", v)} options={[{ value: "photo", label: "Photo" }, { value: "type", label: "Type-led" }]} /> setTweak("density", v)} options={[{ value: "editorial", label: "Editorial" }, { value: "compact", label: "Compact" }]} /> ); } ReactDOM.createRoot(document.getElementById("root")).render();