import { Form, Link } from "react-router"; import type { Route } from "./+types/admin.sports-seasons.$id.events"; import { loader, action } from "./admin.sports-seasons.$id.events.server"; import { Button } from "~/components/ui/button"; import { Input } from "~/components/ui/input"; import { Label } from "~/components/ui/label"; import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from "~/components/ui/card"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "~/components/ui/select"; import { Badge } from "~/components/ui/badge"; import { Textarea } from "~/components/ui/textarea"; import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger, } from "~/components/ui/alert-dialog"; import { Calendar, Trophy, ArrowLeft, Trash2, ListPlus } from "lucide-react"; import { format, parseISO } from "date-fns"; import { QualifyingPointsStandings } from "~/components/scoring/QualifyingPointsStandings"; import { getEventTypeLabel } from "~/models/scoring-event"; export function meta({ data }: Route.MetaArgs): Route.MetaDescriptors { return [{ title: `Events — ${data?.sportsSeason?.name ?? "Sports Season"} - Brackt Admin` }]; } export { loader, action }; export default function SportsSeasonEvents({ loaderData, actionData, }: Route.ComponentProps) { const { sportsSeason, events, qpStandings, scoringRules } = loaderData; const defaultEventType = sportsSeason.scoringPattern === "qualifying_points" ? "major_tournament" : sportsSeason.scoringPattern === "season_standings" ? "schedule_event" : "playoff_game"; const getStatusBadge = (isComplete: boolean, eventType: string, eventDate?: string | null) => { if (isComplete) { return ( Completed ); } if (eventType === "schedule_event") { const today = new Date().toISOString().split("T")[0]; const isPast = eventDate && eventDate < today; return isPast ? ( Results Pending ) : ( Upcoming ); } return In Progress; }; return (

Scoring Events

{sportsSeason.sport.name} - {sportsSeason.name}

{sportsSeason.scoringPattern === "qualifying_points" && (
Qualifying Points Mode
)}
{/* Success/Error Messages */} {actionData?.error && (
{actionData.error}
)} {actionData?.success && (
{actionData.success}
)} {/* QP Standings for qualifying points sports */} {sportsSeason.scoringPattern === "qualifying_points" && qpStandings && ( = sportsSeason.totalMajors && !sportsSeason.qualifyingPointsFinalized } /> )} {/* Create New Event Card */} Create New Event Add a new scoring event (bracket, tournament, standings, etc.)
{sportsSeason.scoringPattern === "qualifying_points" && (

Major Tournament events will automatically award qualifying points when completed.

)}
{actionData?.error && (
{actionData.error}
)}
{/* Bulk Create Card */} Bulk Import Events Paste a schedule — one event per line. Format:{" "} Event Name, YYYY-MM-DD {" "} (date is optional).