// 主应用入口 const { useState, useEffect } = React; const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{ "tone": "green", "dark": false, "density": "regular", "orgDepth": 4, "industry": "ALL" }/*EDITMODE-END*/; function useHashRoute(defaultRoute = 'dashboard') { const [route, setRoute] = useState(() => location.hash.replace('#', '') || defaultRoute); useEffect(() => { const handler = () => setRoute(location.hash.replace('#', '') || defaultRoute); window.addEventListener('hashchange', handler); return () => window.removeEventListener('hashchange', handler); }, []); const navigate = (r) => { location.hash = r; }; return [route, navigate]; } function App() { const [route, navigate] = useHashRoute('dashboard'); const [collapsed, setCollapsed] = useState(false); const [t, setTweak] = useTweaks(TWEAK_DEFAULTS); // Apply theme tokens useEffect(() => { const cls = ['tone-' + t.tone]; if (t.dark) cls.push('theme-dark'); if (t.density === 'compact') cls.push('density-compact'); else if (t.density === 'comfy') cls.push('density-comfy'); document.documentElement.className = cls.join(' '); }, [t.tone, t.dark, t.density]); const renderPage = () => { switch (route) { case 'dashboard': return ; case 'data-entry': return ; case 'data-import': return ; case 'factor-library': return ; case 'organization': return ; case 'report': return ; default: return ; } }; return (
setCollapsed(v => !v)} />
{renderPage()}
setTweak('tone', v === '#0d7a5f' ? 'green' : v === '#1e6bd6' ? 'blue' : 'graphite')} /> setTweak('dark', v)} /> setTweak('density', v)} /> setTweak('orgDepth', Number(v))} /> setTweak('industry', v)} />
); } ReactDOM.createRoot(document.getElementById('root')).render();