import { Link } from "react-router"; import type { Route } from "./+types/admin.sports-seasons"; import { findAllSportsSeasons } from "~/models/sports-season"; import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from "~/components/ui/card"; import { Button } from "~/components/ui/button"; import { Plus, Calendar } from "lucide-react"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "~/components/ui/table"; import { Badge } from "~/components/ui/badge"; export function meta(): Route.MetaDescriptors { return [{ title: "Sports Seasons - Brackt Admin" }]; } export async function loader() { const sportsSeasons = await findAllSportsSeasons(); // Type assertion since we know the sport and participants relations are included from the model return { sportsSeasons: sportsSeasons as Array< typeof sportsSeasons[0] & { sport: { id: string; name: string; type: string; slug: string }; participants: Array<{ id: string }>; } > }; } export default function AdminSportsSeasons({ loaderData }: Route.ComponentProps) { const { sportsSeasons } = loaderData; return (

Sports Seasons

Manage sports seasons across all sports

All Sports Seasons {sportsSeasons.length} {sportsSeasons.length === 1 ? "season" : "seasons"} total {sportsSeasons.length === 0 ? (

No sports seasons yet

Get started by creating your first sports season

) : ( Name Sport Year Status Scoring Type Participants Actions {sportsSeasons.map((season) => ( {season.name} {season.sport.name} {season.year} {season.status} {season.scoringType.replace("_", " ")} {season.participants.length}
))}
)}
); }