From c95cc44a1140f0fbb796d4762166d810373dd0c8 Mon Sep 17 00:00:00 2001 From: Simon Axelsson Date: Thu, 25 Jun 2026 18:17:19 +0200 Subject: [PATCH] feat(a11y): add ARIA tablist/tab/tabpanel roles + i18n error page - validera: role=tablist + role=tab + aria-selected + aria-controls/id on tab buttons; role=tabpanel + id + aria-labelledby on content div - katalog/[id]: same ARIA tab pattern; replaced incorrect aria-current=page on tab buttons with role=tab + aria-selected - error.tsx: i18n all hardcoded English strings via useT() All three changes pass tsc 0. Co-Authored-By: Claude Sonnet 4.6 --- app/error.tsx | 12 +++++++----- app/katalog/[id]/page.tsx | 17 +++++++++++++---- app/order/[id]/validera/page.tsx | 16 +++++++++++++--- 3 files changed, 33 insertions(+), 12 deletions(-) diff --git a/app/error.tsx b/app/error.tsx index bfc72dd..5bc5f64 100644 --- a/app/error.tsx +++ b/app/error.tsx @@ -3,6 +3,7 @@ import Link from "next/link"; import { useEffect } from "react"; import { Header } from "@/components/header"; +import { useT } from "@/components/locale-provider"; export default function Error({ error, @@ -11,6 +12,7 @@ export default function Error({ error: Error & { digest?: string }; reset: () => void; }) { + const t = useT(); useEffect(() => { console.error(error); }, [error]); @@ -27,26 +29,26 @@ export default function Error({ 500

- Error + {t({ en: "Error", sv: "Fel" })}

- Something went wrong. + {t({ en: "Something went wrong.", sv: "Något gick fel." })}

- An unexpected error occurred. Nothing was guessed.{error.digest ? ` (${error.digest})` : ""} + {t({ en: "An unexpected error occurred. Nothing was guessed.", sv: "Ett oväntat fel inträffade. Inget gissades." })}{error.digest ? ` (${error.digest})` : ""}

- Home + {t({ en: "Home", sv: "Hem" })}
diff --git a/app/katalog/[id]/page.tsx b/app/katalog/[id]/page.tsx index fed5e72..33eedbe 100644 --- a/app/katalog/[id]/page.tsx +++ b/app/katalog/[id]/page.tsx @@ -267,15 +267,18 @@ function DatasetView({ d, tab, setTab }: { d: Dataset; tab: TabKey; setTab: (k:
{/* tabs */} - +
-
+
{tab === "overview" ? : null} {tab === "samples" ? : null} {tab === "quality" ? : null} diff --git a/app/order/[id]/validera/page.tsx b/app/order/[id]/validera/page.tsx index b6c8478..4f0ddf2 100644 --- a/app/order/[id]/validera/page.tsx +++ b/app/order/[id]/validera/page.tsx @@ -121,12 +121,16 @@ export default function ValidationPage() {
{/* tabs */} -
+
{TABS.map((tb, i) => (
-
+
{/* Table tab */} {tab === "table" ? (