Problem
Three issues in TopBar affect the mobile menu button appearance, error banner height consistency, and the page title semantics.
1. TopBar mobile menu button has no visible label or tooltip on desktop
On desktop, the hamburger button is hidden with lg:hidden. On mobile it is visible but has only aria-label="Open menu". There is no title attribute for users who hover on a touch-capable desktop device, and no visible text label that appears on the menu button.
2. TopBar error banner has a fixed height that clips long error messages
The error banner uses py-2.5 with flex items-center justify-between. Long error messages (e.g. full Horizon error strings) wrap and the h-[60px] header below shifts down, breaking the layout. The error banner should have flex-shrink-0 and the overall layout should account for variable banner height.
3. TopBar page title <h1> tag is missing — the title is in a <p> or <span> semantically
TopBar renders {title} in a styled element. If this is not a semantic <h1>, screen readers navigating by heading skip the page title entirely. The top-level heading of each screen should be a proper <h1>.
Solution
- Add
title={sidebarOpen ? "Close menu" : "Open menu"} to the mobile menu button.
- Remove the fixed
h-[60px] constraint from the header when an error banner is present; use min-h-[60px] and allow the banner to expand the containing block.
- Change the title
<p> to <h1> in TopBar with the same styling, ensuring one <h1> per page.
Acceptance Criteria
Note for Contributors: Write a clear PR description. Include screenshots of the error banner with a long message and confirm only one <h1> per page via browser DevTools.
Problem
Three issues in
TopBaraffect the mobile menu button appearance, error banner height consistency, and the page title semantics.1.
TopBarmobile menu button has no visible label or tooltip on desktopOn desktop, the hamburger button is hidden with
lg:hidden. On mobile it is visible but has onlyaria-label="Open menu". There is notitleattribute for users who hover on a touch-capable desktop device, and no visible text label that appears on the menu button.2.
TopBarerror banner has a fixed height that clips long error messagesThe error banner uses
py-2.5withflex items-center justify-between. Long error messages (e.g. full Horizon error strings) wrap and theh-[60px]header below shifts down, breaking the layout. The error banner should haveflex-shrink-0and the overall layout should account for variable banner height.3.
TopBarpage title<h1>tag is missing — the title is in a<p>or<span>semanticallyTopBarrenders{title}in a styled element. If this is not a semantic<h1>, screen readers navigating by heading skip the page title entirely. The top-level heading of each screen should be a proper<h1>.Solution
title={sidebarOpen ? "Close menu" : "Open menu"}to the mobile menu button.h-[60px]constraint from the header when an error banner is present; usemin-h-[60px]and allow the banner to expand the containing block.<p>to<h1>inTopBarwith the same styling, ensuring one<h1>per page.Acceptance Criteria
titletooltip on hover<h1><h1>exists on each screennpm run buildpasses