From 936c0535c7aad9e749f18215062fa7d448b07a87 Mon Sep 17 00:00:00 2001 From: Flotapponnier <160007691+Flotapponnier@users.noreply.github.com> Date: Sun, 26 Jul 2026 17:01:01 +0200 Subject: [PATCH] a11y: add aria-label to 9 leaderboard search inputs (#1517) * chain-kpis: register Sei + Mode + Ronin + Immutable zkEVM (DefiLlama slugs verified live) * chore(deps): bump next + js-yaml + pin hono via override (fix 3 High CVEs) - next 16.2.6 -> 16.2.12 (fixes 4 High advisories: SSRF in Server Actions, SSRF in rewrites, App Router middleware bypass, DoS) - @modelcontextprotocol/sdk 1.26.0 -> 1.29.0 - js-yaml ^4.1.1 -> ^4.3.0 (fixes O(n^2) merge-key DoS; stay in 4.x since 5.x is a breaking API change) - pnpm.overrides: hono >=4.12.32 (was pinned to 4.12.18 via MCP SDK transitive; fixes CORS 'reflect any Origin' + JWT scheme bypass on the public /api/mcp endpoint) pnpm audit --audit-level=high: 4 -> 2 remaining (both are transitive sharp / brace-expansion advisories that Next / ESLint own and are harder to reach without breaking-change bumps upstream). pnpm typecheck clean. * a11y: add aria-label to 9 leaderboard search inputs Search inputs across the leaderboard grid (hl-cohort, hl-hip3, perp-by-asset, perp-venues, pm-data-feeds, pm-venues, providers-table, rpc-chains, rpc-providers-pivot) only had placeholder text. Screen readers annouced them as 'edit' with no context; NVDA + JAWS + VoiceOver users had to interact with the field to discover what it filtered. Adds aria-label mirroring the placeholder ('Search venue', 'Search builder', etc.) so the field has an accessible name whether the placeholder is visible or the user has typed into it. Files that already carried aria-label (badges-catalog, benchmark-grid, compare-selector, search-dialog) are untouched. --- src/components/hl-cohort-leaderboard.tsx | 2 +- src/components/hl-hip3-leaderboard.tsx | 2 +- src/components/perp-by-asset-table.tsx | 2 +- src/components/perp-venues-leaderboard.tsx | 2 +- src/components/pm-data-feeds-leaderboard.tsx | 2 +- src/components/pm-venues-leaderboard.tsx | 2 +- src/components/providers-table.tsx | 2 +- src/components/rpc-chains-leaderboard.tsx | 2 +- src/components/rpc-providers-pivot.tsx | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/components/hl-cohort-leaderboard.tsx b/src/components/hl-cohort-leaderboard.tsx index 272f987f..16af88b7 100644 --- a/src/components/hl-cohort-leaderboard.tsx +++ b/src/components/hl-cohort-leaderboard.tsx @@ -65,7 +65,7 @@ export function HlCohortLeaderboard({ {filtered.length} of {rows.length} builders
setQ(e.target.value)} placeholder="Search builder…" diff --git a/src/components/hl-hip3-leaderboard.tsx b/src/components/hl-hip3-leaderboard.tsx index 9a81a250..2c1b0a39 100644 --- a/src/components/hl-hip3-leaderboard.tsx +++ b/src/components/hl-hip3-leaderboard.tsx @@ -58,7 +58,7 @@ export function HlHip3Leaderboard({ rows }: { rows: HlHip3Row[] }) { {filtered.length} of {rows.length} dexes setQ(e.target.value)} placeholder="Search dex…" diff --git a/src/components/perp-by-asset-table.tsx b/src/components/perp-by-asset-table.tsx index fb928767..a28b5e61 100644 --- a/src/components/perp-by-asset-table.tsx +++ b/src/components/perp-by-asset-table.tsx @@ -87,7 +87,7 @@ export function PerpByAssetTable({ rows }: { rows: PerpAssetRow[] }) { {filtered.length} of {rows.length} venues setQ(e.target.value)} placeholder="Search venue..." diff --git a/src/components/perp-venues-leaderboard.tsx b/src/components/perp-venues-leaderboard.tsx index 294986e1..bcec0f05 100644 --- a/src/components/perp-venues-leaderboard.tsx +++ b/src/components/perp-venues-leaderboard.tsx @@ -80,7 +80,7 @@ export function PerpVenuesLeaderboard({ rows }: { rows: PerpVenueRow[] }) { {filtered.length} of {rows.length} venues setQ(e.target.value)} placeholder="Search venue or chain..." diff --git a/src/components/pm-data-feeds-leaderboard.tsx b/src/components/pm-data-feeds-leaderboard.tsx index 1b236497..8a8b6630 100644 --- a/src/components/pm-data-feeds-leaderboard.tsx +++ b/src/components/pm-data-feeds-leaderboard.tsx @@ -68,7 +68,7 @@ export function PmDataFeedsLeaderboard({ rows }: { rows: PmDataFeedRow[] }) { {filtered.length} of {rows.length} feeds setQ(e.target.value)} placeholder="Search feed..." diff --git a/src/components/pm-venues-leaderboard.tsx b/src/components/pm-venues-leaderboard.tsx index f905dfcd..1c9515dc 100644 --- a/src/components/pm-venues-leaderboard.tsx +++ b/src/components/pm-venues-leaderboard.tsx @@ -72,7 +72,7 @@ export function PmVenuesLeaderboard({ rows }: { rows: PmVenueRow[] }) { {filtered.length} of {rows.length} venues setQ(e.target.value)} placeholder="Search venue..." diff --git a/src/components/providers-table.tsx b/src/components/providers-table.tsx index 6fef5ca1..372aca61 100644 --- a/src/components/providers-table.tsx +++ b/src/components/providers-table.tsx @@ -89,7 +89,7 @@ export function ProvidersTable({ providers }: { providers: Row[] }) { className="absolute left-3 text-ink-faint group-focus-within:text-ink-muted pointer-events-none" /> setQuery(e.target.value)} placeholder="Search products..." diff --git a/src/components/rpc-chains-leaderboard.tsx b/src/components/rpc-chains-leaderboard.tsx index 6052b681..bdb4e0f6 100644 --- a/src/components/rpc-chains-leaderboard.tsx +++ b/src/components/rpc-chains-leaderboard.tsx @@ -89,7 +89,7 @@ export function RpcChainsLeaderboard({ rows }: { rows: RpcHubChain[] }) { regions setQ(e.target.value)} placeholder="Search chain or provider..." diff --git a/src/components/rpc-providers-pivot.tsx b/src/components/rpc-providers-pivot.tsx index 883dc051..95972a95 100644 --- a/src/components/rpc-providers-pivot.tsx +++ b/src/components/rpc-providers-pivot.tsx @@ -102,7 +102,7 @@ export function RpcProvidersPivot({ p50 across {chains.length} chains setQ(e.target.value)} placeholder="Search provider..."