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 <noreply@anthropic.com>
This commit is contained in:
@@ -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 @@
|
||||
</script>
|
||||
|
||||
<div
|
||||
bind:this={container}
|
||||
class="relative h-10 w-40 rounded-full bg-muted/30 overflow-hidden select-none transition-all duration-300 bg-muted/40 shadow-lg shadow-accent/10 {isDragging
|
||||
? 'cursor-grabbing'
|
||||
: ''}"
|
||||
: ''} {className}"
|
||||
style="background: linear-gradient(90deg,
|
||||
oklch(var(--primary) / 0.3) 0%,
|
||||
oklch(var(--primary) / 0.3) {(1 - slideProgress) * 100}%,
|
||||
|
||||
Reference in New Issue
Block a user