'use client'; import React from 'react'; import { Card } from '@/ui/Card'; import { Text } from '@/ui/Text'; import { Button } from '@/ui/Button'; import { Select } from '@/ui/Select'; import { Box } from '@/ui/Box'; import { Stack } from '@/ui/Stack'; import { Heading } from '@/ui/Heading'; import { Surface } from '@/ui/Surface'; import type { MembershipRole } from '@/lib/types/MembershipRole'; import type { LeagueRosterAdminViewData } from '@/lib/view-data/LeagueRosterAdminViewData'; interface RosterAdminTemplateProps { viewData: LeagueRosterAdminViewData; loading: boolean; pendingCountLabel: string; onApprove: (requestId: string) => Promise; onReject: (requestId: string) => Promise; onRoleChange: (driverId: string, newRole: MembershipRole) => Promise; onRemove: (driverId: string) => Promise; roleOptions: MembershipRole[]; } export function RosterAdminTemplate({ viewData, loading, pendingCountLabel, onApprove, onReject, onRoleChange, onRemove, roleOptions, }: RosterAdminTemplateProps) { const { joinRequests, members } = viewData; return ( Roster Admin Manage join requests and member roles. Pending join requests {pendingCountLabel} {loading ? ( Loading… ) : joinRequests.length > 0 ? ( {joinRequests.map((req) => ( {req.driver.name} {req.requestedAt} {req.message && ( {req.message} )} ))} ) : ( No pending join requests. )} Members {loading ? ( Loading… ) : members.length > 0 ? ( {members.map((member) => ( {member.driver.name} {member.joinedAt}