From 77ebccf6fa5c0254987068c58d058be835ceb5c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Kr=C3=BCger?= Date: Sat, 7 Mar 2026 18:55:56 +0100 Subject: [PATCH] feat: redesign avatar upload as circular click-to-change UI Replace generic file drop zone + tiny thumbnail with a 96px circular avatar that shows a camera overlay on hover, upgrades preview to thumbnail quality, and adds a compact remove button. Co-Authored-By: Claude Sonnet 4.6 --- packages/frontend/src/routes/me/+page.svelte | 76 ++++++++++++-------- 1 file changed, 47 insertions(+), 29 deletions(-) diff --git a/packages/frontend/src/routes/me/+page.svelte b/packages/frontend/src/routes/me/+page.svelte index 193195f..20a0f40 100644 --- a/packages/frontend/src/routes/me/+page.svelte +++ b/packages/frontend/src/routes/me/+page.svelte @@ -22,7 +22,7 @@ import { Textarea } from "$lib/components/ui/textarea"; import Meta from "$lib/components/meta/meta.svelte"; import { TagsInput } from "$lib/components/ui/tags-input"; - import { displaySize, FileDropZone, MEGABYTE } from "$lib/components/ui/file-drop-zone"; + import { FileDropZone, MEGABYTE } from "$lib/components/ui/file-drop-zone"; import RecordingCard from "$lib/components/recording-card/recording-card.svelte"; const { data } = $props(); @@ -152,7 +152,7 @@ if (data.authStatus.user!.avatar) { avatar = { id: data.authStatus.user!.avatar, - url: getAssetUrl(data.authStatus.user!.avatar, "mini")!, + url: getAssetUrl(data.authStatus.user!.avatar, "thumbnail")!, name: data.authStatus.user!.artist_name ?? "", size: 0, }; @@ -254,43 +254,61 @@
- - - {#if avatar} -
-
-
+ +
+ +
+ {#if avatar} {avatar.name} -
-
- {avatar.name} - {displaySize(avatar.size)} -
+ +
+ {:else} +
+ + Upload +
+ {/if}
-
+ +
+

+ JPG, PNG ยท max 2 MB +

+

+ Click or drop to {avatar ? "change" : "upload"} +

+ {#if avatar} -
+ + Remove + + {/if}
- {/if} +