// wf/app.jsx — DesignCanvas root: assembles every section and mounts a small tweaks panel. const { useState, useEffect } = React; const ACCENTS = [ { id:'sky', label:'Bleu mer', bg:'var(--sky-300)', deep:'var(--sky-500)' }, { id:'sage', label:'Sauge', bg:'var(--sage-300)', deep:'var(--sage-500)' }, { id:'copper', label:'Cuivre', bg:'#E0B27B', deep:'#A56A2C' }, { id:'cream', label:'Crème', bg:'#FCF2D9', deep:'var(--brown-800)'}, ]; function TweaksPanel() { const [open, setOpen] = useState(true); const [acc, setAcc] = useState('sky'); const [available, setAvailable] = useState(false); // Apply accent to CSS variables useEffect(() => { const a = ACCENTS.find(x => x.id === acc) || ACCENTS[0]; document.documentElement.style.setProperty('--wf-accent', a.bg); document.documentElement.style.setProperty('--wf-accent-deep', a.deep); }, [acc]); // Wire to host toolbar Tweaks toggle useEffect(() => { const onMsg = (e) => { if (e.data?.type === '__activate_edit_mode') setOpen(true); if (e.data?.type === '__deactivate_edit_mode') setOpen(false); }; window.addEventListener('message', onMsg); window.parent.postMessage({ type: '__edit_mode_available' }, '*'); setAvailable(true); return () => window.removeEventListener('message', onMsg); }, []); const dismiss = () => { setOpen(false); window.parent.postMessage({ type: '__edit_mode_dismissed' }, '*'); }; if (!open) { return ( ); } return (

Tweaks

Quelques essais rapides.
Couleur d'accent
{ACCENTS.map(a => (
setAcc(a.id)} /> ))}
{ACCENTS.find(x => x.id === acc)?.label}
); } // ─── The Design Canvas root ───────────────────────────────────────────── function App() { return ( <> {/* SECTION 1 — HOME (mobile, 4 directions) */} {/* SECTION 2 — HOME desktop */} {/* SECTION 3 — CATEGORY (Restaurants) */} {/* SECTION 4 — DETAIL */} {/* SECTION 5 — UTILITY */} ); } // Tiny wrapper that vertically + horizontally centres a fixed-width child // inside its DCArtboard, with a soft page-color backdrop. function CenterFrame({ children }) { return (
{children}
); } ReactDOM.createRoot(document.getElementById('canvas-root')).render();