'use client';
import { useSponsorBilling } from "@/hooks/sponsor/useSponsorBilling";
import { SponsorBillingTemplate } from "@/templates/SponsorBillingTemplate";
import { Box } from "@/ui/Box";
import { Button } from "@/ui/Button";
import { Text } from "@/ui/Text";
import { AlertTriangle, Calendar, DollarSign, TrendingUp } from "lucide-react";
export default function SponsorBillingPage() {
const { data: billingData, isLoading, error, retry } = useSponsorBilling('demo-sponsor-1');
if (isLoading) {
return (
Loading billing data...
);
}
if (error || !billingData) {
return (
{error?.message || 'No billing data available'}
{error && (
)}
);
}
const handleSetDefault = (methodId: string) => {
console.log('Setting default payment method:', methodId);
};
const handleDownloadInvoice = (invoiceId: string) => {
console.log('Downloading invoice:', invoiceId);
};
const billingStats = [
{
label: 'Total Spent',
value: `$${billingData.stats.totalSpent.toFixed(2)}`,
subValue: 'All time',
icon: DollarSign,
variant: 'success' as const,
},
{
label: 'Pending Payments',
value: `$${billingData.stats.pendingAmount.toFixed(2)}`,
subValue: `${billingData.invoices.filter((i: any) => i.status === 'pending' || i.status === 'overdue').length} invoices`,
icon: AlertTriangle,
variant: (billingData.stats.pendingAmount > 0 ? 'warning' : 'default') as 'warning' | 'default',
},
{
label: 'Next Payment',
value: new Date(billingData.stats.nextPaymentDate).toLocaleDateString(),
subValue: `$${billingData.stats.nextPaymentAmount.toFixed(2)}`,
icon: Calendar,
variant: 'info' as const,
},
{
label: 'Monthly Average',
value: `$${billingData.stats.averageMonthlySpend.toFixed(2)}`,
subValue: 'Last 6 months',
icon: TrendingUp,
variant: 'default' as const,
},
];
const transactions = billingData.invoices.map((inv: any) => ({
id: inv.id,
date: inv.date,
description: inv.description,
amount: inv.totalAmount,
status: inv.status as any,
invoiceNumber: inv.invoiceNumber,
type: inv.sponsorshipType,
}));
return (
);
}