// App entry: mounts each screen into its slot, wires Tweaks panel const { createRoot } = ReactDOM; function mount(id, Comp) { const el = document.getElementById(id); if (el) createRoot(el).render(); } mount('screen-dash', DashboardScreen); mount('screen-list', ListScreen); mount('screen-detail', DetailScreen); mount('screen-auth', AuthScreen); mount('screen-log', LogScreen); mount('screen-my', MyScreen); // label tabs for comments document.querySelectorAll('#tabs button').forEach(b=>{ b.setAttribute('data-screen-label', b.textContent.trim()); }); document.querySelectorAll('.screen').forEach(s=>{ s.setAttribute('data-screen-label', s.id.replace('screen-','')); }); // ----- Tweaks panel ----- const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{ "paperBg": true, "strokeWeight": 1.6, "colorIntensity": "moderate", "handFont": "Architects Daughter" }/*EDITMODE-END*/; function TweaksMount() { const [t, setTweak] = useTweaks(TWEAK_DEFAULTS); useEffect(()=>{ document.body.classList.toggle('paper-on', !!t.paperBg); document.documentElement.style.setProperty('--stroke', `${t.strokeWeight}px`); // color intensity → swap rainbow saturation const intense = t.colorIntensity === 'bold'; const muted = t.colorIntensity === 'muted'; const root = document.documentElement.style; if (intense) { root.setProperty('--r-red','#d83a1c'); root.setProperty('--r-orange','#ec8a1f'); root.setProperty('--r-yellow','#e8c41a'); root.setProperty('--r-green','#3f8d3f'); root.setProperty('--r-blue','#2d6f9a'); root.setProperty('--r-violet','#7a4096'); } else if (muted) { root.setProperty('--r-red','#a87266'); root.setProperty('--r-orange','#b89878'); root.setProperty('--r-yellow','#b8a878'); root.setProperty('--r-green','#88967a'); root.setProperty('--r-blue','#7a8a98'); root.setProperty('--r-violet','#8a7e98'); } else { root.setProperty('--r-red','#c8553d'); root.setProperty('--r-orange','#d68642'); root.setProperty('--r-yellow','#d6b042'); root.setProperty('--r-green','#6a8d5a'); root.setProperty('--r-blue','#4f7a96'); root.setProperty('--r-violet','#7a6a96'); } }, [t]); return ( setTweak('paperBg',v)} /> setTweak('strokeWeight',v)} /> setTweak('colorIntensity',v)} /> ); } const tweakRoot = document.createElement('div'); document.body.appendChild(tweakRoot); createRoot(tweakRoot).render();