fix(ux): accessible sidebar/drawer, distinct Ops icon, skip link

- Ops nav now uses Wrench (was Settings2, collided with Settings)
- aria-current on active nav link, aria-label on primary nav
- mobile drawer: role=dialog/aria-modal, Escape to close, body
  scroll lock, focus moves into drawer and back to the menu button
- larger touch targets on the menu open/close buttons
- sidebar logo uses the shared BrandMark instead of an ad-hoc {hs}
- skip-to-content link added to the app layout
This commit is contained in:
Moheeb Zara
2026-05-15 22:12:52 -07:00
parent fa71d9a63e
commit 3360f54232
2 changed files with 50 additions and 10 deletions
+7 -1
View File
@@ -57,13 +57,19 @@ export default async function AppLayout({ children }: { children: React.ReactNod
return (
<div className="flex h-screen bg-background overflow-hidden">
<a
href="#main-content"
className="sr-only focus:not-sr-only focus:absolute focus:z-[100] focus:top-2 focus:left-2 focus:rounded-md focus:bg-primary focus:px-3 focus:py-2 focus:text-sm focus:text-primary-foreground"
>
Skip to content
</a>
<AppSidebar
member={member}
roleName={roleName}
taskBadge={taskCount ?? 0}
paymentBadge={paymentCount ?? 0}
/>
<main className="flex-1 overflow-y-auto pt-[52px] md:pt-0 flex flex-col">
<main id="main-content" tabIndex={-1} className="flex-1 overflow-y-auto pt-[52px] md:pt-0 flex flex-col">
<div className="flex-1">{children}</div>
{member.spaces && (member.spaces as { mission_statement?: string | null }).mission_statement && (
<footer className="border-t border-border bg-card px-4 md:px-6 py-3">