import React, { useState, useMemo } from 'react'; import { Plus, Trash2, Edit3, Copy, Check, Download, Printer, FileText, Building2, Scale, Cpu, DollarSign, ShieldCheck, CheckCircle2, AlertCircle, Layers, Sparkles, ChevronDown, ChevronUp, FileSpreadsheet, Send, Database, Search, RotateCcw, BookOpen, Landmark, HardDrive } from 'lucide-react'; import { CustomCusipItem, CustomPartyConfig, GeneratedDocument, calculatePortfolioSummary, generateAllCustomDocuments, PRESET_BENCHMARK_USEC, PRESET_CORPORATE_RESTRUCTURING, PRESET_MUNICIPAL_DEFAULT } from '../services/customDocumentGenerator'; import { validateCusip, calculateCusipCheckDigit, formatCusipSpaced } from '../utils/cusipValidator'; export const CustomCusipGeneratorView: React.FC = () => { // Active state for CUSIPs and configuration const [cusips, setCusips] = useState(PRESET_BENCHMARK_USEC.cusips); const [config, setConfig] = useState(PRESET_BENCHMARK_USEC.config); const [activePreset, setActivePreset] = useState<'usec' | 'corp' | 'muni' | 'custom'>('usec'); const [isConfigExpanded, setIsConfigExpanded] = useState(false); const [selectedDocId, setSelectedDocId] = useState('doc-state-mandamus'); const [viewMode, setViewMode] = useState<'formatted' | 'latex'>('formatted'); const [docSearchQuery, setDocSearchQuery] = useState(''); const [copySuccess, setCopySuccess] = useState(false); const [showLineNumbers, setShowLineNumbers] = useState(false); // Modal / Form state for adding/editing a CUSIP const [isEditorOpen, setIsEditorOpen] = useState(false); const [editingCusipId, setEditingCusipId] = useState(null); const [formData, setFormData] = useState({ id: '', cusip: '', issuer: '', seriesDescription: '', principalAmount: 100000000, couponRatePercent: 6.5, maturityDate: 'January 15, 2028', exchangeRatio: 0.0917, tickerSymbol: 'LEU' }); // Calculate live portfolio summary const summary = useMemo(() => calculatePortfolioSummary(cusips), [cusips]); // Generate all 6 custom documents whenever cusips or config changes const generatedDocs = useMemo(() => { return generateAllCustomDocuments(cusips, config); }, [cusips, config]); // Current selected generated document const activeDoc = useMemo(() => { return generatedDocs.find(d => d.id === selectedDocId) || generatedDocs[0]; }, [generatedDocs, selectedDocId]); // Preset switch handler const handleSelectPreset = (preset: 'usec' | 'corp' | 'muni' | 'custom') => { setActivePreset(preset); if (preset === 'usec') { setCusips(PRESET_BENCHMARK_USEC.cusips); setConfig(PRESET_BENCHMARK_USEC.config); } else if (preset === 'corp') { setCusips(PRESET_CORPORATE_RESTRUCTURING.cusips); setConfig(PRESET_CORPORATE_RESTRUCTURING.config); } else if (preset === 'muni') { setCusips(PRESET_MUNICIPAL_DEFAULT.cusips); setConfig(PRESET_MUNICIPAL_DEFAULT.config); } else if (preset === 'custom') { setCusips([ { id: 'custom-1', cusip: '037833100', // Apple benchmark stem issuer: 'Custom Enterprise Holdings Inc.', seriesDescription: '7.00% Senior Convertible Debentures', principalAmount: 50000000, couponRatePercent: 7.0, maturityDate: 'December 31, 2029', exchangeRatio: 0.085, tickerSymbol: 'CEH' } ]); setConfig({ ...config, caseNumber: 'NEW-FILING-2026', filingDate: new Date().toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric' }) }); } }; // Open editor for new CUSIP const handleAddNewCusip = () => { setEditingCusipId(null); setFormData({ id: `cusip-${Date.now()}`, cusip: '', issuer: 'New Corporate Issuer', seriesDescription: '6.75% Senior Notes Due 2030', principalAmount: 25000000, couponRatePercent: 6.75, maturityDate: 'June 30, 2030', exchangeRatio: 0.0917, tickerSymbol: 'CORP' }); setIsEditorOpen(true); }; // Open editor for existing CUSIP const handleEditCusip = (item: CustomCusipItem) => { setEditingCusipId(item.id); setFormData({ ...item }); setIsEditorOpen(true); }; // Delete CUSIP const handleDeleteCusip = (id: string) => { if (cusips.length <= 1) { alert('Portfolio must contain at least one CUSIP claim.'); return; } setCusips(cusips.filter(c => c.id !== id)); setActivePreset('custom'); }; // Auto-fix check digit for a given CUSIP const handleAutoFixCheckDigit = (cusipId: string, stem: string) => { const checkDigit = calculateCusipCheckDigit(stem.slice(0, 8)); if (checkDigit !== null) { const fixedCusip = `${stem.slice(0, 8)}${checkDigit}`; setCusips(cusips.map(c => c.id === cusipId ? { ...c, cusip: fixedCusip } : c)); setActivePreset('custom'); } }; // Save from form editor const handleSaveForm = (e: React.FormEvent) => { e.preventDefault(); if (!formData.cusip.trim()) { alert('Please enter a valid CUSIP.'); return; } if (editingCusipId) { setCusips(cusips.map(c => c.id === editingCusipId ? formData : c)); } else { setCusips([...cusips, formData]); } setIsEditorOpen(false); setActivePreset('custom'); }; // Copy document to clipboard const handleCopy = () => { const textToCopy = viewMode === 'latex' ? activeDoc.latexText : activeDoc.plainText; navigator.clipboard.writeText(textToCopy); setCopySuccess(true); setTimeout(() => setCopySuccess(false), 2500); }; // Download document const handleDownload = (format: 'tex' | 'txt') => { const content = format === 'tex' ? activeDoc.latexText : activeDoc.plainText; const extension = format === 'tex' ? '.tex' : '.txt'; const filename = `${activeDoc.id}_${new Date().toISOString().split('T')[0]}${extension}`; const blob = new Blob([content], { type: format === 'tex' ? 'text/x-tex;charset=utf-8;' : 'text/plain;charset=utf-8;' }); const url = URL.createObjectURL(blob); const link = document.createElement('a'); link.href = url; link.download = filename; document.body.appendChild(link); link.click(); document.body.removeChild(link); URL.revokeObjectURL(url); }; // Print current document const handlePrint = () => { const printWindow = window.open('', '_blank'); if (printWindow) { printWindow.document.write(` ${activeDoc.title}
${activeDoc.plainText}
`); printWindow.document.close(); printWindow.focus(); printWindow.print(); } }; return (
{/* Hero / Studio Header */}
CUSIP & INDENTURE AUTO-GENERATOR • UCC § 8-401 & UDTA §§ 101–118

Custom CUSIP Generator & Court Document Assembly Studio

Enter custom CUSIP numbers, issuer credentials, par values, and equity conversion ratios. The engine automatically validates the modified Luhn check-digit formula and auto-generates the entire 6-instrument suite of court mandamus pleadings, statutory trust indentures, DTC depository directives, SEC workpapers, and ADR/ADX scientific supplements.

{/* Quick Preset Selector Buttons */}
Load Benchmark Profile:
{/* Financial Capitalization Summary Metrics */}
Aggregate Par Claim
${summary.totalPrincipal.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}
Across {summary.cusipCount} verified CUSIP issue{summary.cusipCount > 1 ? 's' : ''}
Equity Conversion Entitlement
{summary.totalShares.toLocaleString()}
Common Shares ({cusips.map(c => c.tickerSymbol).filter((v, i, a) => a.indexOf(v) === i).join(', ')})
Annual Accrued Coupon
${summary.totalAnnualCoupon.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}
Annual contractual cash flow obligation
UDTA 5% Smoothed Payout Cap
${summary.udtaAnnualDistributionCap.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}
Maximum lawful annual corpus distribution
{/* 4 Beneficiary Allocations Bar */}
Statutory Trust Quad-Cameral Fund Allocation Housing Allocation: {config.housingUnitsCount} Units in {config.housingLocation}
Perpetual Corpus (60%) ${(summary.perpetualCorpusAmount / 1000000).toFixed(1)}M
Research & Post-Quantum Security
Housing SPV (25%) ${(summary.housingSpvAmount / 1000000).toFixed(1)}M
{config.housingUnitsCount} Rowhomes for SSDI/SSI
Litigant AI Grant (10%) ${(summary.grantPoolAmount / 1000000).toFixed(1)}M
Pro Se Parity & Cognitive Access
Fiduciary Reserve (5%) ${(summary.fiduciaryReserveAmount / 1000000).toFixed(1)}M
Statutory Auditing & Custody
{/* CUSIP Portfolio Management Section */}

CUSIP Portfolio & Luhn Mod-10 Verification Table

Each CUSIP is parsed into 6-character Issuer Code, 2-character Issue Code, and 9th check digit.

{/* Table of CUSIPs */}
{cusips.map((item, index) => { const validation = validateCusip(item.cusip); const convertedShares = item.exchangeRatio > 0 ? Math.round(item.principalAmount * item.exchangeRatio) : 0; return ( {/* CUSIP with badge */} {/* Luhn Validation Badge */} {/* Issuer & Series */} {/* Par Claim Amount */} {/* Coupon */} {/* Maturity */} {/* Ratio */} {/* Converted Shares */} {/* Actions */} ); })}
# CUSIP Number Check Digit Status Issuer & Series Description Par Claim ($) Coupon Maturity Exchange Ratio Converted Shares Actions
{index + 1}
{formatCusipSpaced(item.cusip)}
{validation.isValid ? ( Luhn Valid (Digit: {validation.actualCheckDigit}) ) : (
Check Digit Mismatch {validation.expectedCheckDigit !== null && ( )}
)}
{item.issuer}
{item.seriesDescription}
${item.principalAmount.toLocaleString('en-US', { minimumFractionDigits: 2 })} {item.couponRatePercent}% {item.maturityDate} {item.exchangeRatio} {convertedShares.toLocaleString()} {item.tickerSymbol}
{/* CUSIP Inline/Modal Editor */} {isEditorOpen && (

{editingCusipId ? 'Edit CUSIP Entry' : 'Add New Custom CUSIP'}

{ const val = e.target.value.toUpperCase(); setFormData({ ...formData, cusip: val }); }} placeholder="e.g. 917300AA1 or 037833100" maxLength={9} className="flex-1 px-3 py-2 bg-slate-950 border border-slate-700 rounded-lg text-white font-mono text-sm focus:outline-none focus:ring-2 focus:ring-indigo-500 uppercase" required /> {formData.cusip.length >= 8 && ( )}
{formData.cusip.length > 0 && (
{(() => { const res = validateCusip(formData.cusip); return res.isValid ? ( Valid CUSIP (Issuer: {res.issuerCode}, Issue: {res.issueCode}, Check: {res.actualCheckDigit}) ) : ( {res.errorMessage} ); })()}
)}
setFormData({ ...formData, issuer: e.target.value })} className="w-full px-3 py-1.5 bg-slate-950 border border-slate-700 rounded-lg text-white text-xs focus:ring-1 focus:ring-indigo-500" required />
setFormData({ ...formData, seriesDescription: e.target.value })} className="w-full px-3 py-1.5 bg-slate-950 border border-slate-700 rounded-lg text-white text-xs focus:ring-1 focus:ring-indigo-500" required />
setFormData({ ...formData, principalAmount: parseFloat(e.target.value) || 0 })} className="w-full px-3 py-1.5 bg-slate-950 border border-slate-700 rounded-lg text-white text-xs font-mono focus:ring-1 focus:ring-indigo-500" required />
setFormData({ ...formData, couponRatePercent: parseFloat(e.target.value) || 0 })} className="w-full px-3 py-1.5 bg-slate-950 border border-slate-700 rounded-lg text-white text-xs font-mono focus:ring-1 focus:ring-indigo-500" required />
setFormData({ ...formData, maturityDate: e.target.value })} placeholder="e.g. January 20, 2028" className="w-full px-3 py-1.5 bg-slate-950 border border-slate-700 rounded-lg text-white text-xs focus:ring-1 focus:ring-indigo-500" required />
setFormData({ ...formData, exchangeRatio: parseFloat(e.target.value) || 0 })} className="w-full px-3 py-1.5 bg-slate-950 border border-slate-700 rounded-lg text-white text-xs font-mono focus:ring-1 focus:ring-indigo-500" required />
Yields {Math.round(formData.principalAmount * formData.exchangeRatio).toLocaleString()} shares
setFormData({ ...formData, tickerSymbol: e.target.value.toUpperCase() })} placeholder="e.g. LEU, AAPL, GRC" className="w-full px-3 py-1.5 bg-slate-950 border border-slate-700 rounded-lg text-white text-xs font-mono uppercase focus:ring-1 focus:ring-indigo-500" required />
)} {/* Parties, Jurisdiction & Housing Preservation Configuration (Expandable) */}
{isConfigExpanded && (
{/* Petitioner Info */}
Petitioners & Fiduciary Settlors
setConfig({ ...config, petitionerName: e.target.value })} className="w-full px-2.5 py-1.5 bg-slate-950 border border-slate-700 rounded-lg text-white" />
setConfig({ ...config, petitionerAddress: e.target.value })} className="w-full px-2.5 py-1.5 bg-slate-950 border border-slate-700 rounded-lg text-white" />
setConfig({ ...config, coPetitionerName: e.target.value })} className="w-full px-2.5 py-1.5 bg-slate-950 border border-slate-700 rounded-lg text-white" />
{/* Custodial & Depository Endpoints */}
Depository Bank & Transfer Agent (UCC § 8-401)
setConfig({ ...config, depositoryBank: e.target.value })} className="w-full px-2.5 py-1.5 bg-slate-950 border border-slate-700 rounded-lg text-white" />
setConfig({ ...config, transferAgent: e.target.value })} className="w-full px-2.5 py-1.5 bg-slate-950 border border-slate-700 rounded-lg text-white" />
setConfig({ ...config, respondentCorporation: e.target.value })} className="w-full px-2.5 py-1.5 bg-slate-950 border border-slate-700 rounded-lg text-white" />
{/* Court Venues & Case No */}
Court Jurisdictions & Case Dockets
setConfig({ ...config, stateCourtVenue: e.target.value })} className="w-full px-2.5 py-1.5 bg-slate-950 border border-slate-700 rounded-lg text-white" />
setConfig({ ...config, federalCourtVenue: e.target.value })} className="w-full px-2.5 py-1.5 bg-slate-950 border border-slate-700 rounded-lg text-white" />
setConfig({ ...config, caseNumber: e.target.value })} placeholder="e.g. C-03-CV-26-004128" className="w-full px-2.5 py-1.5 bg-slate-950 border border-slate-700 rounded-lg text-white font-mono" />
setConfig({ ...config, filingDate: e.target.value })} className="w-full px-2.5 py-1.5 bg-slate-950 border border-slate-700 rounded-lg text-white" />
{/* Housing Preservation & ADR/ADX Parameters */}
Housing Preservation (25% SPV) & SSDI/SSI Target
setConfig({ ...config, housingUnitsCount: parseInt(e.target.value, 10) || 0 })} className="w-full px-2.5 py-1.5 bg-slate-950 border border-slate-700 rounded-lg text-white font-mono" />
setConfig({ ...config, housingLocation: e.target.value })} className="w-full px-2.5 py-1.5 bg-slate-950 border border-slate-700 rounded-lg text-white" />
Preserved for SSDI/SSI applicant housing and PSDLEF community land trust perpetual custody.
)}
{/* Generated Documents Workspace */}
{/* Document Selection Tabs */}
Auto-Generated Court Pleadings & Statutory Indentures (6 Instruments)
Live Synchronized with {cusips.length} CUSIP{cusips.length > 1 ? 's' : ''}
{generatedDocs.map((doc) => { const isSelected = doc.id === selectedDocId; return ( ); })}
{/* Document Viewer Controls Sub-Bar */}
{/* View Mode Switcher */}
{/* Line numbers toggle */}
{/* Action buttons (Copy, Download, Print) */}
{/* In-document search */}
setDocSearchQuery(e.target.value)} placeholder="Find in document..." className="w-full pl-8 pr-2.5 py-1 bg-slate-950 border border-slate-800 rounded-lg text-xs text-white placeholder-slate-500 focus:outline-none focus:ring-1 focus:ring-indigo-500" />
{/* Document Content Display Area */}
{viewMode === 'latex' ? (
              {activeDoc.latexText}
            
) : (
Automated Drafting Instrument • {activeDoc.badge} • Ref: {activeDoc.id}
{activeDoc.plainText.split('\n').map((line, idx) => { const isHeading1 = line.startsWith('# '); const isHeading2 = line.startsWith('## '); const isHeading3 = line.startsWith('### '); const isHeading4 = line.startsWith('#### '); const isDivider = line.startsWith('---'); const isTable = line.startsWith('|'); if (isHeading1) { return (

{line.replace('# ', '')}

); } if (isHeading2) { return (

{line.replace('## ', '')}

); } if (isHeading3) { return (

{line.replace('### ', '')}

); } if (isHeading4) { return (

{line.replace('#### ', '')}

); } if (isDivider) { return
; } if (isTable) { return (
{line}
); } return (
{showLineNumbers && ( {idx + 1} )}

{line || '\u00A0'}

); })}
)}
); };