import { useMemo, useState } from 'react'; import { Shield, AlertTriangle, CheckCircle2, Clock, Filter, Download, Eye, UserCheck, Activity } from 'lucide-react'; import { complianceAlerts, sampleAccounts } from '../data/portalData'; import { useLiveChain } from '../hooks/useLiveChain'; import { useAddressTransactions } from '../hooks/useAddressTransactions'; import { explorerAddressUrl } from '../services/explorer'; import { endpoints } from '../config/endpoints'; const severityColors: Record = { critical: '#ef4444', high: '#f97316', medium: '#eab308', low: '#3b82f6', }; const statusColors: Record = { open: '#ef4444', acknowledged: '#eab308', resolved: '#22c55e', }; const complianceMetrics = [ { label: 'KYC Verified', value: '142', total: '145', pct: 98, color: '#22c55e' }, { label: 'AML Screening', value: 'Active', total: '47 rules', pct: 100, color: '#3b82f6' }, { label: 'Sanctions Check', value: 'Current', total: 'OFAC/EU/UN', pct: 100, color: '#a855f7' }, { label: 'Travel Rule', value: '98.5%', total: 'compliant', pct: 98.5, color: '#14b8a6' }, ]; const regulatoryFrameworks = [ { name: 'FATF Travel Rule', status: 'compliant', lastReview: '2024-03-15', nextReview: '2024-06-15' }, { name: 'MiCA (EU)', status: 'compliant', lastReview: '2024-02-28', nextReview: '2024-05-28' }, { name: 'Bank Secrecy Act (US)', status: 'compliant', lastReview: '2024-03-01', nextReview: '2024-06-01' }, { name: 'FCA Regulations (UK)', status: 'review_needed', lastReview: '2024-01-15', nextReview: '2024-04-15' }, { name: 'MAS Guidelines (SG)', status: 'compliant', lastReview: '2024-03-10', nextReview: '2024-06-10' }, { name: 'JFSA Standards (JP)', status: 'compliant', lastReview: '2024-02-20', nextReview: '2024-05-20' }, ]; export default function CompliancePage() { const [severityFilter, setSeverityFilter] = useState('all'); const [statusFilter, setStatusFilter] = useState('all'); const { health, error: liveErr } = useLiveChain(); const tracked = useMemo( () => sampleAccounts .flatMap(a => [a, ...(a.subaccounts || [])]) .filter(a => !!a.walletAddress) .map(a => ({ name: a.name, address: a.walletAddress as string, type: a.type })), [], ); const [selectedWallet, setSelectedWallet] = useState(tracked[0]?.address ?? ''); const { transactions: walletTxs, loading: walletLoading, error: walletErr, } = useAddressTransactions(selectedWallet, 10, 60_000); const filtered = complianceAlerts.filter(a => { const matchSev = severityFilter === 'all' || a.severity === severityFilter; const matchStatus = statusFilter === 'all' || a.status === statusFilter; return matchSev && matchStatus; }); const openCount = complianceAlerts.filter(a => a.status === 'open').length; const criticalCount = complianceAlerts.filter(a => a.severity === 'critical' && a.status !== 'resolved').length; const selectedWalletName = tracked.find(t => t.address === selectedWallet)?.name ?? ''; return (

Compliance & Risk Management

Regulatory compliance monitoring, AML/KYC oversight, and risk controls

{/* On-Chain AML Monitoring strip */}
On-chain AML monitor — Chain {endpoints.chain138.chainId} {liveErr ? `● degraded · ${liveErr}` : health ? `● live · block ${health.blockNumber.toLocaleString()}` : '○ polling…'} Tracked custody wallets: {tracked.length}
{/* Compliance Metrics */}
{complianceMetrics.map(m => (
{m.label}
{m.value}
{m.total}
))}
{/* Alerts */}

Active Alerts ({openCount} open, {criticalCount} critical)

{filtered.map(alert => (
{alert.severity.toUpperCase()} {alert.category} {alert.message} {alert.status === 'resolved' ? : alert.status === 'acknowledged' ? : } {alert.status} {alert.timestamp.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })} {alert.assignedTo && {alert.assignedTo}}
))}
{/* On-chain transactions for the selected tracked wallet */}

On-Chain Tx Feed

{selectedWalletName ? selectedWalletName : 'select a wallet above'} {walletLoading ? ' · loading…' : walletErr ? ` · ${walletErr}` : ''}
{!walletLoading && walletTxs.length === 0 && !walletErr && (
No on-chain activity for this wallet yet. {selectedWallet && ( <> View on SolaceScan. )}
)} {walletTxs.map(tx => (
{tx.hash.slice(0, 14)}… {tx.from.hash.toLowerCase() === selectedWallet.toLowerCase() ? 'OUT →' : 'IN ←'} {' '} {(tx.from.hash.toLowerCase() === selectedWallet.toLowerCase() ? tx.to?.hash : tx.from.hash)?.slice(0, 10) ?? '—'}… {new Date(tx.timestamp).toLocaleTimeString()} {tx.status ?? 'pending'}
))}
{/* Regulatory Frameworks */}

Regulatory Frameworks

{regulatoryFrameworks.map(fw => (
{fw.name} {fw.status === 'compliant' ? : } {fw.status.replace('_', ' ')}
Last: {fw.lastReview} Next: {fw.nextReview}
))}
); }