diff --git a/solitaire_server/web/game.css b/solitaire_server/web/game.css index 2a028e9..21fd6d9 100644 --- a/solitaire_server/web/game.css +++ b/solitaire_server/web/game.css @@ -59,6 +59,25 @@ header { .hud-center { display: flex; gap: 20px; font-size: 14px; font-weight: 600; } .hud-right { display: flex; align-items: center; gap: 10px; } +.hud-avatar-link { display: flex; align-items: center; text-decoration: none; } +.hud-avatar-inner { + width: 32px; + height: 32px; + border-radius: 50%; + overflow: hidden; + border: 2px solid rgba(255,255,255,0.15); + background: var(--panel-hi); + display: flex; + align-items: center; + justify-content: center; + font-size: 13px; + font-weight: 700; + color: var(--text-muted); + transition: border-color 120ms; +} +.hud-avatar-link:hover .hud-avatar-inner { border-color: var(--accent); } +.hud-avatar-inner img { width: 100%; height: 100%; object-fit: cover; border-radius: 50%; } + .logo { font-size: 16px; font-weight: 700; } .muted { color: var(--text-muted); font-size: 12px; } .home-link { diff --git a/solitaire_server/web/game.html b/solitaire_server/web/game.html index e09c9e1..a6d44ee 100644 --- a/solitaire_server/web/game.html +++ b/solitaire_server/web/game.html @@ -40,6 +40,12 @@ Draw 3 + diff --git a/solitaire_server/web/game.js b/solitaire_server/web/game.js index 9a41095..17ee075 100644 --- a/solitaire_server/web/game.js +++ b/solitaire_server/web/game.js @@ -663,5 +663,31 @@ function onBoardDblClick(e) { if (!smartMove(hit.pileName, fromIndex)) flashIllegal([cards[fromIndex].id]); } +// ── Avatar ──────────────────────────────────────────────────────────────────── +async function loadAvatar() { + const token = localStorage.getItem("fs_token"); + if (!token) return; + try { + const res = await fetch("/api/me", { + headers: { Authorization: "Bearer " + token }, + }); + if (!res.ok) return; + const me = await res.json(); + const link = document.getElementById("hud-avatar"); + const img = document.getElementById("hud-avatar-img"); + const init = document.getElementById("hud-avatar-initials"); + link.style.display = "flex"; + if (me.avatar_url) { + img.src = me.avatar_url; + img.style.display = "block"; + init.style.display = "none"; + } else { + img.style.display = "none"; + init.textContent = (me.username || "P")[0].toUpperCase(); + } + } catch { /* not signed in — avatar stays hidden */ } +} + // ── Start ───────────────────────────────────────────────────────────────────── bootstrap().catch(console.error); +loadAvatar();