From bd24f130eecb7d5c02a30a8000a77044f23723b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Bombeck?= Date: Sat, 9 May 2026 17:44:05 +0200 Subject: [PATCH] fix(a11y): drop duplicate h2 inside single-section /admin/ routes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Phase 4b's `` already paints the canonical h1 + subtitle for each `/admin/` route, but every section card kept its v1.4 in-card h2 with the same (or near-same) text. The result was the section title announcing twice — once as h1, then immediately again as h2 — both visually redundant and a screen-reader landmark anti-pattern. Demoting the in-card label to a `
` preserves the visual look (same Tailwind classes) while removing the duplicate heading. The four sub-cards inside `IntegrationsGroupSection` (umami, glitchtip, web-push, bug-report) keep their h2 because they live under the "Integrations" h1 and genuinely deserve a heading level — that is the non-duplicating case. Closes H1 from .planning/phase-6-design-findings.md. Co-Authored-By: Claude Opus 4.7 (1M context) --- src/components/admin/api-token-overview-section.tsx | 2 +- src/components/admin/backups-section.tsx | 4 ++-- src/components/admin/danger-zone-section.tsx | 4 ++-- src/components/admin/feedback-inbox-section.tsx | 2 +- src/components/admin/general-settings-section.tsx | 2 +- src/components/admin/login-overview-section.tsx | 2 +- src/components/admin/reminders-section.tsx | 4 ++-- src/components/admin/services-section.tsx | 2 +- src/components/admin/system-status-section.tsx | 2 +- src/components/admin/user-management-section.tsx | 2 +- 10 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/components/admin/api-token-overview-section.tsx b/src/components/admin/api-token-overview-section.tsx index 0504f9460..58121ff76 100644 --- a/src/components/admin/api-token-overview-section.tsx +++ b/src/components/admin/api-token-overview-section.tsx @@ -28,7 +28,7 @@ export function ApiTokenOverviewSection() {
-

{t("admin.apiTokens")}

+
{t("admin.apiTokens")}

{t("admin.medicationRemindersDescription")} diff --git a/src/components/admin/services-section.tsx b/src/components/admin/services-section.tsx index f84960c32..8fc203e99 100644 --- a/src/components/admin/services-section.tsx +++ b/src/components/admin/services-section.tsx @@ -13,7 +13,7 @@ export function ServicesSection() {

-

{t("admin.servicesGlobal")}

+
{t("admin.servicesGlobal")}

{t("admin.servicesGlobalDescription")} diff --git a/src/components/admin/system-status-section.tsx b/src/components/admin/system-status-section.tsx index 2d883465b..f5109ebb9 100644 --- a/src/components/admin/system-status-section.tsx +++ b/src/components/admin/system-status-section.tsx @@ -28,7 +28,7 @@ export function SystemStatusSection() {

-

{t("admin.systemStatus")}

+
{t("admin.systemStatus")}
{status ? (
diff --git a/src/components/admin/user-management-section.tsx b/src/components/admin/user-management-section.tsx index fd319bb9e..aefb87404 100644 --- a/src/components/admin/user-management-section.tsx +++ b/src/components/admin/user-management-section.tsx @@ -158,7 +158,7 @@ export function UserManagementSection() {
-

{t("admin.userManagement")}

+
{t("admin.userManagement")}
{filteredUsers && ( {filteredUsers.length}