import { format } from "date-fns";
import { Calendar, Users } from "lucide-react";
import { Link } from "react-router";
import { Badge } from "~/components/ui/badge";
import {
Card,
CardContent,
CardHeader,
CardTitle,
} from "~/components/ui/card";
import { formatEventDate } from "~/lib/date-utils";
import type { UpcomingParticipantEvent } from "~/models/scoring-event";
export interface CalendarPanelEvent extends UpcomingParticipantEvent {
sportName: string;
sportSeasonName: string;
/** Present when showing events across multiple leagues (home page) */
leagueName?: string;
leagueId?: string;
sportsSeasonPageUrl?: string;
}
interface Props {
events: CalendarPanelEvent[];
/** When true, renders a league name badge on each row */
showLeague?: boolean;
}
function ParticipantList({ participants }: { participants: Array<{ id: string; name: string }> }) {
const MAX_SHOWN = 3;
const shown = participants.slice(0, MAX_SHOWN);
const overflow = participants.length - MAX_SHOWN;
return (
{shown.map((p) => (
{gameDate.toLocaleTimeString(undefined, { hour: "numeric", minute: "2-digit", })}
)}No upcoming events in the next 30 days.
) : (