'use client' import { useState } from 'react' import { useRouter } from 'next/navigation' import Button from './Button' import TeamPremierRankBadge from './TeamPremierRankBadge' import type { Team } from '../types/team' type Props = { team: Team currentUserSteamId: string invitationId?: string onUpdateInvitation: (teamId: string, newValue: string | null | 'pending') => void adminMode?: boolean } export default function TeamCard({ team, currentUserSteamId, invitationId, onUpdateInvitation, adminMode = false, }: Props) { const router = useRouter() const [joining, setJoining] = useState(false) const isRequested = Boolean(invitationId) const isDisabled = joining || currentUserSteamId === team.leader?.steamId const handleClick = async () => { if (joining) return setJoining(true) try { if (isRequested) { await fetch('/api/user/invitations/reject', { method : 'POST', headers: { 'Content-Type': 'application/json' }, body : JSON.stringify({ invitationId }), }) onUpdateInvitation(team.id, null) } else { await fetch('/api/team/request-join', { method : 'POST', headers: { 'Content-Type': 'application/json' }, body : JSON.stringify({ teamId: team.id }), }) onUpdateInvitation(team.id, 'pending') } } catch (err) { console.error('[TeamCard] Join/Reject-Fehler:', err) } finally { setJoining(false) } } const targetHref = adminMode ? `/admin/teams/${team.id}` : `/team/${team.id}` return (
router.push(targetHref)} onKeyDown={e => (e.key === 'Enter') && router.push(targetHref)} className="p-4 border rounded-lg bg-white dark:bg-neutral-800 dark:border-neutral-700 shadow-sm hover:shadow-md transition cursor-pointer focus:outline-none hover:scale-105 hover:bg-neutral-200 hover:dark:bg-neutral-700" >
{team.name
{team.name ?? 'Team'}
{adminMode ? ( ) : ( )}
{[...team.activePlayers, ...team.inactivePlayers].map(p => ( {p.name} ))}
) }