'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, MapPin } from 'lucide-react'; import { format } from 'date-fns'; interface Booking { id: string; date: string; startTime: string; endTime: string; status: string; notes?: string; createdAt: Date; court: { id: string; name: string; }; user: { id: string; name: string; surname: string; email: string; }; } export function RecentBookings() { const [bookings, setBookings] = useState([]); const [loading, setLoading] = useState(true); useEffect(() => { fetchRecentBookings(); }, []); const fetchRecentBookings = async () => { try { setLoading(true); const response = await fetch('/api/dashboard/recent-bookings'); if (response.ok) { const data = await response.json(); setBookings(data.bookings || []); } } catch (error) { console.error('Error fetching recent bookings:', error); } finally { setLoading(false); } }; const formatDate = (dateStr: string) => { try { const date = new Date(dateStr); return format(date, 'MMM dd'); } catch { return dateStr; } }; if (loading) { return ( Recent Bookings
{[1, 2, 3].map((i) => (
))}
); } return ( Recent Bookings {bookings.length === 0 ? (
No recent bookings yet. Make your first booking!
) : (
{bookings.map((booking) => (
{booking.court.name}
{booking.status}
{formatDate(booking.date)}
{booking.startTime} - {booking.endTime}
{booking.notes &&

{booking.notes}

}
))}
)}
); }