feat(a11y): aria-pressed on validera destinations + homepage filter group

- validera: delivery destination toggle buttons get aria-pressed + role=group
  + focus-visible ring
- featured-products-section: filter buttons get aria-pressed + role=group
  with aria-label

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-25 18:20:42 +02:00
co-authored by Claude Sonnet 4.6
parent 369bc11281
commit 580d1aca33
2 changed files with 5 additions and 3 deletions
+3 -2
View File
@@ -310,14 +310,15 @@ export default function ValidationPage() {
<p className="font-mono text-[10.5px] uppercase tracking-[0.12em] text-muted-foreground">
{t({ en: "Deliver to", sv: "Leverera till" })}
</p>
<div className="mt-4 flex flex-wrap gap-2">
<div role="group" aria-label={t({ en: "Delivery destinations", sv: "Leveransdestinationer" })} className="mt-4 flex flex-wrap gap-2">
{DESTINATIONS.map((d) => {
const on = dests.includes(d.id);
return (
<button
key={d.id}
aria-pressed={on}
onClick={() => toggleDest(d.id)}
className="border px-3.5 py-2 font-mono text-[11px] uppercase tracking-[0.08em] transition-colors hover:border-foreground"
className="border px-3.5 py-2 font-mono text-[11px] uppercase tracking-[0.08em] transition-colors hover:border-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background"
style={{
borderColor: on ? "var(--foreground)" : "var(--border)",
backgroundColor: on ? "var(--foreground)" : "transparent",
@@ -67,10 +67,11 @@ export function FeaturedProductsSection() {
<span className="text-muted-foreground">{t({ en: "Ready to ship.", sv: "Redo att leverera." })}</span>
</h2>
</div>
<div className="flex flex-wrap gap-px bg-border">
<div role="group" aria-label={t({ en: "Filter by type", sv: "Filtrera efter typ" })} className="flex flex-wrap gap-px bg-border">
{FILTERS.map((f) => (
<button
key={f}
aria-pressed={filter === f}
onClick={() => setFilter(f)}
className="bg-background px-4 py-2 font-mono text-[11px] uppercase tracking-[0.1em] transition-colors"
style={{