'use client'; import { useState, useEffect } from 'react'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Badge } from '@/components/ui/badge'; import { Calendar, Clock, Users, MapPin, TrendingUp, Activity } from 'lucide-react'; interface DashboardStats { totalUsers: number; todayBookings: number; activeCourts: number; userBookings: number; upcomingBookings: number; } export function QuickStats() { const [stats, setStats] = useState({ totalUsers: 0, todayBookings: 0, activeCourts: 0, userBookings: 0, upcomingBookings: 0, }); const [loading, setLoading] = useState(true); useEffect(() => { fetchStats(); }, []); const fetchStats = async () => { try { setLoading(true); const response = await fetch('/api/dashboard/stats'); if (response.ok) { const data = await response.json(); setStats(data.stats); } } catch (error) { console.error('Error fetching dashboard stats:', error); } finally { setLoading(false); } }; if (loading) { return (
{[1, 2, 3, 4].map((i) => (
))}
); } return (
Quick Stats
Your Bookings
{stats.userBookings} active
Upcoming
{stats.upcomingBookings} bookings
Active Courts
{stats.activeCourts} available
Today\'s Bookings
{stats.todayBookings} total
System Info
Total Users
{stats.totalUsers}
System Status
Online
); }