diff --git a/app/routes/admin._index.tsx b/app/routes/admin._index.tsx index 3b4b7fa..776cf70 100644 --- a/app/routes/admin._index.tsx +++ b/app/routes/admin._index.tsx @@ -1,5 +1,6 @@ import { Link } from "react-router"; import type { Route } from "./+types/admin._index"; + import { findAllSports } from "~/models/sport"; import { findAllSportsSeasons } from "~/models/sports-season"; import { findAllSeasonTemplates } from "~/models/season-template"; @@ -13,6 +14,10 @@ import { import { Button } from "~/components/ui/button"; import { Trophy, Calendar, FolderKanban, ArrowRight, Camera } from "lucide-react"; +export function meta(): Route.MetaDescriptors { + return [{ title: "Admin - Brackt" }]; +} + export async function loader() { const [sports, sportsSeasons, templates] = await Promise.all([ findAllSports(), diff --git a/app/routes/admin.data-sync.tsx b/app/routes/admin.data-sync.tsx index 8f9c20f..5cd41b7 100644 --- a/app/routes/admin.data-sync.tsx +++ b/app/routes/admin.data-sync.tsx @@ -1,6 +1,7 @@ import { useState } from "react"; import { useFetcher } from "react-router"; import type { Route } from "./+types/admin.data-sync"; + import { findAllSports } from "~/models/sport"; import { findAllSportsSeasons } from "~/models/sports-season"; import { findAllSeasonTemplates } from "~/models/season-template"; @@ -28,6 +29,10 @@ import { AlertDialogTrigger, } from "~/components/ui/alert-dialog"; +export function meta(): Route.MetaDescriptors { + return [{ title: "Data Sync - Brackt Admin" }]; +} + export async function loader() { const [sports, sportsSeasons, templates, participantCount, evCount] = await Promise.all([ diff --git a/app/routes/admin.participants.tsx b/app/routes/admin.participants.tsx index 7140075..7ebd21c 100644 --- a/app/routes/admin.participants.tsx +++ b/app/routes/admin.participants.tsx @@ -7,6 +7,10 @@ import { } from "~/components/ui/card"; import { Users } from "lucide-react"; +export function meta() { + return [{ title: "Participants - Brackt Admin" }]; +} + export default function AdminParticipants() { return (
diff --git a/app/routes/admin.sports-seasons.$id.events.$eventId.bracket.tsx b/app/routes/admin.sports-seasons.$id.events.$eventId.bracket.tsx index 5d558d5..692caf8 100644 --- a/app/routes/admin.sports-seasons.$id.events.$eventId.bracket.tsx +++ b/app/routes/admin.sports-seasons.$id.events.$eventId.bracket.tsx @@ -1,6 +1,7 @@ import { Form, Link } from "react-router"; import { useState, useEffect, useMemo } from "react"; import type { Route } from "./+types/admin.sports-seasons.$id.events.$eventId.bracket"; + import { loader, action } from "./admin.sports-seasons.$id.events.$eventId.bracket.server"; import { Button } from "~/components/ui/button"; import { Input } from "~/components/ui/input"; @@ -32,6 +33,10 @@ import { import { Badge } from "~/components/ui/badge"; import { ParticipantSelector } from "~/components/ParticipantSelector"; +export function meta({ data }: Route.MetaArgs): Route.MetaDescriptors { + return [{ title: `Bracket — ${data?.event?.name ?? "Event"} - Brackt Admin` }]; +} + export { loader, action }; export default function EventBracket({ diff --git a/app/routes/admin.sports-seasons.$id.events.$eventId.tsx b/app/routes/admin.sports-seasons.$id.events.$eventId.tsx index 74712d8..75b6a93 100644 --- a/app/routes/admin.sports-seasons.$id.events.$eventId.tsx +++ b/app/routes/admin.sports-seasons.$id.events.$eventId.tsx @@ -1,5 +1,6 @@ import { Form, Link } from "react-router"; import type { Route } from "./+types/admin.sports-seasons.$id.events.$eventId"; + import { loader, action } from "./admin.sports-seasons.$id.events.$eventId.server"; import { Button } from "~/components/ui/button"; import { Input } from "~/components/ui/input"; @@ -31,6 +32,10 @@ import { } from "~/components/ui/table"; import { useState } from "react"; +export function meta({ data }: Route.MetaArgs): Route.MetaDescriptors { + return [{ title: `${data?.event?.name ?? "Event"} — ${data?.sportsSeason?.name ?? "Sports Season"} - Brackt Admin` }]; +} + export { loader, action }; function EditEventCard({ event }: { event: { name: string; eventDate?: string | null } }) { diff --git a/app/routes/admin.sports-seasons.$id.events.tsx b/app/routes/admin.sports-seasons.$id.events.tsx index f076446..00f24af 100644 --- a/app/routes/admin.sports-seasons.$id.events.tsx +++ b/app/routes/admin.sports-seasons.$id.events.tsx @@ -1,5 +1,6 @@ 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"; @@ -36,6 +37,10 @@ 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({ diff --git a/app/routes/admin.sports-seasons.$id.expected-values.tsx b/app/routes/admin.sports-seasons.$id.expected-values.tsx index 4812c2f..22403d2 100644 --- a/app/routes/admin.sports-seasons.$id.expected-values.tsx +++ b/app/routes/admin.sports-seasons.$id.expected-values.tsx @@ -1,5 +1,6 @@ import { Link } from "react-router"; import type { Route } from "./+types/admin.sports-seasons.$id.expected-values"; + import { loader } from "./admin.sports-seasons.$id.expected-values.server"; import { Button } from "~/components/ui/button"; import { @@ -19,6 +20,10 @@ import { } from "~/components/ui/table"; import { ArrowLeft, Calculator } from "lucide-react"; +export function meta({ data }: Route.MetaArgs): Route.MetaDescriptors { + return [{ title: `Expected Values — ${data?.sportsSeason?.name ?? "Sports Season"} - Brackt Admin` }]; +} + export { loader }; const SCORING = [100, 70, 50, 40, 25, 25, 15, 15] as const; diff --git a/app/routes/admin.sports-seasons.$id.futures-odds.tsx b/app/routes/admin.sports-seasons.$id.futures-odds.tsx index 9c3cc1b..049f90d 100644 --- a/app/routes/admin.sports-seasons.$id.futures-odds.tsx +++ b/app/routes/admin.sports-seasons.$id.futures-odds.tsx @@ -1,5 +1,6 @@ import { Form, redirect, useLoaderData, useActionData, useNavigation } from 'react-router'; import type { Route } from './+types/admin.sports-seasons.$id.futures-odds'; + import { findSportsSeasonById, updateSportsSeason } from '~/models/sports-season'; import { findParticipantsBySportsSeasonId } from '~/models/participant'; import { getAllParticipantEVsForSeason, batchSaveSourceOdds, batchUpsertParticipantEVs } from '~/models/participant-expected-value'; @@ -20,6 +21,10 @@ import { import { useState } from 'react'; import { Loader2, Info, CheckCircle2, AlertCircle } from 'lucide-react'; +export function meta({ data }: Route.MetaArgs): Route.MetaDescriptors { + return [{ title: `Futures Odds — ${data?.sportsSeason?.name ?? "Sports Season"} - Brackt Admin` }]; +} + export async function loader({ params }: Route.LoaderArgs) { const sportsSeasonId = params.id; diff --git a/app/routes/admin.sports-seasons.$id.participants.tsx b/app/routes/admin.sports-seasons.$id.participants.tsx index 835e930..44a6186 100644 --- a/app/routes/admin.sports-seasons.$id.participants.tsx +++ b/app/routes/admin.sports-seasons.$id.participants.tsx @@ -1,5 +1,6 @@ import { Form, Link } from "react-router"; import type { Route } from "./+types/admin.sports-seasons.$id.participants"; + import { findSportsSeasonById } from "~/models/sports-season"; import { findParticipantsBySportsSeasonId, @@ -27,6 +28,10 @@ import { } from "~/components/ui/table"; import { Plus, Trash2, ArrowLeft } from "lucide-react"; +export function meta({ data }: Route.MetaArgs): Route.MetaDescriptors { + return [{ title: `Participants — ${data?.sportsSeason?.name ?? "Sports Season"} - Brackt Admin` }]; +} + export async function loader({ params }: Route.LoaderArgs) { const sportsSeason = await findSportsSeasonById(params.id); diff --git a/app/routes/admin.sports-seasons.$id.standings.tsx b/app/routes/admin.sports-seasons.$id.standings.tsx index 72ff4dc..f4f609a 100644 --- a/app/routes/admin.sports-seasons.$id.standings.tsx +++ b/app/routes/admin.sports-seasons.$id.standings.tsx @@ -1,5 +1,6 @@ import { Form, Link } from "react-router"; import type { Route } from "./+types/admin.sports-seasons.$id.standings"; + import { findSportsSeasonById } from "~/models/sports-season"; import { findParticipantsBySportsSeasonId } from "~/models/participant"; import { getSeasonResults, upsertSeasonResultsBulk } from "~/models/participant-season-result"; @@ -14,6 +15,10 @@ import { } from "~/components/ui/card"; import { ArrowLeft, Save, ListOrdered } from "lucide-react"; +export function meta({ data }: Route.MetaArgs): Route.MetaDescriptors { + return [{ title: `Standings — ${data?.sportsSeason?.name ?? "Sports Season"} - Brackt Admin` }]; +} + export async function loader({ params }: Route.LoaderArgs) { const sportsSeason = await findSportsSeasonById(params.id); if (!sportsSeason) { diff --git a/app/routes/admin.sports-seasons.$id.tsx b/app/routes/admin.sports-seasons.$id.tsx index cdaf733..cbd1b8e 100644 --- a/app/routes/admin.sports-seasons.$id.tsx +++ b/app/routes/admin.sports-seasons.$id.tsx @@ -1,5 +1,6 @@ import { Form, Link, redirect, useNavigate } from "react-router"; import type { Route } from "./+types/admin.sports-seasons.$id"; + import { findSportsSeasonById, updateSportsSeason, deleteSportsSeason } from "~/models/sports-season"; import { findParticipantsBySportsSeasonId } from "~/models/participant"; import { processSeasonStandings } from "~/models/scoring-calculator"; @@ -39,6 +40,10 @@ import { Badge } from "~/components/ui/badge"; import { Trash2, Users, Trophy, Calculator, CheckCircle2, Zap, AlertTriangle, Loader2 } from "lucide-react"; import { useState } from "react"; +export function meta({ data }: Route.MetaArgs): Route.MetaDescriptors { + return [{ title: `${data?.sportsSeason?.name ?? "Sports Season"} - Brackt Admin` }]; +} + export async function loader({ params }: Route.LoaderArgs) { const sportsSeason = await findSportsSeasonById(params.id); diff --git a/app/routes/admin.sports-seasons.new.tsx b/app/routes/admin.sports-seasons.new.tsx index 7069975..52bf0f7 100644 --- a/app/routes/admin.sports-seasons.new.tsx +++ b/app/routes/admin.sports-seasons.new.tsx @@ -1,5 +1,6 @@ import { Form, Link, redirect } from "react-router"; import type { Route } from "./+types/admin.sports-seasons.new"; + import { createSportsSeason } from "~/models/sports-season"; import { findAllSports } from "~/models/sport"; import { Button } from "~/components/ui/button"; @@ -21,6 +22,10 @@ import { } from "~/components/ui/select"; import { useState } from "react"; +export function meta(): Route.MetaDescriptors { + return [{ title: "New Sports Season - Brackt Admin" }]; +} + export async function loader() { const sports = await findAllSports(); return { sports }; diff --git a/app/routes/admin.sports-seasons.tsx b/app/routes/admin.sports-seasons.tsx index acf7e40..ca96cfd 100644 --- a/app/routes/admin.sports-seasons.tsx +++ b/app/routes/admin.sports-seasons.tsx @@ -1,5 +1,6 @@ import { Link } from "react-router"; import type { Route } from "./+types/admin.sports-seasons"; + import { findAllSportsSeasons } from "~/models/sports-season"; import { Card, @@ -20,6 +21,10 @@ import { } 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 diff --git a/app/routes/admin.sports.$id.tsx b/app/routes/admin.sports.$id.tsx index ce58f6e..73951a1 100644 --- a/app/routes/admin.sports.$id.tsx +++ b/app/routes/admin.sports.$id.tsx @@ -1,5 +1,6 @@ import { Form, Link, redirect } from "react-router"; import type { Route } from "./+types/admin.sports.$id"; + import { findSportById, updateSport } from "~/models/sport"; import { writeFile, mkdir } from "node:fs/promises"; import { join } from "node:path"; @@ -22,6 +23,10 @@ import { SelectValue, } from "~/components/ui/select"; +export function meta({ data }: Route.MetaArgs): Route.MetaDescriptors { + return [{ title: `${data?.sport?.name ?? "Sport"} - Brackt Admin` }]; +} + export async function loader({ params }: Route.LoaderArgs) { const sport = await findSportById(params.id); diff --git a/app/routes/admin.sports.new.tsx b/app/routes/admin.sports.new.tsx index c9188d5..816776b 100644 --- a/app/routes/admin.sports.new.tsx +++ b/app/routes/admin.sports.new.tsx @@ -1,5 +1,6 @@ import { Form, Link, redirect } from "react-router"; import type { Route } from "./+types/admin.sports.new"; + import { createSport } from "~/models/sport"; import { writeFile, mkdir } from "node:fs/promises"; import { join } from "node:path"; @@ -22,6 +23,10 @@ import { SelectValue, } from "~/components/ui/select"; +export function meta(): Route.MetaDescriptors { + return [{ title: "New Sport - Brackt Admin" }]; +} + export async function action({ request }: Route.ActionArgs) { const formData = await request.formData(); const name = formData.get("name"); diff --git a/app/routes/admin.sports.tsx b/app/routes/admin.sports.tsx index 662d3c5..a4fbfcf 100644 --- a/app/routes/admin.sports.tsx +++ b/app/routes/admin.sports.tsx @@ -1,5 +1,6 @@ import { Link } from "react-router"; import type { Route } from "./+types/admin.sports"; + import { findAllSportsWithActiveSeasons } from "~/models/sport"; import { Card, @@ -20,6 +21,10 @@ import { } from "~/components/ui/table"; import { Badge } from "~/components/ui/badge"; +export function meta(): Route.MetaDescriptors { + return [{ title: "Sports - Brackt Admin" }]; +} + export async function loader() { const sports = await findAllSportsWithActiveSeasons(); return { sports }; diff --git a/app/routes/admin.standings-snapshots.tsx b/app/routes/admin.standings-snapshots.tsx index 527aaa7..90986e5 100644 --- a/app/routes/admin.standings-snapshots.tsx +++ b/app/routes/admin.standings-snapshots.tsx @@ -1,6 +1,7 @@ import { useLoaderData, useActionData, Form } from "react-router"; import { redirect } from "react-router"; import type { Route } from "./+types/admin.standings-snapshots"; + import { database } from "~/database/context"; import { eq, or } from "drizzle-orm"; import * as schema from "~/database/schema"; @@ -24,6 +25,10 @@ import { } from "~/components/ui/table"; import { Calendar, RefreshCw, CheckCircle2, AlertCircle } from "lucide-react"; +export function meta(): Route.MetaDescriptors { + return [{ title: "Standings Snapshots - Brackt Admin" }]; +} + export async function loader() { const db = database(); diff --git a/app/routes/admin.templates.$id.tsx b/app/routes/admin.templates.$id.tsx index d331f88..eac016c 100644 --- a/app/routes/admin.templates.$id.tsx +++ b/app/routes/admin.templates.$id.tsx @@ -1,6 +1,7 @@ import { Form, Link, redirect } from "react-router"; import { useState } from "react"; import type { Route } from "./+types/admin.templates.$id"; + import { findSeasonTemplateWithSportsSeasons, updateSeasonTemplate, @@ -44,6 +45,10 @@ import { import { Trash2, Plus, X } from "lucide-react"; import { Badge } from "~/components/ui/badge"; +export function meta({ data }: Route.MetaArgs): Route.MetaDescriptors { + return [{ title: `${data?.template?.name ?? "Template"} - Brackt Admin` }]; +} + export async function loader({ params }: Route.LoaderArgs) { const template = await findSeasonTemplateWithSportsSeasons(params.id); diff --git a/app/routes/admin.templates.new.tsx b/app/routes/admin.templates.new.tsx index 177ba48..41052d7 100644 --- a/app/routes/admin.templates.new.tsx +++ b/app/routes/admin.templates.new.tsx @@ -1,5 +1,6 @@ import { Form, Link, redirect } from "react-router"; import type { Route } from "./+types/admin.templates.new"; + import { createSeasonTemplate } from "~/models/season-template"; import { Button } from "~/components/ui/button"; import { Input } from "~/components/ui/input"; @@ -13,6 +14,10 @@ import { CardTitle, } from "~/components/ui/card"; +export function meta(): Route.MetaDescriptors { + return [{ title: "New Template - Brackt Admin" }]; +} + export async function action({ request }: Route.ActionArgs) { const formData = await request.formData(); const name = formData.get("name"); diff --git a/app/routes/admin.templates.tsx b/app/routes/admin.templates.tsx index dcfeac1..c7f62b4 100644 --- a/app/routes/admin.templates.tsx +++ b/app/routes/admin.templates.tsx @@ -1,5 +1,6 @@ import { Link } from "react-router"; import type { Route } from "./+types/admin.templates"; + import { findAllSeasonTemplates } from "~/models/season-template"; import { Card, @@ -20,6 +21,10 @@ import { } from "~/components/ui/table"; import { Badge } from "~/components/ui/badge"; +export function meta(): Route.MetaDescriptors { + return [{ title: "Templates - Brackt Admin" }]; +} + export async function loader() { const templates = await findAllSeasonTemplates(); return { templates }; diff --git a/app/routes/admin.tsx b/app/routes/admin.tsx index ae56268..59f415f 100644 --- a/app/routes/admin.tsx +++ b/app/routes/admin.tsx @@ -1,6 +1,7 @@ import { Link, Outlet, redirect } from "react-router"; import { getAuth } from "@clerk/react-router/server"; import type { Route } from "./+types/admin"; + import { isUserAdminByClerkId } from "~/models/user"; import { Button } from "~/components/ui/button"; import { @@ -11,6 +12,10 @@ import { RefreshCw, } from "lucide-react"; +export function meta(): Route.MetaDescriptors { + return [{ title: "Admin - Brackt" }]; +} + export async function loader(args: Route.LoaderArgs) { const { userId } = await getAuth(args); diff --git a/app/routes/i.$inviteCode.tsx b/app/routes/i.$inviteCode.tsx index b30a522..d61b610 100644 --- a/app/routes/i.$inviteCode.tsx +++ b/app/routes/i.$inviteCode.tsx @@ -2,6 +2,7 @@ import { Form, redirect } from "react-router"; import { getAuth } from "@clerk/react-router/server"; import { SignInButton } from "@clerk/react-router"; import type { Route } from "./+types/i.$inviteCode"; + import { findSeasonByInviteCode, findLeagueById, @@ -19,6 +20,10 @@ import { CardTitle, } from "~/components/ui/card"; +export function meta(): Route.MetaDescriptors { + return [{ title: "Join League - Brackt" }]; +} + export async function loader(args: Route.LoaderArgs) { const { params } = args; const { inviteCode } = params; diff --git a/app/routes/leagues/$leagueId.draft-board.$seasonId.tsx b/app/routes/leagues/$leagueId.draft-board.$seasonId.tsx index d36ec48..3caa1bc 100644 --- a/app/routes/leagues/$leagueId.draft-board.$seasonId.tsx +++ b/app/routes/leagues/$leagueId.draft-board.$seasonId.tsx @@ -9,6 +9,10 @@ import { useState, useEffect } from "react"; import { buildOwnerMap } from "~/lib/owner-map"; import type { Route } from "./+types/$leagueId.draft-board.$seasonId"; +export function meta({ data }: Route.MetaArgs): Route.MetaDescriptors { + return [{ title: `Draft Board — ${data?.season?.league?.name ?? "League"} - Brackt` }]; +} + export async function loader(args: Route.LoaderArgs) { const { params } = args; const { leagueId, seasonId } = params; diff --git a/app/routes/leagues/$leagueId.draft.$seasonId.tsx b/app/routes/leagues/$leagueId.draft.$seasonId.tsx index ef42f98..0d956bc 100644 --- a/app/routes/leagues/$leagueId.draft.$seasonId.tsx +++ b/app/routes/leagues/$leagueId.draft.$seasonId.tsx @@ -34,6 +34,10 @@ import { formatClockTime, getTimerColorClass } from "~/lib/draft-timer"; import { Users, LayoutGrid, ListChecks, Settings, ListOrdered } from "lucide-react"; import type { Route } from "./+types/$leagueId.draft.$seasonId"; +export function meta({ data }: Route.MetaArgs): Route.MetaDescriptors { + return [{ title: `Draft — ${data?.season?.league?.name ?? "League"} - Brackt` }]; +} + type QueueItem = typeof schema.draftQueue.$inferSelect; type AutodraftStatusEntry = { diff --git a/app/routes/leagues/$leagueId.settings.tsx b/app/routes/leagues/$leagueId.settings.tsx index 0b2bf18..99908a3 100644 --- a/app/routes/leagues/$leagueId.settings.tsx +++ b/app/routes/leagues/$leagueId.settings.tsx @@ -63,6 +63,10 @@ import { import { ScoringRulesEditor } from "~/components/scoring/ScoringRulesEditor"; import { toast } from "sonner"; +export function meta({ data }: Route.MetaArgs): Route.MetaDescriptors { + return [{ title: `Settings — ${data?.league?.name ?? "League"} - Brackt` }]; +} + export async function loader(args: Route.LoaderArgs) { const { userId } = await getAuth(args); const { params } = args; diff --git a/app/routes/leagues/$leagueId.sports-seasons.$sportsSeasonId.tsx b/app/routes/leagues/$leagueId.sports-seasons.$sportsSeasonId.tsx index 79e86ea..a968a6c 100644 --- a/app/routes/leagues/$leagueId.sports-seasons.$sportsSeasonId.tsx +++ b/app/routes/leagues/$leagueId.sports-seasons.$sportsSeasonId.tsx @@ -1,5 +1,6 @@ import { Link } from "react-router"; import type { Route } from "./+types/$leagueId.sports-seasons.$sportsSeasonId"; + import { loader } from "./$leagueId.sports-seasons.$sportsSeasonId.server"; import { SportSeasonDisplay } from "~/components/scoring/SportSeasonDisplay"; import { EventSchedule } from "~/components/sport-season/EventSchedule"; @@ -7,6 +8,10 @@ import { Button } from "~/components/ui/button"; import { Badge } from "~/components/ui/badge"; import { ArrowLeft, CheckCircle2, Clock, Zap } from "lucide-react"; +export function meta({ data }: Route.MetaArgs): Route.MetaDescriptors { + return [{ title: `${data?.sportsSeason?.name ?? "Sport Season"} — ${data?.league?.name ?? "League"} - Brackt` }]; +} + export { loader }; function getStatusBadge(status: string) { diff --git a/app/routes/leagues/$leagueId.standings.$seasonId.teams.$teamId.tsx b/app/routes/leagues/$leagueId.standings.$seasonId.teams.$teamId.tsx index a2ec337..0d16002 100644 --- a/app/routes/leagues/$leagueId.standings.$seasonId.teams.$teamId.tsx +++ b/app/routes/leagues/$leagueId.standings.$seasonId.teams.$teamId.tsx @@ -1,8 +1,13 @@ import { useLoaderData } from "react-router"; import type { Route } from "./+types/$leagueId.standings.$seasonId.teams.$teamId"; + import { TeamScoreBreakdown } from "~/components/standings/TeamScoreBreakdown"; import { getTeamScoreBreakdown, getTeamStanding } from "~/models/standings"; +export function meta({ data }: Route.MetaArgs): Route.MetaDescriptors { + return [{ title: `${data?.breakdown?.team?.name ?? "Team"} - Brackt` }]; +} + /** * Team score breakdown page * Shows all drafted participants with their placements and points diff --git a/app/routes/leagues/$leagueId.standings.$seasonId.tsx b/app/routes/leagues/$leagueId.standings.$seasonId.tsx index 7f30705..6851e75 100644 --- a/app/routes/leagues/$leagueId.standings.$seasonId.tsx +++ b/app/routes/leagues/$leagueId.standings.$seasonId.tsx @@ -11,6 +11,10 @@ import { isSeasonComplete, getSeasonCompletionPercentage } from "~/lib/season-he import { PointProgressionChart } from "~/components/standings/PointProgressionChart"; import type { Route } from "./+types/$leagueId.standings.$seasonId"; +export function meta({ data }: Route.MetaArgs): Route.MetaDescriptors { + return [{ title: `Standings — ${data?.league?.name ?? "League"} - Brackt` }]; +} + export async function loader(args: Route.LoaderArgs) { try { const { userId } = await getAuth(args); diff --git a/app/routes/leagues/$leagueId.tsx b/app/routes/leagues/$leagueId.tsx index fa05620..3aaa46c 100644 --- a/app/routes/leagues/$leagueId.tsx +++ b/app/routes/leagues/$leagueId.tsx @@ -3,6 +3,7 @@ import { Link, useSearchParams } from "react-router"; import { toast } from "sonner"; import { format } from "date-fns"; import type { Route } from "./+types/$leagueId"; + import { Button } from "~/components/ui/button"; import { Card, @@ -14,6 +15,10 @@ import { import { SportSeasonCard } from "~/components/sports/SportSeasonCard"; import { getDisplayRank } from "~/lib/standings-display"; +export function meta({ data }: Route.MetaArgs): Route.MetaDescriptors { + return [{ title: `${data?.league?.name ?? "League"} - Brackt` }]; +} + export { loader } from "./$leagueId.server"; export default function LeagueHome({ loaderData }: Route.ComponentProps) { diff --git a/app/routes/leagues/new.tsx b/app/routes/leagues/new.tsx index 7ee7110..cfac0d9 100644 --- a/app/routes/leagues/new.tsx +++ b/app/routes/leagues/new.tsx @@ -2,6 +2,7 @@ import { useState } from "react"; import { Form, redirect, Link } from "react-router"; import { getAuth } from "@clerk/react-router/server"; import type { Route } from "./+types/new"; + import { createLeague, setCurrentSeason } from "~/models/league"; import { createCommissioner } from "~/models/commissioner"; import { createSeason } from "~/models/season"; @@ -40,6 +41,10 @@ import { import { cn } from "~/lib/utils"; import { ScoringRulesEditor } from "~/components/scoring/ScoringRulesEditor"; +export function meta(): Route.MetaDescriptors { + return [{ title: "New League - Brackt" }]; +} + export async function loader() { const templates = await findActiveSeasonTemplates(); const allSportsSeasons = await findAllSportsSeasons(); diff --git a/app/routes/teams/$teamId.settings.tsx b/app/routes/teams/$teamId.settings.tsx index a6e5928..b32049c 100644 --- a/app/routes/teams/$teamId.settings.tsx +++ b/app/routes/teams/$teamId.settings.tsx @@ -1,6 +1,7 @@ import { Form, redirect, useNavigate } from "react-router"; import { getAuth } from "@clerk/react-router/server"; import type { Route } from "./+types/$teamId.settings"; + import { findTeamById, updateTeam, @@ -29,6 +30,10 @@ import { AlertDialogTrigger, } from "~/components/ui/alert-dialog"; +export function meta({ data }: Route.MetaArgs): Route.MetaDescriptors { + return [{ title: `Team Settings — ${data?.team?.name ?? "Team"} - Brackt` }]; +} + export async function loader(args: Route.LoaderArgs) { const { params } = args; const { teamId } = params; diff --git a/app/routes/test-socket.tsx b/app/routes/test-socket.tsx index 5f3ee9b..631335d 100644 --- a/app/routes/test-socket.tsx +++ b/app/routes/test-socket.tsx @@ -1,6 +1,10 @@ import { useState, useEffect } from "react"; import { useDraftSocket } from "~/hooks/useDraftSocket"; +export function meta() { + return [{ title: "Socket Test - Brackt" }]; +} + export default function TestSocket() { const [messages, setMessages] = useState([]); const { isConnected, on, off, emit } = useDraftSocket("test-season-123"); diff --git a/app/routes/user-profile.tsx b/app/routes/user-profile.tsx index 16868fc..8e675e1 100644 --- a/app/routes/user-profile.tsx +++ b/app/routes/user-profile.tsx @@ -3,6 +3,10 @@ import { getAuth } from "@clerk/react-router/server"; import { redirect } from "react-router"; import type { Route } from "./+types/user-profile"; +export function meta(): Route.MetaDescriptors { + return [{ title: "Profile - Brackt" }]; +} + export async function loader(args: Route.LoaderArgs) { const { userId } = await getAuth(args);