Кастомизация профиля (о себе, аватар) и просмотр профилей других игроков + общая статистика
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -1,4 +1,7 @@
|
||||
import { Link } from "react-router-dom";
|
||||
|
||||
import type { LeaderboardEntry } from "../domain/types";
|
||||
import { Avatar } from "./Avatar";
|
||||
|
||||
function pct(v: number | null | undefined): string {
|
||||
return v == null ? "—" : `${Math.round(v * 100)}%`;
|
||||
@@ -10,8 +13,16 @@ function Row({ entry }: { entry: LeaderboardEntry }) {
|
||||
<div className={"lb-rank" + (entry.rank && entry.rank <= 3 ? " top" : "")}>
|
||||
{entry.rank ?? "—"}
|
||||
</div>
|
||||
<Avatar url={entry.avatar_url} nickname={entry.nickname} size={32} />
|
||||
<div>
|
||||
<div style={{ fontWeight: 600 }}>{entry.nickname}</div>
|
||||
<Link
|
||||
to={`/u/${entry.user_id}`}
|
||||
// stopPropagation: ник кликабелен даже когда вся карточка-обёртка кликабельна.
|
||||
onClick={(e) => e.stopPropagation()}
|
||||
style={{ fontWeight: 600, color: "inherit" }}
|
||||
>
|
||||
{entry.nickname}
|
||||
</Link>
|
||||
<div className="lb-metrics">
|
||||
<span>Игр: {entry.games}</span>
|
||||
<span>Побед: {entry.wins}</span>
|
||||
|
||||
Reference in New Issue
Block a user