'use client'; export const dynamic = 'force-dynamic'; import { motion, useReducedMotion, AnimatePresence } from 'framer-motion'; import Card from '@/components/ui/Card'; import Button from '@/components/ui/Button'; import StatusBadge from '@/components/ui/StatusBadge'; import InfoBanner from '@/components/ui/InfoBanner'; import MetricCard from '@/components/sponsors/MetricCard'; import SponsorshipCategoryCard from '@/components/sponsors/SponsorshipCategoryCard'; import ActivityItem from '@/components/sponsors/ActivityItem'; import RenewalAlert from '@/components/sponsors/RenewalAlert'; import { BarChart3, Eye, Users, Trophy, TrendingUp, Calendar, DollarSign, Target, ArrowUpRight, ArrowDownRight, ExternalLink, Loader2, Car, Flag, Megaphone, ChevronRight, Plus, Bell, Settings, CreditCard, FileText, RefreshCw } from 'lucide-react'; import Link from 'next/link'; import { useSponsorDashboard } from '@/lib/hooks/sponsor/useSponsorDashboard'; export default function SponsorDashboardPage() { const shouldReduceMotion = useReducedMotion(); // Use the hook instead of manual query construction const { data: dashboardData, isLoading, error, retry } = useSponsorDashboard('demo-sponsor-1'); if (isLoading) { return (

Loading dashboard...

); } if (error || !dashboardData) { return (

{error?.getUserMessage() || 'Failed to load dashboard data'}

{error && ( )}
); } const categoryData = dashboardData.categoryData; return (
{/* Header */}

Sponsor Dashboard

Welcome back, {dashboardData.sponsorName}

{/* Time Range Selector */}
{(['7d', '30d', '90d', 'all'] as const).map((range) => ( ))}
{/* Quick Actions */}
{/* Key Metrics */}
{/* Sponsorship Categories */}

Your Sponsorships

{/* Main Content Grid */}
{/* Left Column - Sponsored Entities */}
{/* Top Performing Sponsorships */}

Top Performing

{/* Leagues */} {dashboardData.sponsorships.leagues.map((league: any) => (
{league.tier === 'main' ? 'Main' : 'Secondary'}
{league.entityName}
{league.details}
{league.formattedImpressions}
impressions
))} {/* Teams */} {dashboardData.sponsorships.teams.map((team: any) => (
Team
{team.entityName}
{team.details}
{team.formattedImpressions}
impressions
))} {/* Drivers */} {dashboardData.sponsorships.drivers.slice(0, 2).map((driver: any) => (
Driver
{driver.entityName}
{driver.details}
{driver.formattedImpressions}
impressions
))}
{/* Upcoming Events */}

Upcoming Sponsored Events

{dashboardData.sponsorships.races.length > 0 ? (
{dashboardData.sponsorships.races.map((race: any) => (

{race.entityName}

{race.details}

{race.status}
))}
) : (

No upcoming sponsored events

)}
{/* Right Column - Activity & Quick Actions */}
{/* Quick Actions */}

Quick Actions

{/* Renewal Alerts */} {dashboardData.upcomingRenewals.length > 0 && (

Upcoming Renewals

{dashboardData.upcomingRenewals.map((renewal: any) => ( ))}
)} {/* Recent Activity */}

Recent Activity

{dashboardData.recentActivity.map((activity: any) => ( ))}
{/* Investment Summary */}

Investment Summary

Active Sponsorships {dashboardData.activeSponsorships}
Total Investment {dashboardData.formattedTotalInvestment}
Cost per 1K Views {dashboardData.costPerThousandViews}
Next Invoice Jan 1, 2026
); }