import { Database, FileText, Link2, Play, Save, Search, ShieldCheck, SlidersHorizontal } from 'lucide-react' import { AppProvider } from './context/AppContext' import { useApp } from './context/useApp' import { AppShell } from './components/layout/AppShell' import { screenDescription, screenTitle } from './components/layout/workspaceMeta' import { Dashboard } from './pages/dashboard/dashboard' import { ModelLibrary } from './pages/model-library/ModelLibrary' import { InputLibrary } from './pages/input-library/InputLibrary' import { ResultsExplorer } from './pages/results-explorer/ResultsExplorer' import { ScenarioAnalysis } from './pages/scenario-analysis/ScenarioAnalysis' import { FormulaLibrary } from './pages/formula-library/FormulaLibrary' import { ProjectionSetsLibrary } from './pages/projection-sets-library/ProjectionSetsLibrary' import { ReportsCompleted } from './pages/reports-completed/ReportsCompleted' import { ReserveInvestigation } from './pages/reserve-investigation/ReserveInvestigation' import { ModelWorkspace } from './pages/model-workspace/ModelWorkspace' import { InputWorkflowScreen } from './pages/input-workflow-screens/InputWorkflowScreens' import { ProjectionSetupProgress } from './pages/projection-setup-progress/ProjectionSetupProgress' import { RunSetWorkflow } from './pages/run-set-workflow/RunSetWorkflow' import { MentorWorkspace } from './pages/mentor-workspace/MentorWorkspace' import { AdminSettings } from './pages/admin-settings/AdminSettings' import { DataManager } from './pages/data-manager/DataManager' import { ScreenErrorBoundary } from './components/ui/ScreenErrorBoundary' import type { Model } from './types' import { useState } from 'react' import { ApiProvider } from './api/ApiProvider' import { AuthGate } from './api/AuthGate' import { WorkspaceGate, WorkspaceProvider } from './api/WorkspaceContext' function RoutedApp() { const { activeScreen, notify, setActiveScreen, updateProjectionInputs, projectionSetupActive, setProjectionSetupActive, activeExecutionRunSetId } = useApp() const [modelQuery, setModelQuery] = useState('') const [formulaQuery, setFormulaQuery] = useState('') const [formulaLineageActive, setFormulaLineageActive] = useState(false) const [formulaDetailActive, setFormulaDetailActive] = useState(false) const [resultsCompareActive, setResultsCompareActive] = useState(false) const [resultsExplorerKey, setResultsExplorerKey] = useState(0) const [investigationSelectorActive, setInvestigationSelectorActive] = useState(true) const [selectedModel, setSelectedModel] = useState(null) const [startProjectionCreate, setStartProjectionCreate] = useState(false) const [dataManagerCategory, setDataManagerCategory] = useState<'liability_inforce' | 'assumption_table' | 'factor_table' | 'scenario'>('liability_inforce') const [inputWorkflowPage, setInputWorkflowPage] = useState('Input Library') const isModelWorkspace = activeScreen === 'Models' && selectedModel !== null const startProjectionSetup = () => { setProjectionSetupActive(true) setStartProjectionCreate(true) setActiveScreen('Projections') } const endProjectionSetup = () => { setProjectionSetupActive(false) setStartProjectionCreate(false) setActiveScreen('Projections') } const openModel = (model: Model) => { setSelectedModel(model) if (projectionSetupActive) updateProjectionInputs(current => ({ ...current, model, draft: current.model?.name === model.name ? current.draft : { ...current.draft, formulaConfirmed: false, scenarioCompatible: false }, })) } const openDataManager = (category: 'liability_inforce' | 'assumption_table' | 'factor_table' | 'scenario') => { setDataManagerCategory(category) setActiveScreen('Data Manager') } const openInputWorkflow = (page: string) => { if (page === 'Import Inforce') { openDataManager('liability_inforce') return } setProjectionSetupActive(true) setStartProjectionCreate(true) setInputWorkflowPage(page) setActiveScreen('Inputs') } const openScenarioLibrary = () => { setProjectionSetupActive(true) setStartProjectionCreate(true) setActiveScreen('Scenarios') } const actions = ( ) const investigationActions = (
) return ( setSelectedModel(null)}>Models / Model workspace : activeScreen === 'Dashboard' ? 'Home' : activeScreen} topbarVariant={isModelWorkspace ? 'model-workspace' : activeScreen === 'Mentor' ? 'mentor' : activeScreen === 'Admin / Settings' ? 'admin' : activeScreen === 'Models' || activeScreen === 'Formulas' ? 'library' : 'default'} searchPlaceholder={activeScreen === 'Formulas' ? 'Search formula groups, versions, owners, dependencies...' : undefined} className={`${isModelWorkspace ? 'model-workspace-page-shell' : activeScreen === 'Mentor' ? 'mentor-shell' : activeScreen === 'Admin / Settings' ? 'admin-shell' : activeScreen === 'Inputs' ? 'input-shell' : activeScreen === 'Results' ? `results-shell ${resultsCompareActive ? 'results-compare-shell' : ''}` : activeScreen === 'Scenarios' ? 'scenario-shell' : activeScreen === 'Formulas' ? `formula-shell ${formulaLineageActive ? 'formula-lineage-shell-active' : ''} ${formulaDetailActive ? 'formula-detail-shell-active' : ''}` : activeScreen === 'Runs' ? 'execution-shell' : activeScreen === 'Projections' ? 'projection-shell' : activeScreen === 'Reports' ? 'report-shell' : activeScreen === 'Investigate' ? `investigation-shell ${investigationSelectorActive ? 'investigation-selector-shell' : ''}` : ''} ${projectionSetupActive ? 'projection-flow-active' : ''}`} modelName={isModelWorkspace ? selectedModel.name : undefined} modelVersion={isModelWorkspace ? selectedModel.version : undefined} onNavigate={(screen) => { if (screen !== activeScreen) { setFormulaLineageActive(false) setFormulaDetailActive(false) setResultsCompareActive(false) } if (screen === 'Results') { setResultsCompareActive(false) setResultsExplorerKey((key) => key + 1) } if (screen === 'Investigate') setInvestigationSelectorActive(true) }} searchValue={activeScreen === 'Formulas' ? formulaQuery : modelQuery} onSearchChange={activeScreen === 'Formulas' ? setFormulaQuery : setModelQuery} actions={isModelWorkspace ? notify('Model validation started')} onCreate={startProjectionSetup} /> : activeScreen === 'Inputs' ? : activeScreen === 'Investigate' && !investigationSelectorActive ? investigationActions : activeScreen === 'Dashboard' || activeScreen === 'Results' || activeScreen === 'Projections' || activeScreen === 'Reports' ? actions : undefined} workflowPanel={projectionSetupActive ? : undefined} > {activeScreen === 'Dashboard' ? ( ) : activeScreen === 'Models' ? ( isModelWorkspace ? ( setActiveScreen('Models')} /> ) : ( ) ) : activeScreen === 'Inputs' ? ( inputWorkflowPage === 'Input Library' ? ( setInputWorkflowPage(page)} onOpenInforceImport={() => openDataManager('liability_inforce')} /> ) : ( setInputWorkflowPage(page)} onReturnToProjection={startProjectionSetup} onNotify={notify} onOpenDataManager={openDataManager} /> ) ) : activeScreen === 'Data Manager' ? ( ) : activeScreen === 'Scenarios' ? ( ) : activeScreen === 'Formulas' ? ( ) : activeScreen === 'Runs' ? ( ) : activeScreen === 'Projections' ? ( setStartProjectionCreate(false)} onSetupStarted={() => setProjectionSetupActive(true)} onSetupFinished={() => setProjectionSetupActive(false)} onNavigateToInput={openInputWorkflow} onNavigateToScenario={openScenarioLibrary} /> ) : activeScreen === 'Results' ? ( ) : activeScreen === 'Reports' ? ( ) : activeScreen === 'Investigate' ? ( setInvestigationSelectorActive(view === 'selector')} /> ) : activeScreen === 'Mentor' ? ( setActiveScreen('Investigate')} /> ) : activeScreen === 'Admin / Settings' ? ( ) : (

Workspace cleared

Page content has been removed.

)}
) } function ModelWorkspaceActions({ onValidate, onCreate }: { onValidate: () => void; onCreate: () => void }) { return (
) } function InputTrustSignal() { return (
Trusted inputs
for reliable projections
Validated. Mapped. Model-ready.
) } export default function App() { return ( ) }