'use client'; import { useState } from 'react'; import { useSponsorSponsorships } from "@/hooks/sponsor/useSponsorSponsorships"; import { SponsorCampaignsTemplate, SponsorshipType } from "@/templates/SponsorCampaignsTemplate"; import { Box } from "@/ui/primitives/Box"; import { Text } from "@/ui/Text"; import { Button } from "@/ui/Button"; export default function SponsorCampaignsPage() { const [typeFilter, setTypeFilter] = useState('all'); const [searchQuery, setSearchQuery] = useState(''); const { data: sponsorshipsData, isLoading, error, retry } = useSponsorSponsorships('demo-sponsor-1'); if (isLoading) { return ( Loading sponsorships... ); } if (error || !sponsorshipsData) { return ( {error?.getUserMessage() || 'No sponsorships data available'} {error && ( )} ); } // Calculate stats const stats = { total: sponsorshipsData.sponsorships.length, active: sponsorshipsData.sponsorships.filter((s: any) => s.status === 'active').length, pending: sponsorshipsData.sponsorships.filter((s: any) => s.status === 'pending_approval').length, approved: sponsorshipsData.sponsorships.filter((s: any) => s.status === 'approved').length, rejected: sponsorshipsData.sponsorships.filter((s: any) => s.status === 'rejected').length, totalInvestment: sponsorshipsData.sponsorships.filter((s: any) => s.status === 'active').reduce((sum: number, s: any) => sum + s.price, 0), totalImpressions: sponsorshipsData.sponsorships.reduce((sum: number, s: any) => sum + s.impressions, 0), }; const viewData = { sponsorships: sponsorshipsData.sponsorships as any, stats, }; const filteredSponsorships = sponsorshipsData.sponsorships.filter((s: any) => { // For now, we only have leagues in the DTO if (typeFilter !== 'all' && typeFilter !== 'leagues') return false; if (searchQuery && !s.leagueName.toLowerCase().includes(searchQuery.toLowerCase())) return false; return true; }); return ( ); }