diff --git a/app/routers/dashboard.py b/app/routers/dashboard.py index 80cfca3..73f0767 100644 --- a/app/routers/dashboard.py +++ b/app/routers/dashboard.py @@ -1135,6 +1135,21 @@ async def get_avatar(user_id: int): return JSONResponse({"error": "No avatar"}, status_code=404) +@router.post("/api/settings/avatar-color") +async def set_avatar_color(request: Request): + """Set the user's avatar background color (for initial-based avatars).""" + import json + body = await request.json() + color = body.get("color", "#3A3A3A") + user = SessionManager.decode_session(request.cookies.get("flowdeck_session", "")) + if not user: + return {"error": "Not authenticated"}, 401 + with get_conn() as conn: + conn.execute("UPDATE users SET avatar_url = '' WHERE id = ?", (user["id"],)) + conn.commit() + return {"status": "ok", "color": color} + + # ═══════════ Tag Management API (global) ═══════════ @router.post("/api/settings/tags") diff --git a/app/templates/settings.html b/app/templates/settings.html index 32f9d13..4cc3016 100644 --- a/app/templates/settings.html +++ b/app/templates/settings.html @@ -41,6 +41,11 @@ .avatar-upload-label:hover{background:rgba(35,131,226,.1);} .avatar-upload-input{display:none;} +/* Avatar color swatches */ +.avatar-color-swatch{width:40px;height:40px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:700;color:#fff;cursor:pointer;border:2px solid transparent;transition:all 120ms;} +.avatar-color-swatch:hover{transform:scale(1.1);} +.avatar-color-swatch.selected{border-color:var(--accent);box-shadow:0 0 0 2px rgba(35,131,226,.4);} + /* Tags */ .tag-mgmt-item{display:flex;align-items:center;gap:10px;padding:8px 10px;background:var(--bg-tertiary);border-radius:8px;margin-bottom:4px;} .tag-mgmt-item .tag-color-dot{width:14px;height:14px;border-radius:50%;flex-shrink:0;} @@ -85,7 +90,7 @@