import { BillingSummaryPanel } from '@/components/sponsors/BillingSummaryPanel'; import { MetricCard } from '@/components/sponsors/MetricCard'; import { RenewalAlert } from '@/components/sponsors/RenewalAlert'; import { Activity, SponsorActivityPanel } from '@/components/sponsors/SponsorActivityPanel'; import { SponsorContractCard } from '@/components/sponsors/SponsorContractCard'; import { SponsorDashboardHeader } from '@/components/sponsors/SponsorDashboardHeader'; import { SponsorshipCategoryCard } from '@/components/sponsors/SponsorshipCategoryCard'; import { routes } from '@/lib/routing/RouteConfig'; import type { SponsorDashboardViewData } from '@/lib/view-data/SponsorDashboardViewData'; import { Box } from '@/ui/Box'; import { Button } from '@/ui/Button'; import { Card } from '@/ui/Card'; import { Container } from '@/ui/Container'; import { Grid } from '@/ui/Grid'; import { Heading } from '@/ui/Heading'; import { Icon } from '@/ui/Icon'; import { Link } from '@/ui/Link'; import { Stack } from '@/ui/Stack'; import { Text } from '@/ui/Text'; import { Bell, Car, ChevronRight, Clock, DollarSign, Eye, Flag, LucideIcon, Megaphone, Plus, TrendingUp, Trophy, Users } from 'lucide-react'; interface SponsorDashboardTemplateProps { viewData: SponsorDashboardViewData; } export function SponsorDashboardTemplate({ viewData }: SponsorDashboardTemplateProps) { const categoryData = viewData.categoryData; const billingStats: Array<{ label: string; value: string | number; icon: LucideIcon; variant: 'info' | 'success' | 'default' | 'warning'; }> = [ { label: 'Total Investment', value: viewData.formattedTotalInvestment, icon: DollarSign, variant: 'info', }, { label: 'Active Sponsorships', value: viewData.activeSponsorships, icon: Trophy, variant: 'success', }, { label: 'Cost per 1K Views', value: viewData.costPerThousandViews, icon: Eye, variant: 'default', }, { label: 'Upcoming Renewals', value: viewData.upcomingRenewals.length, icon: Bell, variant: viewData.upcomingRenewals.length > 0 ? 'warning' : 'default', }, ]; const activities: Activity[] = viewData.recentActivity.map((a: any) => ({ id: a.id, type: 'sponsorship_approved', // Mapping logic would go here title: a.message, description: a.formattedImpressions ? `${a.formattedImpressions} impressions` : '', timestamp: a.time, icon: Clock, color: a.typeColor || 'primary-accent', })); return ( {/* Header */} console.log('Refresh')} /> {/* Billing Summary */} {/* Key Metrics */} {/* Main Content Grid */} {/* Sponsorship Categories */} Your Sponsorships {/* Top Performing Sponsorships */} Top Performing {/* Recent Activity */} {/* Quick Actions */} Quick Actions {/* Renewal Alerts */} {viewData.upcomingRenewals.length > 0 && ( Upcoming Renewals {viewData.upcomingRenewals.map((renewal: any) => ( ))} )} ); }