import React, { useState } from 'react'; import { INITIAL_CASES } from './data/mockCases'; import { InvestigationCase, ThreatLevel } from './types/forensics'; import { Header } from './components/Header'; import { MetricsOverview } from './components/MetricsOverview'; import { CaseList } from './components/CaseList'; import { OverviewTab } from './components/tabs/OverviewTab'; import { NetworkForensicsTab } from './components/tabs/NetworkForensicsTab'; import { ClientLeakageTab } from './components/tabs/ClientLeakageTab'; import { FinancialGraphTab } from './components/tabs/FinancialGraphTab'; import { StatutoryMatrixTab } from './components/tabs/StatutoryMatrixTab'; import { TerminalTab } from './components/tabs/TerminalTab'; import { AiAnalystTab } from './components/tabs/AiAnalystTab'; import { TheoreticalMathTab } from './components/tabs/TheoreticalMathTab'; import { WorkbookDatabaseTab } from './components/tabs/WorkbookDatabaseTab'; import { CryptoTracerTab } from './components/tabs/CryptoTracerTab'; import { AnycastSandboxModal } from './components/modals/AnycastSandboxModal'; import { WebRtcLiveProbeModal } from './components/modals/WebRtcLiveProbeModal'; import { NewCaseModal } from './components/modals/NewCaseModal'; import { ExportDossierModal } from './components/modals/ExportDossierModal'; import { ProvenanceModal } from './components/modals/ProvenanceModal'; import { ShieldAlert, Globe, Cpu, CreditCard, Scale, Terminal as TerminalIcon, Bot, Activity, Layers, Calculator, Database } from 'lucide-react'; export default function App() { const [cases, setCases] = useState(INITIAL_CASES); const [selectedCaseId, setSelectedCaseId] = useState(INITIAL_CASES[0].id); const [activeTab, setActiveTab] = useState('overview'); // Search & Filter State const [searchQuery, setSearchQuery] = useState(''); const [categoryFilter, setCategoryFilter] = useState('ALL'); const [threatFilter, setThreatFilter] = useState('ALL'); // Modals const [isAnycastSandboxOpen, setIsAnycastSandboxOpen] = useState(false); const [isWebRtcProbeOpen, setIsWebRtcProbeOpen] = useState(false); const [isNewCaseModalOpen, setIsNewCaseModalOpen] = useState(false); const [isExportModalOpen, setIsExportModalOpen] = useState(false); const [isProvenanceModalOpen, setIsProvenanceModalOpen] = useState(false); const currentCase = cases.find(c => c.id === selectedCaseId) || cases[0]; const handleUpdateStatus = (caseId: string, newStatus: any, actionNote: string) => { setCases(prev => prev.map(c => { if (c.id === caseId) { const time = new Date().toISOString().replace('T', ' ').slice(0, 19); return { ...c, status: newStatus, updatedDate: new Date().toISOString().slice(0, 10), timeline: [ ...c.timeline, { timestamp: time, event: actionNote, actor: 'Supervisor Enclave', severity: 'WARN' } ] }; } return c; })); }; const handleAddNewCase = (newCase: InvestigationCase) => { setCases(prev => [newCase, ...prev]); setSelectedCaseId(newCase.id); setActiveTab('overview'); }; const criticalAlertCount = cases.filter(c => c.threatLevel === 'CRITICAL').length; return (
{/* Platform Header */}
setIsNewCaseModalOpen(true)} onOpenAnycastSandbox={() => setIsAnycastSandboxOpen(true)} onOpenWebRtcProbe={() => setIsWebRtcProbeOpen(true)} onOpenExportModal={() => setIsExportModalOpen(true)} onOpenProvenanceModal={() => setIsProvenanceModalOpen(true)} activeTab={activeTab} setActiveTab={setActiveTab} /> {/* Metrics Bar */} setCategoryFilter(cat)} /> {/* Main Workspace: Left Docket Sidebar & Right Workstation */}
{/* Left Docket Navigation */} setSelectedCaseId(id)} searchQuery={searchQuery} setSearchQuery={setSearchQuery} categoryFilter={categoryFilter} setCategoryFilter={setCategoryFilter} threatFilter={threatFilter} setThreatFilter={setThreatFilter} /> {/* Right Workstation: Deep Dive Forensic Review */}
{/* Workstation Tab Navigation Bar */} {/* Tab Content Display Area */}
{activeTab === 'overview' && ( setActiveTab(tabKey)} /> )} {activeTab === 'network' && ( )} {activeTab === 'client' && ( )} {activeTab === 'financial' && ( setActiveTab('database')} /> )} {activeTab === 'crypto_tracer' && ( setActiveTab('database')} onNavigateToStatutory={() => setActiveTab('statutory')} /> )} {activeTab === 'statutory' && ( setActiveTab('crypto_tracer')} /> )} {activeTab === 'math' && ( )} {activeTab === 'database' && ( )} {activeTab === 'terminal' && (
)} {activeTab === 'ai_analyst' && ( )}
{/* Modals & Sandboxes */} setIsAnycastSandboxOpen(false)} /> setIsWebRtcProbeOpen(false)} /> setIsNewCaseModalOpen(false)} onAddCase={handleAddNewCase} /> setIsExportModalOpen(false)} currentCase={currentCase} /> setIsProvenanceModalOpen(false)} />
); }