Rangliste
{totalParticipants} Teilnehmer{currentUserRank ? ` Β· Du: Platz ${currentUserRank}` : ''}
{entries.length === 0 ? (
Noch keine Punkte vergeben. Spiele mΓΌssen erst abgeschlossen sein.
) : (
<>
{/* ββ Podium ββ */}
{top3.length > 0 && (
{podiumSlots.map(({ entry, rank, medal, colorClass, barHeight }) => {
const isMe = entry.user_id === currentUserId;
const isFirst = rank === 1;
return (
{medal}
{initials(entry.full_name)}
{entry.full_name.split(' ')[0]}{isMe ? ' (Ich)' : ''}
{entry.total_points.toLocaleString('de-DE')}
Pkt
);
})}
)}
{/* ββ List header ββ */}
{rest.length > 0 && (
<>
POS
SPIELER
TREND
PUNKTE
{rest.map((entry, i) => {
const isMe = entry.user_id === currentUserId;
const prev = rest[i - 1];
return (
{entry.rank}
{initials(entry.full_name)}
{entry.full_name}{isMe ? ' (Ich)' : ''}
{entry.team &&
{entry.team}
}
{isMe &&
AUFHOLJAGD!
}
{entry.total_points.toLocaleString('de-DE')}
);
})}
>
)}
{/* ββ CTA Card ββ */}
{tippableCount > 0 && (
Punkte sichern!
{tippableCount} Spiel{tippableCount !== 1 ? 'e' : ''} noch ohne Tipp β kletter nach oben.
)}
>
)}
);
}