'use client' import { useState, useEffect } from 'react' import { UserGrowthChart } from '@/components/charts/UserGrowthChart' import { MembershipDistributionChart } from '@/components/charts/MembershipDistributionChart' import { RevenueChart } from '@/components/charts/RevenueChart' import { Card, CardHeader, CardContent } from '@/components/ui/card' interface ChartData { label: string value: number color?: string } export function AnalyticsDashboard() { const [userGrowthData, setUserGrowthData] = useState([]) const [membershipData, setMembershipData] = useState([]) const [revenueData, setRevenueData] = useState([]) const [loading, setLoading] = useState(true) useEffect(() => { fetchAnalyticsData() }, []) const fetchAnalyticsData = async () => { setLoading(true) try { // Mock data for demonstration - replace with real API calls const mockUserGrowth = [ { label: 'Jan', value: 45 }, { label: 'Feb', value: 52 }, { label: 'Mar', value: 61 }, { label: 'Apr', value: 58 }, { label: 'May', value: 67 }, { label: 'Jun', value: 74 }, ] const mockMembershipData = [ { label: 'Basic', value: 45, color: '#6b7280' }, { label: 'Premium', value: 28, color: '#3b82f6' }, { label: 'VIP', value: 12, color: '#f59e0b' }, ] const mockRevenueData = [ { label: 'Jan', value: 12500, color: '#10b981' }, { label: 'Feb', value: 14200, color: '#10b981' }, { label: 'Mar', value: 16800, color: '#10b981' }, { label: 'Apr', value: 15900, color: '#10b981' }, { label: 'May', value: 18200, color: '#10b981' }, { label: 'Jun', value: 19400, color: '#10b981' }, ] setUserGrowthData(mockUserGrowth) setMembershipData(mockMembershipData) setRevenueData(mockRevenueData) } catch (error) { console.error('Failed to fetch analytics data:', error) } finally { setLoading(false) } } const totalUsers = userGrowthData.length > 0 ? userGrowthData[userGrowthData.length - 1].value : 0 const totalRevenue = revenueData.reduce((sum, item) => sum + item.value, 0) const activeMembers = membershipData.reduce((sum, item) => sum + item.value, 0) if (loading) { return (

Loading analytics...

) } return (
{/* Key Metrics Cards - 3 columns */}

Total Athletes

{totalUsers}
active

Total Revenue

${totalRevenue.toLocaleString()}
ytd

Active Members

{activeMembers}
members
{/* Charts - 3 Columns Horizontal */}

User Growth Trend

Last 6 months performance

Membership Mix

Distribution breakdown

Revenue Stream

Monthly earnings

) }