// Root app: theme + ⌘K + Tweaks + scroll reveal const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{ "accent": "#7c5cff", "accent2": "#00d4ff", "density": "spacious", "heroHeadlinePrefix": "Agentic AI &", "heroHeadlineSuffix": "automation engineer" }/*EDITMODE-END*/; function App() { const [theme, setTheme] = React.useState(() => { return localStorage.getItem("aura-theme") || "dark"; }); const [paletteOpen, setPaletteOpen] = React.useState(false); const [tweaks, setTweak] = window.useTweaks(TWEAK_DEFAULTS); const [lang, setLang] = React.useState(() => localStorage.getItem("aura-lang") || "en"); React.useEffect(() => { localStorage.setItem("aura-lang", lang); }, [lang]); const toggleLang = () => setLang(l => l === "en" ? "bn" : "en"); // theme React.useEffect(() => { document.documentElement.dataset.theme = theme; localStorage.setItem("aura-theme", theme); }, [theme]); const toggleTheme = () => setTheme(t => t === "dark" ? "light" : "dark"); React.useEffect(() => { const onToggle = () => toggleTheme(); window.addEventListener("aura:toggle-theme", onToggle); return () => window.removeEventListener("aura:toggle-theme", onToggle); }, []); // ⌘K React.useEffect(() => { const onKey = (e) => { if ((e.metaKey || e.ctrlKey) && e.key.toLowerCase() === "k") { e.preventDefault(); setPaletteOpen(o => !o); } }; window.addEventListener("keydown", onKey); return () => window.removeEventListener("keydown", onKey); }, []); // tweaks accent vars — apply to :root React.useEffect(() => { document.documentElement.style.setProperty("--accent", tweaks.accent); document.documentElement.style.setProperty("--accent-2", tweaks.accent2); document.documentElement.style.setProperty("--accent-glow", tweaks.accent + "59"); // ~35% alpha }, [tweaks.accent, tweaks.accent2]); // density const density = tweaks.density; // scroll reveal React.useEffect(() => { const els = document.querySelectorAll(".reveal"); const io = new IntersectionObserver(entries => { entries.forEach(en => { if (en.isIntersecting) en.target.classList.add("in"); }); }, { threshold: 0.1 }); els.forEach(el => io.observe(el)); return () => io.disconnect(); }, []); const T = window; return ( <> setPaletteOpen(true)} theme={theme} onToggleTheme={toggleTheme} lang={lang} onToggleLang={toggleLang} />
setPaletteOpen(false)} /> setTheme(v)} options={["dark", "light"]} /> setTweak("accent", v)} /> setTweak("accent2", v)} />
{[ ["Violet", "#7c5cff", "#00d4ff"], ["Cyan", "#00d4ff", "#7c5cff"], ["Emerald", "#22c55e", "#7c5cff"], ["Sunset", "#ff6b35", "#fbbf24"], ["Mono", "#ffffff", "#a4a8b3"], ].map(([name, a, b]) => ( ))}
setTweak("density", v)} options={["compact", "spacious"]} /> setTweak("heroHeadlinePrefix", v)} /> setTweak("heroHeadlineSuffix", v)} />
); } ReactDOM.createRoot(document.getElementById("root")).render();