// 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();