import { format, parseISO } from "date-fns"; import { Card, CardContent, CardHeader, CardTitle } from "~/components/ui/card"; import { Badge } from "~/components/ui/badge"; import { Calendar, CheckCircle2, Clock } from "lucide-react"; interface ScheduleEvent { id: string; name: string; eventDate: string | null; eventType: string; isComplete: boolean; completedAt?: Date | string | null; } interface EventScheduleProps { upcomingEvents: ScheduleEvent[]; recentEvents: ScheduleEvent[]; } function formatEventDate(dateStr: string | null | undefined): string { if (!dateStr) return "Date TBD"; try { // eventDate is stored as a date string "YYYY-MM-DD" return format(parseISO(dateStr), "MMM d, yyyy"); } catch { return dateStr; } } function getEventTypeLabel(eventType: string): string { switch (eventType) { case "playoff_game": return "Bracket"; case "major_tournament": return "Major"; case "final_standings": return "Final Standings"; case "schedule_event": return "Non-Scoring"; default: return eventType; } } export function EventSchedule({ upcomingEvents, recentEvents }: EventScheduleProps) { const hasUpcoming = upcomingEvents.length > 0; const hasRecent = recentEvents.length > 0; if (!hasUpcoming && !hasRecent) return null; return (
{/* Upcoming Events */} {hasUpcoming && ( Upcoming
    {upcomingEvents.map((event, index) => (
  • {index === 0 && ( )} {event.name}

    {formatEventDate(event.eventDate)}

    {event.eventType === "schedule_event" ? ( !event.isComplete && event.eventDate && event.eventDate < new Date().toISOString().split("T")[0] && ( Results Pending ) ) : ( {getEventTypeLabel(event.eventType)} )}
  • ))}
)} {/* Recent Results */} {hasRecent && ( Recent Results
    {recentEvents.map((event, index) => (
  • {event.name}

    {formatEventDate(event.eventDate)}

    {event.eventType !== "schedule_event" && ( Done )}
  • ))}
)}
); }