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 <nav> 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.
This commit is contained in:
Classic298
2026-02-22 14:18:53 -06:00
committed by GitHub
parent bf0fb1c449
commit a0dbd41551
8 changed files with 30 additions and 19 deletions
+7 -2
View File
@@ -243,7 +243,7 @@
crossorigin="anonymous"
src="{WEBUI_BASE_URL}/static/favicon.png"
class="size-24 rounded-full"
alt=""
alt="{$WEBUI_NAME} logo"
/>
</div>
{/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"
/>
</div>
@@ -439,6 +440,7 @@
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 48 48"
class="size-6 mr-3"
aria-hidden="true"
>
<path
fill="#EA4335"
@@ -468,6 +470,7 @@
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 21 21"
class="size-6 mr-3"
aria-hidden="true"
>
<rect x="1" y="1" width="9" height="9" fill="#f25022" /><rect
x="1"
@@ -498,6 +501,7 @@
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
class="size-6 mr-3"
aria-hidden="true"
>
<path
fill="currentColor"
@@ -521,6 +525,7 @@
stroke-width="1.5"
stroke="currentColor"
class="size-6 mr-3"
aria-hidden="true"
>
<path
stroke-linecap="round"
+8 -5
View File
@@ -161,19 +161,22 @@
: 'max-w-5xl'} mx-auto"
>
<div class="px-3">
<div class=" text-2xl font-medium line-clamp-1">
<h1 class=" text-2xl font-medium line-clamp-1 m-0">
{title}
</div>
</h1>
<div class="flex text-sm justify-between items-center mt-1">
<div class="text-gray-400">
<time
class="text-gray-400"
datetime={new Date(chat?.chat?.timestamp || Date.now()).toISOString()}
>
{dayjs(chat.chat.timestamp).format('LLL')}
</div>
</time>
</div>
</div>
</div>
<div class=" h-full w-full flex flex-col py-2">
<div class=" h-full w-full flex flex-col py-2" role="main">
<div class="w-full">
<Messages
className="h-full flex pt-4 pb-8 "