import {Card, CardContent, CardHeader, CardTitle} from '@/components/ui/card'; import {Button} from '@/components/ui/button'; import {useAppSelector} from '@/store'; export default function ClientsPage() { const {clients, invoices} = useAppSelector(state => state.invoices); const getClientStats = (clientId: string) => { const clientInvoices = invoices.filter(i => i.clientId === clientId); const totalBilled = clientInvoices.reduce((sum, i) => sum + i.total, 0); const outstanding = clientInvoices.filter(i => i.status === 'sent' || i.status === 'overdue').reduce((sum, i) => sum + i.total, 0); return {totalBilled, outstanding, count: clientInvoices.length}; }; const fmt = (value: number) => new Intl.NumberFormat('en-US', {style: 'currency', currency: 'USD', maximumFractionDigits: 0}).format(value); return (
{/* Header */}

Clients

{/* Summary Cards */}

Total Clients

{clients.length}

With Active Invoices

{clients.filter(c => getClientStats(c.id).count > 0).length}

{/* Clients List */} All Clients {clients.length === 0 ? (

No clients yet

) : (
{clients.map(client => { const stats = getClientStats(client.id); return (

{client.name}

{client.email}{client.company && ` ยท ${client.company}`}

Billed

{fmt(stats.totalBilled)}

Outstanding

{fmt(stats.outstanding)}

Invoices

{stats.count}

); })}
)}
); }