From 3b7b6c9761023ae358d6641d56f0669c9d99782c Mon Sep 17 00:00:00 2001 From: Till JS Date: Tue, 31 Mar 2026 14:14:16 +0200 Subject: [PATCH] refactor(auth-ui): SessionManager i18n, shared userAgent util, a11y fixes - Add locale prop (de/en) to SessionManager with full English translations - Extract duplicated parseUserAgent/getDeviceType to utils/userAgent.ts - Fix hardcoded aria-label in SessionManager refresh button - Add prefers-reduced-motion to PasskeyManager, TwoFactorSetup, SessionExpiredBanner Co-Authored-By: Claude Opus 4.6 (1M context) --- .../src/components/AuditLog.svelte | 30 +----- .../src/components/PasskeyManager.svelte | 9 ++ .../components/SessionExpiredBanner.svelte | 9 ++ .../src/components/SessionManager.svelte | 96 +++++++++++-------- .../src/components/TwoFactorSetup.svelte | 6 ++ packages/shared-auth-ui/src/index.ts | 1 + .../shared-auth-ui/src/utils/userAgent.ts | 42 ++++++++ 7 files changed, 126 insertions(+), 67 deletions(-) create mode 100644 packages/shared-auth-ui/src/utils/userAgent.ts diff --git a/packages/shared-auth-ui/src/components/AuditLog.svelte b/packages/shared-auth-ui/src/components/AuditLog.svelte index 4a92b98a2..78efa08b1 100644 --- a/packages/shared-auth-ui/src/components/AuditLog.svelte +++ b/packages/shared-auth-ui/src/components/AuditLog.svelte @@ -1,4 +1,6 @@
@@ -233,9 +211,9 @@ {event.ipAddress} {/if}
- {#if parseUserAgent(event.userAgent)} + {#if formatUserAgent(event.userAgent)}
- {parseUserAgent(event.userAgent)} + {formatUserAgent(event.userAgent)}
{/if} diff --git a/packages/shared-auth-ui/src/components/PasskeyManager.svelte b/packages/shared-auth-ui/src/components/PasskeyManager.svelte index 410c6c6c1..c81fab498 100644 --- a/packages/shared-auth-ui/src/components/PasskeyManager.svelte +++ b/packages/shared-auth-ui/src/components/PasskeyManager.svelte @@ -784,4 +784,13 @@ transform: rotate(360deg); } } + + @media (prefers-reduced-motion: reduce) { + .pm-spinner { + animation: none; + } + * { + transition-duration: 0.01ms !important; + } + } diff --git a/packages/shared-auth-ui/src/components/SessionExpiredBanner.svelte b/packages/shared-auth-ui/src/components/SessionExpiredBanner.svelte index f5a714f8a..0fb28d87d 100644 --- a/packages/shared-auth-ui/src/components/SessionExpiredBanner.svelte +++ b/packages/shared-auth-ui/src/components/SessionExpiredBanner.svelte @@ -203,6 +203,15 @@ background: rgba(255, 255, 255, 0.1); } + @media (prefers-reduced-motion: reduce) { + .session-expired-banner { + animation: none; + } + * { + transition-duration: 0.01ms !important; + } + } + /* Mobile: stack vertically */ @media (max-width: 480px) { .session-expired-content { diff --git a/packages/shared-auth-ui/src/components/SessionManager.svelte b/packages/shared-auth-ui/src/components/SessionManager.svelte index 33714eb8f..1d69a0c55 100644 --- a/packages/shared-auth-ui/src/components/SessionManager.svelte +++ b/packages/shared-auth-ui/src/components/SessionManager.svelte @@ -1,4 +1,6 @@