>();
+ picks.forEach((pick) => {
+ if (!map.has(pick.team.id)) map.set(pick.team.id, new Map());
+ const teamMap = map.get(pick.team.id)!;
+ if (!teamMap.has(pick.sport.id)) teamMap.set(pick.sport.id, []);
+ teamMap.get(pick.sport.id)!.push(pick);
+ });
+ return map;
+}
diff --git a/app/routes/leagues/$leagueId.draft.$seasonId.tsx b/app/routes/leagues/$leagueId.draft.$seasonId.tsx
index 8016602..987667a 100644
--- a/app/routes/leagues/$leagueId.draft.$seasonId.tsx
+++ b/app/routes/leagues/$leagueId.draft.$seasonId.tsx
@@ -14,7 +14,8 @@ import { getAuth } from "@clerk/react-router/server";
import { getTeamQueue } from "~/models/draft-queue";
import { buildOwnerMap } from "~/lib/owner-map";
import { DraftSidebar } from "~/components/DraftSidebar";
-import { TeamsDraftedGrid } from "~/components/draft/TeamsDraftedGrid";
+import { TeamRosterView } from "~/components/draft/TeamRosterView";
+import { DraftSummaryView } from "~/components/draft/DraftSummaryView";
import { QueueSection } from "~/components/draft/QueueSection";
import { AvailableParticipantsSection } from "~/components/draft/AvailableParticipantsSection";
import { SidebarRecentPicks } from "~/components/draft/SidebarRecentPicks";
@@ -37,7 +38,7 @@ type QueueItem = typeof schema.draftQueue.$inferSelect;
const MOBILE_TABS_BASE = [
{ id: "available" as const, label: "Available", Icon: Users },
{ id: "board" as const, label: "Board", Icon: LayoutGrid },
- { id: "roster" as const, label: "Roster", Icon: ListChecks },
+ { id: "teams" as const, label: "Teams", Icon: ListChecks },
{ id: "controls" as const, label: "Controls", Icon: Settings },
];
@@ -466,10 +467,11 @@ export default function DraftRoom() {
const stored = localStorage.getItem("draftSidebarCollapsed");
return stored ? JSON.parse(stored) : false;
});
- const [activeTab, setActiveTab] = useState<"participants" | "board" | "teams">("board");
- const [mobileTab, setMobileTab] = useState<"available" | "queue" | "board" | "roster" | "controls">(
+ const [activeTab, setActiveTab] = useState<"participants" | "board" | "rosters" | "summary">("board");
+ const [mobileTab, setMobileTab] = useState<"available" | "queue" | "board" | "teams" | "controls">(
!userTeam && isCommissioner ? "board" : "available"
);
+ const [teamsSubTab, setTeamsSubTab] = useState<"rosters" | "summary">("rosters");
const isMobile = useMediaQuery("(max-width: 767px)");
// Track autodraft status for all teams
@@ -1395,13 +1397,17 @@ export default function DraftRoom() {
onRollbackToPick: isCommissioner && !isDraftComplete ? handleRollbackToPick : undefined,
};
- const teamsDraftedGridSeason = useMemo(() => ({ numFlexPicks }), [numFlexPicks]);
-
- const teamsDraftedGridProps = {
+ const summaryViewProps = {
+ draftSlots,
+ picks,
+ sports: seasonSportsData,
+ ownerMap,
+ };
+
+ const rosterViewProps = {
draftSlots,
picks,
sports: seasonSportsData,
- season: teamsDraftedGridSeason,
ownerMap,
};
@@ -1584,8 +1590,38 @@ export default function DraftRoom() {
{mobileTab === "board" && (
)}
- {mobileTab === "roster" && (
-
+ {mobileTab === "teams" && (
+
+
+ setTeamsSubTab("rosters")}
+ className={`flex-1 py-1.5 text-sm font-medium rounded transition-colors ${
+ teamsSubTab === "rosters"
+ ? "bg-accent text-accent-foreground"
+ : "text-muted-foreground hover:text-foreground"
+ }`}
+ >
+ Roster
+
+ setTeamsSubTab("summary")}
+ className={`flex-1 py-1.5 text-sm font-medium rounded transition-colors ${
+ teamsSubTab === "summary"
+ ? "bg-accent text-accent-foreground"
+ : "text-muted-foreground hover:text-foreground"
+ }`}
+ >
+ Summary
+
+
+
+ {teamsSubTab === "rosters" ? (
+
+ ) : (
+
+ )}
+
+
)}
{mobileTab === "controls" && (
@@ -1649,7 +1685,7 @@ export default function DraftRoom() {
- setActiveTab(value as "participants" | "board" | "teams")
+ setActiveTab(value as "participants" | "board" | "rosters" | "summary")
}
className="h-full flex flex-col"
>
@@ -1662,7 +1698,8 @@ export default function DraftRoom() {
Available Participants
Draft Board
- Teams Drafted
+ Rosters
+ Summary
{season.status === "draft" && !isDraftComplete && currentDraftSlot && (
@@ -1702,8 +1739,12 @@ export default function DraftRoom() {
-
-
+
+
+
+
+
+