From a0dbd41551939f2221cbf5a20fd21ee9e1106d20 Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Sun, 22 Feb 2026 21:18:53 +0100 Subject: [PATCH] fix(a11y): improve accessibility of top-level auth and onboarding components (#21710) Adds critical accessibility fixes across various app components: - auth/+page: provide alt text for logo, turn on screenReader support for password input, add aria-required, hide decorative SVGs from AT - AppSidebar: wrap navigation icons in a
structure, provide ARIA labels for Home and Chat icons - s/[id]/+page: convert structural divs into semantically accurate h1 heading and time element, wrap message display in main region - OnBoarding: replace flawed aria-labelledby with direct aria-label on start button - NotificationToast: provide role='status' and aria-live='polite' for proper screen reader broadcasting - ChangelogModal: add required heading semantics for structure - AddFilesPlaceholder: provide heading element role for standalone text content - ImportModal: provide aria-label for close button Addresses WCAG 4.1.3, 1.1.1, 3.3.2, and 1.3.1. --- src/lib/components/AddFilesPlaceholder.svelte | 2 +- src/lib/components/ChangelogModal.svelte | 8 ++++---- src/lib/components/ImportModal.svelte | 1 + src/lib/components/NotificationToast.svelte | 4 ++-- src/lib/components/OnBoarding.svelte | 6 +++--- src/lib/components/app/AppSidebar.svelte | 6 ++++-- src/routes/auth/+page.svelte | 9 +++++++-- src/routes/s/[id]/+page.svelte | 13 ++++++++----- 8 files changed, 30 insertions(+), 19 deletions(-) diff --git a/src/lib/components/AddFilesPlaceholder.svelte b/src/lib/components/AddFilesPlaceholder.svelte index cb7f4f04bc..1579deb45a 100644 --- a/src/lib/components/AddFilesPlaceholder.svelte +++ b/src/lib/components/AddFilesPlaceholder.svelte @@ -7,7 +7,7 @@
-
+
{#if title} {title} {:else} diff --git a/src/lib/components/ChangelogModal.svelte b/src/lib/components/ChangelogModal.svelte index fa8381f7f9..0a1c8805eb 100644 --- a/src/lib/components/ChangelogModal.svelte +++ b/src/lib/components/ChangelogModal.svelte @@ -38,11 +38,11 @@
-
+

{$i18n.t("What's New in")} {$WEBUI_NAME} -

+ -
+
{$i18n.t(`Get started`)}
diff --git a/src/lib/components/app/AppSidebar.svelte b/src/lib/components/app/AppSidebar.svelte index cc9f16e039..2e8544040d 100644 --- a/src/lib/components/app/AppSidebar.svelte +++ b/src/lib/components/app/AppSidebar.svelte @@ -6,7 +6,7 @@ let selected = ''; -
+
{#if selected === 'home'}
@@ -16,6 +16,7 @@
{/if}
--> -
+
diff --git a/src/routes/auth/+page.svelte b/src/routes/auth/+page.svelte index 42a1fc82c0..b11f85b7a5 100644 --- a/src/routes/auth/+page.svelte +++ b/src/routes/auth/+page.svelte @@ -243,7 +243,7 @@ crossorigin="anonymous" src="{WEBUI_BASE_URL}/static/favicon.png" class="size-24 rounded-full" - alt="" + alt="{$WEBUI_NAME} logo" /> {/if} @@ -342,8 +342,9 @@ placeholder={$i18n.t('Enter Your Password')} autocomplete={mode === 'signup' ? 'new-password' : 'current-password'} name="password" - screenReader={false} + screenReader={true} required + aria-required="true" /> @@ -439,6 +440,7 @@ xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" class="size-6 mr-3" + aria-hidden="true" >
-
+

{title} -

+
-
+ {dayjs(chat.chat.timestamp).format('LLL')} -
+
-
+