import React, { useState } from 'react'; import { FinCENRecord } from '../../types/fincen'; import { FINCEN_SAR_DATABASE } from '../../data/fincenSarData'; import { ShieldAlert, Building2, Calendar, DollarSign, FileText, CheckCircle2, AlertTriangle, ExternalLink, Copy, Check, Code, Search, X, Filter, Layers, ArrowRight } from 'lucide-react'; interface FincenSarModalProps { isOpen: boolean; onClose: () => void; selectedBsanId?: string | null; onTraceAddress?: (address: string) => void; onNavigateToCase?: (caseId: string) => void; } export const FincenSarModal: React.FC = ({ isOpen, onClose, selectedBsanId, onTraceAddress, onNavigateToCase, }) => { const [selectedRecord, setSelectedRecord] = useState( () => FINCEN_SAR_DATABASE.find(r => r.bsanId === selectedBsanId) || FINCEN_SAR_DATABASE[0] ); const [searchQuery, setSearchQuery] = useState(''); const [activeTab, setActiveTab] = useState<'NARRATIVE' | 'XML_PAYLOAD' | 'REGULATORY_OPTIMIZATION'>('NARRATIVE'); const [copied, setCopied] = useState(false); if (!isOpen) return null; const filteredRecords = FINCEN_SAR_DATABASE.filter(r => { const q = searchQuery.toLowerCase(); return ( r.bsanId.toLowerCase().includes(q) || r.filingInstitution.toLowerCase().includes(q) || r.primaryCategory.toLowerCase().includes(q) || r.subjects.some(s => s.name.toLowerCase().includes(q) || s.walletAddresses.some(w => w.toLowerCase().includes(q))) || (r.associatedCaseId && r.associatedCaseId.toLowerCase().includes(q)) ); }); const getStatusBadge = (status: FinCENRecord['fincenStatus']) => { switch (status) { case 'OFAC_FREEZE_DISPATCHED': return OFAC FREEZE EXECUTED; case 'TRANSMITTED_TO_LE': return LE TRANSMITTED; case '314A_INFO_SHARING': return FINCEN § 314(a) MATCH; default: return E-FILED ACCEPTED; } }; const getTierBadge = (tier: FinCENRecord['optimizationTier']) => { switch (tier) { case 'TIER_1_CRITICAL_ACTION': return TIER 1 CRITICAL; case 'TIER_2_HIGH_PRIORITY': return TIER 2 HIGH; default: return TIER 3 ELEVATED; } }; const copyToClipboard = (text: string) => { navigator.clipboard.writeText(text); setCopied(true); setTimeout(() => setCopied(false), 2500); }; return (
{/* Header */}

FINCEN SAR REGISTRY & REGULATORY OPTIMIZATION DATABASE

{FINCEN_SAR_DATABASE.length} CURATED BSA E-FILINGS

Official Form 111 XML 2.0 Suspicious Activity Reports linked to multi-hop crypto tracing & 18 USC § 2339B

{/* Modal Body Layout */}
{/* Left Sidebar: SAR Filings List */}
setSearchQuery(e.target.value)} placeholder="Search BSAN, VASP, Wallet, or Case..." className="w-full bg-slate-900 border border-slate-800 rounded-lg pl-8 pr-3 py-1.5 text-xs text-slate-200 placeholder-slate-500 font-mono focus:outline-none focus:border-cyan-500" />
{filteredRecords.map((record) => { const isSelected = selectedRecord.bsanId === record.bsanId; return (
setSelectedRecord(record)} className={`p-3 rounded-xl cursor-pointer transition-all ${ isSelected ? 'bg-slate-800/90 border border-cyan-500/60 shadow-md' : 'bg-slate-900/40 border border-transparent hover:bg-slate-900 hover:border-slate-800' }`} >
{record.bsanId} {getTierBadge(record.optimizationTier)}
{record.filingInstitution}
${record.totalAmountUsd.toLocaleString()} USD {record.filingDate}
{record.primaryCategory.replace(/_/g, ' ')} Opt. Score: {record.regulatoryOptimizationScore}%
); })}
{/* Right Detail Pane */}
{/* Top Summary Card */}

{selectedRecord.bsanId}

{getStatusBadge(selectedRecord.fincenStatus)} {getTierBadge(selectedRecord.optimizationTier)}
Filing Entity: {selectedRecord.filingInstitution} ({selectedRecord.institutionType})
{selectedRecord.associatedCaseId && onNavigateToCase && ( )}
{/* Key Metrics Grid */}
TOTAL VALUE INVOLVED ${selectedRecord.totalAmountUsd.toLocaleString()} USD
REGULATORY OPT. SCORE {selectedRecord.regulatoryOptimizationScore}/100 (Indexed)
FILING DATE & WINDOW {selectedRecord.filingDate}
INVESTIGATIVE LEAD {selectedRecord.assignedTaskforce}
{/* Subjects & Crypto Wallets */}
REPORTED SUBJECTS & ON-CHAIN REPOSITORIES Click address to trace on-chain
{selectedRecord.subjects.map((subject, idx) => (
{subject.name} {subject.type} • {subject.country}
{subject.walletAddresses.map((addr) => (
{ if (onTraceAddress) { onClose(); onTraceAddress(addr); } }} > {addr}
))}
))}
{/* View Switcher Tabs */}
{/* Tab Contents */} {activeTab === 'NARRATIVE' && (
{selectedRecord.narrativeSummary}
)} {activeTab === 'REGULATORY_OPTIMIZATION' && (
ACTIONABLE REGULATORY OPTIMIZATIONS & ENFORCEMENT MEASURES
{selectedRecord.actionableRecommendations.map((rec, idx) => (
{idx + 1} {rec}
))}
)} {activeTab === 'XML_PAYLOAD' && (
{selectedRecord.xmlPayloadExcerpt}
)}
); };