import { notFound } from 'next/navigation'; import { LeagueDetailPageQuery } from '@/lib/page-queries/LeagueDetailPageQuery'; import { LeagueDetailTemplate } from '@/templates/LeagueDetailTemplate'; import { LeagueDetailViewDataBuilder } from '@/lib/builders/view-data/LeagueDetailViewDataBuilder'; import { Text } from '@/ui/Text'; export default async function LeagueLayout({ children, params, }: { children: React.ReactNode; params: Promise<{ id: string }>; }) { const { id: leagueId } = await params; // Execute PageQuery to get league data const result = await LeagueDetailPageQuery.execute(leagueId); if (result.isErr()) { const error = result.getError(); if (error === 'notFound' || error === 'redirect') { notFound(); } // Return error state return ( Failed to load league ); } const data = result.unwrap(); const viewData = LeagueDetailViewDataBuilder.build({ league: data.league, owner: null, scoringConfig: null, memberships: { members: [] }, races: [], sponsors: [], }); // Define tab configuration const baseTabs = [ { label: 'Overview', href: `/leagues/${leagueId}`, exact: true }, { label: 'Schedule', href: `/leagues/${leagueId}/schedule`, exact: false }, { label: 'Standings', href: `/leagues/${leagueId}/standings`, exact: false }, { label: 'Rulebook', href: `/leagues/${leagueId}/rulebook`, exact: false }, ]; const adminTabs = [ { label: 'Schedule Admin', href: `/leagues/${leagueId}/schedule/admin`, exact: false }, { label: 'Sponsorships', href: `/leagues/${leagueId}/sponsorships`, exact: false }, { label: 'Stewarding', href: `/leagues/${leagueId}/stewarding`, exact: false }, { label: 'Wallet', href: `/leagues/${leagueId}/wallet`, exact: false }, { label: 'Settings', href: `/leagues/${leagueId}/settings`, exact: false }, ]; // TODO: Admin check needs to be implemented properly // For now, show admin tabs if user is logged in const tabs = [...baseTabs, ...adminTabs]; return ( {children} ); }