fix(a11y): resolve accessibility issues

A11y Improvements
- add screen-reader only texts
- remove autoFocus on search box
- replace disabled link with span text in LinkButton
This commit is contained in:
satnaing
2024-01-09 14:29:04 +06:30
committed by Sat Naing
parent de605d87a0
commit 940deb6d3f
6 changed files with 27 additions and 17 deletions
+1
View File
@@ -86,6 +86,7 @@ const { activeNav } = Astro.props;
d="M19.023 16.977a35.13 35.13 0 0 1-1.367-1.384c-.372-.378-.596-.653-.596-.653l-2.8-1.337A6.962 6.962 0 0 0 16 9c0-3.859-3.14-7-7-7S2 5.141 2 9s3.14 7 7 7c1.763 0 3.37-.66 4.603-1.739l1.337 2.8s.275.224.653.596c.387.363.896.854 1.384 1.367l1.358 1.392.604.646 2.121-2.121-.646-.604c-.379-.372-.885-.866-1.391-1.36zM9 14c-2.757 0-5-2.243-5-5s2.243-5 5-5 5 2.243 5 5-2.243 5-5 5z"
></path>
</svg>
<span class="sr-only">Search</span>
</LinkButton>
</li>
<li>
+21 -16
View File
@@ -10,19 +10,24 @@ export interface Props {
const { href, className, ariaLabel, title, disabled = false } = Astro.props;
---
<a
href={disabled ? "#" : href}
tabindex={disabled ? "-1" : "0"}
class={`group inline-block ${className}`}
aria-label={ariaLabel}
title={title}
aria-disabled={disabled}
>
<slot />
</a>
<style>
a {
@apply hover:text-skin-accent;
}
</style>
{
disabled ? (
<span
class={`group inline-block ${className}`}
aria-label={ariaLabel}
title={title}
aria-disabled={disabled}
>
<slot />
</span>
) : (
<a
{href}
class={`group inline-block hover:text-skin-accent ${className}`}
aria-label={ariaLabel}
title={title}
>
<slot />
</a>
)
}
+2 -1
View File
@@ -80,6 +80,7 @@ export default function SearchBar({ searchList }: Props) {
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
<path d="M19.023 16.977a35.13 35.13 0 0 1-1.367-1.384c-.372-.378-.596-.653-.596-.653l-2.8-1.337A6.962 6.962 0 0 0 16 9c0-3.859-3.14-7-7-7S2 5.141 2 9s3.14 7 7 7c1.763 0 3.37-.66 4.603-1.739l1.337 2.8s.275.224.653.596c.387.363.896.854 1.384 1.367l1.358 1.392.604.646 2.121-2.121-.646-.604c-.379-.372-.885-.866-1.391-1.36zM9 14c-2.757 0-5-2.243-5-5s2.243-5 5-5 5 2.243 5 5-2.243 5-5 5z"></path>
</svg>
<span className="sr-only">Search</span>
</span>
<input
className="block w-full rounded border border-skin-fill
@@ -92,7 +93,7 @@ export default function SearchBar({ searchList }: Props) {
value={inputVal}
onChange={handleChange}
autoComplete="off"
autoFocus
// autoFocus
ref={inputRef}
/>
</label>
+1
View File
@@ -49,6 +49,7 @@ const shareLinks = [
title={social.linkTitle}
>
<Fragment set:html={socialIcons[social.name]} />
<span class="sr-only">{social.linkTitle}</span>
</LinkButton>
))
}
+1
View File
@@ -19,6 +19,7 @@ const { centered = false } = Astro.props;
title={social.linkTitle}
>
<Fragment set:html={socialIcons[social.name]} />
<span class="sr-only">{social.linkTitle}</span>
</LinkButton>
))
}