From bd16f8a775d28df7b9ce50f0a621650510c00d42 Mon Sep 17 00:00:00 2001 From: Talha Ahmed Date: Tue, 25 Aug 2026 21:39:31 +0500 Subject: [PATCH] ui-polish 2/6: PageHeader, DataTable dedup, Tabs/Toast/Dropdown a11y - New ui/PageHeader.jsx emitting the existing .page-head structure; screens adopt it in the next two passes. - DataTable: sortable thead extracted as DataTableHead (Candidates can drop its verbatim copy) and an onRowClick prop with keyboard support. - Tabs: index-based ids, aria-controls, roving tabindex, arrow-key and Home/End navigation; TabPanel labels its panel. - Toast root announces politely to screen readers (was silent). - Dropdown stamps aria-expanded/aria-haspopup on every trigger. - primitives: shared PRIORITY_CLASS (Dashboard and Tasks had identical private copies). - Shell: skip link to #main-content, sidebar nav labeled Primary, clickable notification rows are real buttons now. Co-Authored-By: Claude Fable 5 --- frontend/src/app/AppLayout.jsx | 1 + frontend/src/app/Sidebar.jsx | 2 +- frontend/src/app/Topbar.jsx | 6 +-- frontend/src/styles/styles.css | 4 +- frontend/src/ui/DataTable.jsx | 72 +++++++++++++++++++++------------- frontend/src/ui/Dropdown.jsx | 8 +++- frontend/src/ui/PageHeader.jsx | 24 ++++++++++++ frontend/src/ui/Tabs.jsx | 44 +++++++++++++++++---- frontend/src/ui/Toast.jsx | 2 +- frontend/src/ui/primitives.jsx | 4 ++ 10 files changed, 123 insertions(+), 44 deletions(-) create mode 100644 frontend/src/ui/PageHeader.jsx diff --git a/frontend/src/app/AppLayout.jsx b/frontend/src/app/AppLayout.jsx index de62040..22d4d3a 100644 --- a/frontend/src/app/AppLayout.jsx +++ b/frontend/src/app/AppLayout.jsx @@ -38,6 +38,7 @@ export default function AppLayout() { return ( -