// WNN Live — app composer, tweaks, device preview const { useTweaks, TweaksPanel, TweakSection, TweakRadio } = window; const AIcon = window.WNNIcon; const params = new URLSearchParams(location.search); const BARE = params.has('bare'); function decodeTw() { try { return JSON.parse(decodeURIComponent(params.get('tw') || '')) || {}; } catch (e) { return {}; } } const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{ "device": "desktop", "heroScheme": "scheme-1", "pricingScheme": "scheme-1" }/*EDITMODE-END*/; function Page({ tw }) { return (
); } function MobilePreview({ tw }) { const src = '?bare=1&tw=' + encodeURIComponent(JSON.stringify({ heroScheme: tw.heroScheme, pricingScheme: tw.pricingScheme, })); return (
Mobile preview · 414 px · live, scrollable
); } function App() { const [t, setTweak] = useTweaks(TWEAK_DEFAULTS); if (BARE) { const tw = decodeTw(); return ; } const tw = { heroScheme: t.heroScheme, pricingScheme: t.pricingScheme }; return ( <> {t.device === 'mobile' ? : } setTweak('device', v)} /> setTweak('heroScheme', v)} /> setTweak('pricingScheme', v)} /> ); } ReactDOM.createRoot(document.getElementById('wnn-app')).render();