mirror of
https://github.com/Studio-Saelix/sencho.git
synced 2026-08-31 20:58:04 +00:00
chore(security): a11y polish on scan comparison and history (#665)
Add aria-label to the Scan history entry button, aria-labels to the pagination chevrons, and aria-live polite + aria-label on the page indicator so screen readers hear "Page 2 of 5" instead of "2 slash 5" when navigating the comparison sheet and scan history list.
This commit is contained in:
@@ -721,6 +721,7 @@ export default function ResourcesView() {
|
|||||||
}));
|
}));
|
||||||
}}
|
}}
|
||||||
title="View completed vulnerability scans and compare them"
|
title="View completed vulnerability scans and compare them"
|
||||||
|
aria-label="Open scan history"
|
||||||
>
|
>
|
||||||
<History className="w-4 h-4 mr-2" strokeWidth={1.5} />
|
<History className="w-4 h-4 mr-2" strokeWidth={1.5} />
|
||||||
Scan history
|
Scan history
|
||||||
|
|||||||
@@ -251,17 +251,21 @@ export function ScanComparisonSheet({
|
|||||||
{crossImage ? 'Shared' : 'Unchanged'} ({data.unchanged.length})
|
{crossImage ? 'Shared' : 'Unchanged'} ({data.unchanged.length})
|
||||||
</Button>
|
</Button>
|
||||||
{needsPagination && (
|
{needsPagination && (
|
||||||
<div className="flex items-center gap-1 ml-auto">
|
<div className="flex items-center gap-1 ml-auto" aria-live="polite">
|
||||||
<Button
|
<Button
|
||||||
variant="ghost"
|
variant="ghost"
|
||||||
size="icon"
|
size="icon"
|
||||||
className="h-6 w-6"
|
className="h-6 w-6"
|
||||||
onClick={() => setPage(Math.max(0, safePage - 1))}
|
onClick={() => setPage(Math.max(0, safePage - 1))}
|
||||||
disabled={safePage === 0}
|
disabled={safePage === 0}
|
||||||
|
aria-label="Previous page"
|
||||||
>
|
>
|
||||||
<ChevronLeft className="w-4 h-4" strokeWidth={1.5} />
|
<ChevronLeft className="w-4 h-4" strokeWidth={1.5} />
|
||||||
</Button>
|
</Button>
|
||||||
<span className="text-xs font-mono tabular-nums text-stat-subtitle min-w-[3rem] text-center">
|
<span
|
||||||
|
className="text-xs font-mono tabular-nums text-stat-subtitle min-w-[3rem] text-center"
|
||||||
|
aria-label={`Page ${safePage + 1} of ${totalPages}`}
|
||||||
|
>
|
||||||
{safePage + 1} / {totalPages}
|
{safePage + 1} / {totalPages}
|
||||||
</span>
|
</span>
|
||||||
<Button
|
<Button
|
||||||
@@ -270,6 +274,7 @@ export function ScanComparisonSheet({
|
|||||||
className="h-6 w-6"
|
className="h-6 w-6"
|
||||||
onClick={() => setPage(Math.min(totalPages - 1, safePage + 1))}
|
onClick={() => setPage(Math.min(totalPages - 1, safePage + 1))}
|
||||||
disabled={safePage >= totalPages - 1}
|
disabled={safePage >= totalPages - 1}
|
||||||
|
aria-label="Next page"
|
||||||
>
|
>
|
||||||
<ChevronRight className="w-4 h-4" strokeWidth={1.5} />
|
<ChevronRight className="w-4 h-4" strokeWidth={1.5} />
|
||||||
</Button>
|
</Button>
|
||||||
|
|||||||
@@ -192,17 +192,21 @@ export function SecurityHistoryView() {
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
{needsPagination && (
|
{needsPagination && (
|
||||||
<div className="flex items-center gap-1 ml-auto">
|
<div className="flex items-center gap-1 ml-auto" aria-live="polite">
|
||||||
<Button
|
<Button
|
||||||
variant="ghost"
|
variant="ghost"
|
||||||
size="icon"
|
size="icon"
|
||||||
className="h-6 w-6"
|
className="h-6 w-6"
|
||||||
onClick={() => setPage(Math.max(0, safePage - 1))}
|
onClick={() => setPage(Math.max(0, safePage - 1))}
|
||||||
disabled={safePage === 0}
|
disabled={safePage === 0}
|
||||||
|
aria-label="Previous page"
|
||||||
>
|
>
|
||||||
<ChevronLeft className="w-4 h-4" strokeWidth={1.5} />
|
<ChevronLeft className="w-4 h-4" strokeWidth={1.5} />
|
||||||
</Button>
|
</Button>
|
||||||
<span className="text-xs font-mono tabular-nums text-stat-subtitle min-w-[3rem] text-center">
|
<span
|
||||||
|
className="text-xs font-mono tabular-nums text-stat-subtitle min-w-[3rem] text-center"
|
||||||
|
aria-label={`Page ${safePage + 1} of ${totalPages}`}
|
||||||
|
>
|
||||||
{safePage + 1} / {totalPages}
|
{safePage + 1} / {totalPages}
|
||||||
</span>
|
</span>
|
||||||
<Button
|
<Button
|
||||||
@@ -211,6 +215,7 @@ export function SecurityHistoryView() {
|
|||||||
className="h-6 w-6"
|
className="h-6 w-6"
|
||||||
onClick={() => setPage(Math.min(totalPages - 1, safePage + 1))}
|
onClick={() => setPage(Math.min(totalPages - 1, safePage + 1))}
|
||||||
disabled={safePage >= totalPages - 1}
|
disabled={safePage >= totalPages - 1}
|
||||||
|
aria-label="Next page"
|
||||||
>
|
>
|
||||||
<ChevronRight className="w-4 h-4" strokeWidth={1.5} />
|
<ChevronRight className="w-4 h-4" strokeWidth={1.5} />
|
||||||
</Button>
|
</Button>
|
||||||
|
|||||||
Reference in New Issue
Block a user