'use client'; import { useState, useEffect } from 'react'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; import { Badge } from '@/components/ui/badge'; import { Users, Calendar, Settings, BarChart3, Bell, Shield, Clock, MapPin, Activity, LogOut, ArrowLeft, } from 'lucide-react'; import { useRouter } from 'next/navigation'; import { AdminUserManagement } from './AdminUserManagement'; import { AdminAnnouncementManagement } from './AdminAnnouncementManagement'; import { AdminLogs } from './AdminLogs'; import { AdminRecentBookings } from './AdminRecentBookings'; import { AdminCourtManagement } from './AdminCourtManagement'; import { AdminSettingsManagement } from './AdminSettingsManagement'; import { AdminTimeSlotManagement } from './AdminTimeSlotManagement'; import { ModeToggle } from '@/components/ui/mode-toggle'; interface AdminStats { totalUsers: number; activeCourts: number; todaysBookings: number; monthlyBookings: number; } interface RecentBooking { id: string; date: string; startTime: string; endTime: string; courtName: string; userName: string; status: string; } export function AdminDashboard() { const router = useRouter(); const [stats, setStats] = useState({ totalUsers: 0, activeCourts: 0, todaysBookings: 0, monthlyBookings: 0, }); const [recentBookings, setRecentBookings] = useState([]); const [loading, setLoading] = useState(true); useEffect(() => { fetchStats(); }, []); const fetchStats = async () => { try { const response = await fetch('/api/admin/stats'); if (response.ok) { const data = await response.json(); setStats(data.stats); setRecentBookings(data.recentBookings); } } catch (error) { console.error('Error fetching admin stats:', error); } finally { setLoading(false); } }; const handleLogout = async () => { try { await fetch('/api/auth/logout', { method: 'POST', }); router.push('/'); } catch (error) { console.error('Logout error:', error); } }; return (
{/* Header */}
{/* Desktop Layout */}

Admin Dashboard

Administrator
{/* Mobile Layout */}
{/* Top row */}

Admin Dashboard

Admin
{/* Bottom row */}
{/* Stats Cards */}
Total Users
{loading ? '...' : stats.totalUsers}

Registered users

Active Courts
{loading ? '...' : stats.activeCourts}

Available for booking

Today's Bookings
{loading ? '...' : stats.todaysBookings}

Bookings for today

Monthly Bookings
{loading ? '...' : stats.monthlyBookings}

This month's total

{/* Admin Tabs */} Bookings Users Courts Settings Announcements Logs {' '}
{' '}
); }