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:
@@ -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"
|
||||
|
||||
@@ -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 "
|
||||
|
||||
Reference in New Issue
Block a user