Skip to content

Commit d2e91f9

Browse files
🎨 Palette: ヘッダーのインタラクティブ要素にキーボードフォーカス時のスタイルを追加
Co-authored-by: is0692vs <135803462+is0692vs@users.noreply.github.com>
1 parent a3eea8f commit d2e91f9

2 files changed

Lines changed: 7 additions & 4 deletions

File tree

.jules/palette.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
## 2024-07-19 - ヘッダーのキーボードアクセシビリティ改善
2+
**Learning:** Tailwind CSS で作成されたインタラクティブ要素(ナビゲーションリンク、ログインボタン等)において、デフォルトのフォーカスリングが表示されない、または視認性が低い問題がありました。キーボードユーザーにとって、フォーカスリングの欠如は現在位置を見失う原因となり、致命的なアクセシビリティ問題を引き起こします。特に、ダークモード時のコントラスト不足が課題でした。
3+
**Action:** インタラクティブな要素(`<button>``<Link>` など)には、必ず `focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-gray-900 focus-visible:ring-offset-2` (および対応する `dark:` バリアント)を適用し、すべての背景色において明確なフォーカスインジケータが表示されるように設計する。

apps/web/src/components/header.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ export function Header() {
2222
<div className="flex min-w-0 items-center gap-6">
2323
<Link
2424
href="/"
25-
className="text-base font-semibold tracking-tight text-gray-950 transition-colors hover:text-gray-700 dark:text-gray-50 dark:hover:text-gray-300"
25+
className="rounded text-base font-semibold tracking-tight text-gray-950 transition-colors hover:text-gray-700 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-gray-900 focus-visible:ring-offset-2 dark:text-gray-50 dark:hover:text-gray-300 dark:focus-visible:ring-gray-100 dark:focus-visible:ring-offset-gray-950"
2626
>
2727
OpenShelf
2828
</Link>
@@ -38,7 +38,7 @@ export function Header() {
3838
key={item.href}
3939
href={item.href}
4040
aria-current={isActive ? "page" : undefined}
41-
className={`rounded-full px-3 py-1.5 transition-colors ${
41+
className={`rounded-full px-3 py-1.5 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-gray-900 focus-visible:ring-offset-2 dark:focus-visible:ring-gray-100 dark:focus-visible:ring-offset-gray-950 ${
4242
isActive
4343
? "bg-gray-900 text-white dark:bg-gray-100 dark:text-gray-900"
4444
: "text-gray-600 hover:bg-gray-100 hover:text-gray-900 dark:text-gray-400 dark:hover:bg-gray-800 dark:hover:text-gray-100"
@@ -70,7 +70,7 @@ export function Header() {
7070
<button
7171
type="button"
7272
onClick={logout}
73-
className="rounded-full border border-gray-300 px-3 py-1.5 text-sm text-gray-700 transition-colors hover:bg-gray-100 hover:text-gray-900 dark:border-gray-700 dark:text-gray-200 dark:hover:bg-gray-800 dark:hover:text-gray-50"
73+
className="rounded-full border border-gray-300 px-3 py-1.5 text-sm text-gray-700 transition-colors hover:bg-gray-100 hover:text-gray-900 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-gray-900 focus-visible:ring-offset-2 dark:border-gray-700 dark:text-gray-200 dark:hover:bg-gray-800 dark:hover:text-gray-50 dark:focus-visible:ring-gray-100 dark:focus-visible:ring-offset-gray-950"
7474
>
7575
ログアウト
7676
</button>
@@ -79,7 +79,7 @@ export function Header() {
7979
<button
8080
type="button"
8181
onClick={login}
82-
className="rounded-full bg-gray-900 px-4 py-2 text-sm font-medium text-white transition-colors hover:bg-gray-700 dark:bg-white dark:text-gray-900 dark:hover:bg-gray-200"
82+
className="rounded-full bg-gray-900 px-4 py-2 text-sm font-medium text-white transition-colors hover:bg-gray-700 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-gray-900 focus-visible:ring-offset-2 dark:bg-white dark:text-gray-900 dark:hover:bg-gray-200 dark:focus-visible:ring-gray-100 dark:focus-visible:ring-offset-gray-950"
8383
>
8484
GitHubでログイン
8585
</button>

0 commit comments

Comments
 (0)