/* global React, COPY, LANGS, PhoneFrame, HeroChat, DemoChat, Icon, useTweaks, TweaksPanel, TweakSection, TweakRadio, TweakColor, TweakToggle */ const { useState, useEffect } = React; const ACCENT_PRESETS = [ { id: "blue", label: "Blue", color: "oklch(0.74 0.16 235)" }, { id: "green", label: "Lime", color: "oklch(0.82 0.18 145)" }, { id: "violet", label: "Violet", color: "oklch(0.7 0.2 305)" }, { id: "amber", label: "Amber", color: "oklch(0.78 0.16 70)" }, { id: "rose", label: "Rose", color: "oklch(0.7 0.18 15)" }, ]; const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{ "theme": "light", "accent": "blue", "lang": "ru" }/*EDITMODE-END*/; function App() { const [tweaks, setTweak] = useTweaks(TWEAK_DEFAULTS); const [lang, setLang] = useState(tweaks.lang || "ru"); useEffect(() => { setLang(tweaks.lang || "ru"); }, [tweaks.lang]); // Apply theme useEffect(() => { document.documentElement.setAttribute("data-theme", tweaks.theme || "light"); }, [tweaks.theme]); // Apply accent color useEffect(() => { const preset = ACCENT_PRESETS.find(p => p.id === tweaks.accent) || ACCENT_PRESETS[0]; document.documentElement.style.setProperty("--accent", preset.color); // generate soft variant const soft = preset.color.replace(")", " / 0.12)"); document.documentElement.style.setProperty("--accent-soft", soft); }, [tweaks.accent]); const accentColor = (ACCENT_PRESETS.find(p => p.id === tweaks.accent) || ACCENT_PRESETS[0]).color; const t = COPY[lang]; return ( <>