'use client'; import { useState, useEffect } from 'react'; import { useRouter } from 'next/navigation'; import TeamCard from '@/components/teams/TeamCard'; import Button from '@/components/ui/Button'; import Input from '@/components/ui/Input'; import Card from '@/components/ui/Card'; import CreateTeamForm from '@/components/teams/CreateTeamForm'; import { getAllTeams, getTeamMembers, type Team } from '@gridpilot/racing/application'; export default function TeamsPage() { const router = useRouter(); const [teams, setTeams] = useState([]); const [showCreateForm, setShowCreateForm] = useState(false); const [searchQuery, setSearchQuery] = useState(''); const [memberFilter, setMemberFilter] = useState('all'); useEffect(() => { loadTeams(); }, []); const loadTeams = () => { const allTeams = getAllTeams(); setTeams(allTeams); }; const handleCreateSuccess = (teamId: string) => { setShowCreateForm(false); loadTeams(); router.push(`/teams/${teamId}`); }; const filteredTeams = teams.filter((team) => { const memberCount = getTeamMembers(team.id).length; const matchesSearch = team.name.toLowerCase().includes(searchQuery.toLowerCase()); const matchesMemberCount = memberFilter === 'all' || (memberFilter === 'small' && memberCount < 5) || (memberFilter === 'medium' && memberCount >= 5 && memberCount < 10) || (memberFilter === 'large' && memberCount >= 10); return matchesSearch && matchesMemberCount; }); const handleTeamClick = (teamId: string) => { router.push(`/teams/${teamId}`); }; if (showCreateForm) { return (

Create New Team

setShowCreateForm(false)} onSuccess={handleCreateSuccess} />
); } return (

Teams

Browse and join racing teams

setSearchQuery(e.target.value)} />

{filteredTeams.length} {filteredTeams.length === 1 ? 'team' : 'teams'} found

{filteredTeams.map((team) => { const memberCount = getTeamMembers(team.id).length; return ( handleTeamClick(team.id)} /> ); })}
{filteredTeams.length === 0 && (

{teams.length === 0 ? 'No teams yet' : 'No teams found'}

{teams.length === 0 ? 'Create your first team to start racing together.' : 'Try adjusting your search or filters.'}

{teams.length === 0 && ( )}
)}
); }