import React, { useState } from 'react'; /* Fix: react-router-dom exports may be flaky in this environment, using standard v6 imports */ import { useNavigate } from 'react-router-dom'; import { Users, Search, Plus, Mail, Globe, ShieldCheck, MoreHorizontal, Loader2, X, ArrowRight, Building2, Calendar, CreditCard, ExternalLink } from 'lucide-react'; import { Counterparty } from '../types/index'; const MOCK_CP: Counterparty[] = [ { id: 'CP-8801', name: 'Global Logistics Corp', email: 'billing@globallogistics.io', status: 'ACTIVE', createdAt: '2023-11-20', accounts: [{ id: 'ACC-1', accountType: 'CHECKING', accountNumber: '•••• 4421' }] }, { id: 'CP-9902', name: 'Neural Dynamics Research', email: 'treasury@neuraldynamics.ai', status: 'PENDING', createdAt: '2024-01-05', accounts: [] }, { id: 'CP-1105', name: 'Skyline Real Estate', email: 'payments@skyline.co', status: 'ACTIVE', createdAt: '2023-08-12', accounts: [{ id: 'ACC-2', accountType: 'SAVINGS', accountNumber: '•••• 1022' }] }, ]; const Counterparties: React.FC = () => { const navigate = useNavigate(); const [partners, setPartners] = useState(MOCK_CP); const [showModal, setShowModal] = useState(false); const [showProfile, setShowProfile] = useState(false); const [selectedPartner, setSelectedPartner] = useState(null); const [connecting, setConnecting] = useState(false); const [newPartner, setNewPartner] = useState({ name: '', email: '' }); const registerPartner = () => { if (!newPartner.name || !newPartner.email) return; setConnecting(true); setTimeout(() => { const partner: Counterparty = { id: `CP-${Math.floor(1000 + Math.random() * 9000)}`, name: newPartner.name, email: newPartner.email, status: 'PENDING', createdAt: new Date().toISOString().split('T')[0], accounts: [] }; setPartners([...partners, partner]); setConnecting(false); setShowModal(false); setNewPartner({ name: '', email: '' }); }, 1500); }; const openProfile = (partner: Counterparty) => { setSelectedPartner(partner); setShowProfile(true); }; const handleSendFunds = (partner: Counterparty) => { // Navigate to disbursements with partner intent navigate('/payments', { state: { selectedPayeeId: partner.id } }); }; return (

Partner CRM

Managed Third-Party Entities & KYC Handshakes

Active Directory

{partners.map(cp => (
{cp.status}

{cp.name}

{cp.email}

))}
{/* Profile Modal */} {showProfile && selectedPartner && (

{selectedPartner.name}

Institutional Entity Record • {selectedPartner.id}

Entity Email

{selectedPartner.email}

Relationship Established

{new Date(selectedPartner.createdAt).toLocaleDateString()}

KYC Verification Status

{selectedPartner.status === 'ACTIVE' ? 'Identity Verified' : 'Handshake Pending'}

Primary Registry Type

FDX_CORPORATE_NODE

Linked Financial Handshakes

{selectedPartner.accounts && selectedPartner.accounts.length > 0 ? ( selectedPartner.accounts.map(acc => (

{acc.accountType} Account

{acc.accountNumber}

RTP Enabled
)) ) : (

No verified external accounts found

)}
)} {/* Registration Modal */} {showModal && (

Add Partner

KYC/KYB Initialization

setNewPartner({...newPartner, name: e.target.value})} placeholder="Legal Company Name" className="w-full bg-black border border-zinc-800 focus:border-blue-500/50 rounded-xl py-4 px-4 text-white font-bold outline-none transition-all" />
setNewPartner({...newPartner, email: e.target.value})} placeholder="treasury@partner.io" className="w-full bg-black border border-zinc-800 focus:border-blue-500/50 rounded-xl py-4 px-4 text-white font-bold outline-none transition-all" />
)}
); }; export default Counterparties;