From 19d29cbfc66714d37d177ac6974f86b6c55d41d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Kr=C3=BCger?= Date: Fri, 6 Mar 2026 17:26:14 +0100 Subject: [PATCH] fix: replace flyout profile card with logout slider, i18n auth errors - Replace static account card in mobile flyout with swipe-to-logout widget - Remove redundant logout button from flyout bottom - Make LogoutButton full-width via class prop and dynamic maxSlide - Extract clean GraphQL error messages instead of raw JSON in all auth forms - Add i18n keys for known backend errors (invalid credentials, email taken, invalid token) Co-Authored-By: Claude Sonnet 4.6 --- .../src/lib/components/header/header.svelte | 55 ++++--------------- .../logout-button/logout-button.svelte | 9 ++- packages/frontend/src/lib/i18n/locales/en.ts | 3 + .../frontend/src/routes/login/+page.svelte | 3 +- packages/frontend/src/routes/me/+page.svelte | 4 +- .../frontend/src/routes/password/+page.svelte | 2 +- .../src/routes/password/reset/+page.svelte | 4 +- .../frontend/src/routes/signup/+page.svelte | 3 +- 8 files changed, 29 insertions(+), 54 deletions(-) diff --git a/packages/frontend/src/lib/components/header/header.svelte b/packages/frontend/src/lib/components/header/header.svelte index 422455b..0c3e0ce 100644 --- a/packages/frontend/src/lib/components/header/header.svelte +++ b/packages/frontend/src/lib/components/header/header.svelte @@ -8,8 +8,6 @@ import { getAssetUrl } from "$lib/api"; import LogoutButton from "../logout-button/logout-button.svelte"; import Separator from "../ui/separator/separator.svelte"; - import { Avatar, AvatarFallback, AvatarImage } from "$lib/components/ui/avatar"; - import { getUserInitials } from "$lib/utils"; import BurgerMenuButton from "../burger-menu-button/burger-menu-button.svelte"; import Logo from "../logo/logo.svelte"; @@ -180,34 +178,17 @@
- + {#if authStatus.authenticated} -
-
-
- - - - {getUserInitials(authStatus.user!.artist_name)} - - -
-

- {authStatus.user!.artist_name || authStatus.user!.email.split("@")[0]} -

-

- {authStatus.user!.email} -

-
-
-
+ {/if} @@ -340,21 +321,5 @@
- {#if authStatus.authenticated} - - {/if} diff --git a/packages/frontend/src/lib/components/logout-button/logout-button.svelte b/packages/frontend/src/lib/components/logout-button/logout-button.svelte index bab1368..bbcafab 100644 --- a/packages/frontend/src/lib/components/logout-button/logout-button.svelte +++ b/packages/frontend/src/lib/components/logout-button/logout-button.svelte @@ -11,15 +11,17 @@ interface Props { user: User; onLogout: () => void; + class?: string; } - let { user, onLogout }: Props = $props(); + let { user, onLogout, class: className = "" }: Props = $props(); + let container: HTMLDivElement; let isDragging = $state(false); let slidePosition = $state(0); let startX = 0; let currentX = 0; - let maxSlide = 117; // Maximum slide distance + let maxSlide = $derived(container ? container.offsetWidth - 40 : 117); let threshold = 0.75; // 70% threshold to trigger logout // Calculate slide progress (0 to 1) @@ -102,9 +104,10 @@