import { Card } from '@/ui/Card'; import { Section } from '@/ui/Section'; import { Text } from '@/ui/Text'; import { Button } from '@/ui/Button'; import { Select } from '@/ui/Select'; import type { MembershipRole } from '@/lib/types/MembershipRole'; import type { LeagueRosterJoinRequestDTO } from '@/lib/types/generated/LeagueRosterJoinRequestDTO'; import type { LeagueRosterMemberDTO } from '@/lib/types/generated/LeagueRosterMemberDTO'; interface RosterAdminTemplateProps { joinRequests: LeagueRosterJoinRequestDTO[]; members: LeagueRosterMemberDTO[]; 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({ joinRequests, members, loading, pendingCountLabel, onApprove, onReject, onRoleChange, onRemove, roleOptions, }: RosterAdminTemplateProps) { return (
Roster Admin Manage join requests and member roles.
Pending join requests {pendingCountLabel}
{loading ? ( Loading… ) : joinRequests.length ? (
{joinRequests.map((req) => (
{(req.driver as any)?.name || 'Unknown'} {req.requestedAt} {req.message && ( {req.message} )}
))}
) : ( No pending join requests. )}
Members {loading ? ( Loading… ) : members.length ? (
{members.map((member) => (
{(member.driver as any)?.name || 'Unknown'} {member.joinedAt}