From 7f4868571768aa882931016faef4bf117115832c Mon Sep 17 00:00:00 2001 From: Michelle Date: Thu, 28 May 2026 10:07:19 +0200 Subject: [PATCH] Enhance accessibility and improve form semantics across multiple pages - Added `htmlFor` attributes to labels for better accessibility in Calendar, Dashboard, GuestJoin, Login, Register, RoomDetail, and Settings pages. - Included `aria-hidden` attributes for icons to improve screen reader experience. - Set `autoComplete` attributes for input fields to enhance user experience during form filling. - Implemented `role` and `aria` attributes for radio groups and buttons to improve accessibility compliance. --- package-lock.json | 27 +------- src/components/FederatedRoomCard.jsx | 16 ++++- src/components/Modal.jsx | 40 +++++++++++- src/components/Navbar.jsx | 6 +- src/components/NotificationBell.jsx | 6 ++ src/components/RoomCard.jsx | 19 +++++- src/components/Sidebar.jsx | 3 +- src/components/ThemeSelector.jsx | 12 +++- src/i18n/de.json | 4 +- src/i18n/en.json | 4 +- src/pages/Admin.jsx | 96 +++++++++++++++++----------- src/pages/Calendar.jsx | 24 ++++--- src/pages/Dashboard.jsx | 18 ++++-- src/pages/GuestJoin.jsx | 18 ++++-- src/pages/Login.jsx | 12 ++-- src/pages/Register.jsx | 30 ++++++--- src/pages/RoomDetail.jsx | 27 +++++--- src/pages/Settings.jsx | 59 +++++++++++------ 18 files changed, 288 insertions(+), 133 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6861736..e5a9491 100644 --- a/package-lock.json +++ b/package-lock.json @@ -798,18 +798,6 @@ "tslib": "^2.4.0" } }, - "node_modules/@types/node": { - "version": "25.8.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.8.0.tgz", - "integrity": "sha512-TCFSk8IZh+iLX1xtksoBVtdmgL+1IX0fC9BeU4QqFSuNdN/K+HUlhqOzEmSYYpZUVsLYcPqc9KX+60iDuninSQ==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "undici-types": ">=7.24.0 <7.24.7" - } - }, "node_modules/@types/react": { "version": "19.2.14", "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz", @@ -4647,9 +4635,9 @@ } }, "node_modules/tmp": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", - "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==", + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.7.tgz", + "integrity": "sha512-e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw==", "license": "MIT", "engines": { "node": ">=14.14" @@ -4719,15 +4707,6 @@ "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", "license": "MIT" }, - "node_modules/undici-types": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.24.6.tgz", - "integrity": "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, "node_modules/unicode-properties": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/unicode-properties/-/unicode-properties-1.4.1.tgz", diff --git a/src/components/FederatedRoomCard.jsx b/src/components/FederatedRoomCard.jsx index 61ab7b1..d63bcec 100644 --- a/src/components/FederatedRoomCard.jsx +++ b/src/components/FederatedRoomCard.jsx @@ -30,8 +30,21 @@ export default function FederatedRoomCard({ room, onRemove }) { const recordingOn = room.allow_recording === 1 || room.allow_recording === true; + const openRoom = () => navigate(`/federation/rooms/${room.id}`); + return ( -
navigate(`/federation/rooms/${room.id}`)}> +
{ + if (e.target !== e.currentTarget) return; + if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); openRoom(); } + }} + className={`card-hover group p-5 cursor-pointer focus:outline-hidden focus:ring-2 focus:ring-th-ring focus:ring-offset-2 ${isDeleted ? 'opacity-60' : ''}`} + style={{ '--tw-ring-offset-color': 'var(--bg-primary)' }} + >
@@ -107,6 +120,7 @@ export default function FederatedRoomCard({ room, onRemove }) {