Skip to content

Commit 95c1263

Browse files
committed
fix: improve accessibility and mobile touch handling
1 parent f9638a5 commit 95c1263

7 files changed

Lines changed: 21 additions & 10 deletions

File tree

src/components/Header.astro

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,37 +23,40 @@ const altUrl = getAlternateUrl(path, altLang);
2323
</div>
2424
</a>
2525

26-
<nav id="main-nav">
27-
<ul>
26+
<nav id="main-nav" aria-label={lang === 'ru' ? 'Основная навигация' : 'Main navigation'}>
27+
<ul role="list">
2828
<li><a href={navHref('#home')}>{t('nav.home')}</a></li>
2929
<li><a href={navHref('#about')}>{t('nav.about')}</a></li>
3030
<li><a href={navHref('#features')}>{t('nav.features')}</a></li>
3131
<li>
3232
<a
3333
href={lang === 'ru' ? '/ru/releases' : '/releases'}
3434
class:list={[{ active: path.includes('/releases') }]}
35+
aria-current={path.includes('/releases') ? 'page' : undefined}
3536
>{t('nav.download')}</a>
3637
</li>
3738
<li>
3839
<a
3940
href={lang === 'ru' ? '/ru/team' : '/team'}
4041
class:list={[{ active: path === '/team' || path === '/ru/team' }]}
42+
aria-current={path === '/team' || path === '/ru/team' ? 'page' : undefined}
4143
>{t('nav.team')}</a>
4244
</li>
4345
<li><a href={navHref('#community')}>{t('nav.community')}</a></li>
4446
<li>
4547
<a
4648
href={lang === 'ru' ? '/ru/blog' : '/blog'}
4749
class:list={[{ active: path.includes('/blog') }]}
50+
aria-current={path.includes('/blog') ? 'page' : undefined}
4851
>{t('nav.blog')}</a>
4952
</li>
5053
</ul>
5154
</nav>
5255

5356
<div class="header-actions">
5457
<div class="lang-toggle">
55-
<a href={getAlternateUrl(path, 'en')} class:list={[{ active: lang === 'en' }]}>EN</a>
56-
<a href={getAlternateUrl(path, 'ru')} class:list={[{ active: lang === 'ru' }]}>RU</a>
58+
<a href={getAlternateUrl(path, 'en')} class:list={[{ active: lang === 'en' }]} aria-current={lang === 'en' ? 'true' : undefined} aria-label="English">EN</a>
59+
<a href={getAlternateUrl(path, 'ru')} class:list={[{ active: lang === 'ru' }]} aria-current={lang === 'ru' ? 'true' : undefined} aria-label="Русский">RU</a>
5760
</div>
5861
<button class="menu-toggle" id="menu-toggle" aria-label="Menu" aria-expanded="false" aria-controls="main-nav">
5962
<span></span>

src/components/blog/BlogCard.astro

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,14 @@ const dateStr = publishedAt
3131
</div>
3232
)}
3333
<h2 class="card-title">
34-
<a href={`${blogBase}/${slug}`}>{title}</a>
34+
<a href={`${blogBase}/${slug}`} aria-label={title}>{title}</a>
3535
</h2>
3636
{description && <p class="card-desc">{description}</p>}
3737
</div>
3838
<div class="card-footer">
3939
{author && <span class="author">{author}</span>}
4040
{dateStr && <time datetime={publishedAt?.toISOString()}>{dateStr}</time>}
41-
<a href={`${blogBase}/${slug}`} class="read-more">{t('blog.read')}</a>
41+
<a href={`${blogBase}/${slug}`} class="read-more" aria-hidden="true" tabindex="-1">{t('blog.read')}</a>
4242
</div>
4343
</article>
4444

src/pages/blog/[slug].astro

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ const dateStr = post.data.publishedAt
1818
<BlogLayout title={`${post.data.title} — NurOS Blog`} description={post.data.description}>
1919
<article class="post-article">
2020
<div class="container">
21-
<a href="/blog" class="back-link"> Back to blog</a>
21+
<a href="/blog" class="back-link"><span aria-hidden="true">←</span> Back to blog</a>
2222

2323
{post.data.tags && post.data.tags.length > 0 && (
2424
<div class="tags">{post.data.tags.map((tag) => <span class="tag">{tag}</span>)}</div>

src/pages/releases.astro

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ const t = useTranslations(lang);
3939
<div class="arch-card">
4040
<span class="arch-name">{arch.name}</span>
4141
{arch.link ? (
42-
<a href={arch.link} class="arch-btn arch-btn--get" target="_blank" rel="noopener">
42+
<a href={arch.link} class="arch-btn arch-btn--get" target="_blank" rel="noopener"
43+
aria-label={`${t('download.get')} NurOS ${edition.id === 'juldyz' ? 'Juldyz' : 'Josh'} — ${arch.name}`}>
4344
{t('download.get')}
4445
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" y1="15" x2="12" y2="3"/></svg>
4546
</a>

src/pages/ru/blog/[slug].astro

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ const dateStr = post.data.publishedAt
1818
<BlogLayout title={`${post.data.title} — NurOS Blog`} description={post.data.description}>
1919
<article class="post-article">
2020
<div class="container">
21-
<a href="/ru/blog" class="back-link"> Назад к блогу</a>
21+
<a href="/ru/blog" class="back-link"><span aria-hidden="true">←</span> Назад к блогу</a>
2222

2323
{post.data.tags && post.data.tags.length > 0 && (
2424
<div class="tags">{post.data.tags.map((tag) => <span class="tag">{tag}</span>)}</div>

src/pages/ru/releases.astro

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ const t = useTranslations(lang);
3939
<div class="arch-card">
4040
<span class="arch-name">{arch.name}</span>
4141
{arch.link ? (
42-
<a href={arch.link} class="arch-btn arch-btn--get" target="_blank" rel="noopener">
42+
<a href={arch.link} class="arch-btn arch-btn--get" target="_blank" rel="noopener"
43+
aria-label={`${t('download.get')} NurOS ${edition.id === 'juldyz' ? 'Juldyz' : 'Josh'} — ${arch.name}`}>
4344
{t('download.get')}
4445
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" y1="15" x2="12" y2="3"/></svg>
4546
</a>

src/styles/global.css

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,12 @@ body {
4141
padding: 0 var(--spacing-md);
4242
}
4343

44+
a,
45+
button {
46+
-webkit-tap-highlight-color: transparent;
47+
touch-action: manipulation;
48+
}
49+
4450
a {
4551
text-decoration: none;
4652
color: var(--accent-color);

0 commit comments

Comments
 (0)