Global header & footer fixes
One PR. Clears findings on every page of the site.
Issue 1.1 — Header logo link missing accessible name ✅ Done
WCAG: 2.4.4 / 4.1.2 (Level A)
The desktop wordmark and mobile square logo links in the global header contained only SVGs with no text fallback or aria-label. Screen readers announced them as "link" with no destination context.
Files:
What was done: Added aria-label="FlowFuse home" to both <a> elements.
Acceptance criteria:
Issue 1.2 — Header CTA <ul> contains stray <a> child ✅ Done
WCAG: 1.3.1 (Level A)
<ul class="cta"> in the global header contained a "Contact Us" <a> element as a direct child rather than wrapped in <li>. Screen readers announce list items by count; an unwrapped child confused the announced structure.
Files:
What was done: Wrapped the <a class="ml-2 ff-btn ff-btn--primary">Contact Us</a> in <li class="flex">.
Acceptance criteria:
Issue 1.3 — Platform mega-menu <ul> structure (covers original 1.3 + 1.4) ✅ Done
WCAG: 1.3.1 (Level A)
Lighthouse flagged three list-structure violations on every page: ul.narrow.sm:grid…items-center, ul.sub-menu.grid.grid-rows-subgrid.row-span-4, and ul.sub-menu.grid.grid-rows-subgrid.row-span-3. All three were caused by the same structural issue in the Platform mega-menu: the two <ul class="sub-menu"> blocks were direct children of <ul class="narrow"> (rather than nested inside their respective title <li>s).
Files:
Acceptance criteria:
Global header & footer fixes
Issue 1.1 — Header logo link missing accessible name ✅ Done
WCAG: 2.4.4 / 4.1.2 (Level A)
The desktop wordmark and mobile square logo links in the global header contained only SVGs with no text fallback or
aria-label. Screen readers announced them as "link" with no destination context.Files:
What was done: Added
aria-label="FlowFuse home"to both<a>elements.Acceptance criteria:
aria-label="FlowFuse home"a.flex.md:hidden.lg:flex...as missing a discernible name (verify after deploy)Issue 1.2 — Header CTA
<ul>contains stray<a>child ✅ DoneWCAG: 1.3.1 (Level A)
<ul class="cta">in the global header contained a "Contact Us"<a>element as a direct child rather than wrapped in<li>. Screen readers announce list items by count; an unwrapped child confused the announced structure.Files:
<ul>block (was lines 299–305, now 299–309 after edit)What was done: Wrapped the
<a class="ml-2 ff-btn ff-btn--primary">Contact Us</a>in<li class="flex">.Acceptance criteria:
<li>inside<ul class="cta">ul.ctafor the "Lists do not contain only<li>elements" violation (verify after deploy)Issue 1.3 — Platform mega-menu
<ul>structure (covers original 1.3 + 1.4) ✅ DoneWCAG: 1.3.1 (Level A)
Lighthouse flagged three list-structure violations on every page:
ul.narrow.sm:grid…items-center,ul.sub-menu.grid.grid-rows-subgrid.row-span-4, andul.sub-menu.grid.grid-rows-subgrid.row-span-3. All three were caused by the same structural issue in the Platform mega-menu: the two<ul class="sub-menu">blocks were direct children of<ul class="narrow">(rather than nested inside their respective title<li>s).Files:
Acceptance criteria:
<ul class="narrow">are<li>elements<ul class="sub-menu">are<li>elementsul.narrow.sm:grid…items-center,ul.sub-menu.…row-span-4, or…row-span-3(verify after deploy)