/* acme-app.jsx — Main app with routing, state, animations, and tweaks */ const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{ "model": "acme-credit-v3.2", "showMetadata": true, "animateScoring": true }/*EDITMODE-END*/; const AcmeApp = () => { const [t, setTweak] = useTweaks(TWEAK_DEFAULTS); const [view, setView] = React.useState('dashboard'); // 'dashboard' | 'applications' const [selectedIdx, setSelectedIdx] = React.useState(0); const [phase, setPhase] = React.useState('done'); const [factorsVisible, setFactorsVisible] = React.useState(true); const [decisionVisible, setDecisionVisible] = React.useState(true); const phaseRef = React.useRef('done'); const app = APPLICANTS[selectedIdx]; const model = MODELS[t.model] || MODELS['acme-credit-v3.2']; const handleNavClick = (tab) => { if (tab === 'Dashboard') setView('dashboard'); else if (tab === 'Applications') setView('applications'); }; const handleOpenApplication = (idx) => { setSelectedIdx(idx); setView('applications'); // Reset animation state for fresh entry setFactorsVisible(true); setDecisionVisible(true); setPhase('done'); phaseRef.current = 'done'; if (t.animateScoring) { setFactorsVisible(false); setDecisionVisible(false); setPhase('loading'); phaseRef.current = 'loading'; setTimeout(() => { if (phaseRef.current === 'loading') { setPhase('animating'); phaseRef.current = 'animating'; setTimeout(() => { setFactorsVisible(true); setTimeout(() => { setDecisionVisible(true); setPhase('done'); phaseRef.current = 'done'; }, 600); }, 800); } }, 1200); } }; const handleSidebarSelect = (idx) => { if (idx === selectedIdx) return; handleOpenApplication(idx); }; const isLoading = phase === 'loading'; const isAnimating = phase === 'loading'; const activeTab = view === 'dashboard' ? 'Dashboard' : 'Applications'; return (