Skip to content

Accessibility: dropdown menus lack ARIA state; mobile submenu caret is keyboard-inaccessible; default link colour fails contrast #81

Description

@iamprazol

Summary

Three related accessibility defects found during a live Playwright QA pass (real keyboard Tab presses, .focus() reachability checks, and computed-style contrast measurement against a live page). Same defect class as spacious#103 and spacious-pro#78 on the sibling theme.

1. Desktop dropdown menu items expose no ARIA state

Menu items with a submenu (tested 1 and 2 levels deep) have no aria-expanded/aria-haspopup. The submenu is keyboard-reachable via CSS focus-reveal, so this is an announcement gap, not an operability one — same as Spacious.

2. Mobile submenu reveal caret is completely keyboard-inaccessible

Where: mobile menu (≤ ~1024px per the theme's own breakpoints), .sub-toggle element next to any item with children.

Unlike Spacious (which auto-expands every nested item inline on mobile, no interaction needed), Accelerate's mobile menu shows a separate ▾ caret (<span class="sub-toggle">) that must be tapped to reveal its children. That caret has no role, no tabindex, no aria-expanded, and calling .focus() on it directly does not move document.activeElement.

This is distinct from #22 (or its accelerate-pro sibling), which is about the visual arrow icon being missing at certain widths — this issue is about the actual toggle control itself never being reachable by keyboard, at any width where it's the only way to open a submenu. Combined with the mobile menu toggle itself being unreachable by keyboard (a <h3 class="menu-toggle"> with the same defect — tracked in #70), a keyboard-only visitor cannot open the mobile menu or its submenus at all.

Reproduction: At a mobile/tablet width, add a child item to a menu entry, open the mobile menu, and try to reach the submenu caret via Tab — focus never lands on it.

Fix direction: make .sub-toggle a real <button> (or add role="button" tabindex="0"), with aria-expanded reflecting state and a keydown handler for Enter/Space.

3. Default link colour fails WCAG AA contrast — worse than Spacious

rgb(119,204,109), Accelerate's default accent used for sidebar/widget links, measures 1.97 : 1 contrast against white — below even the 3 : 1 large-text minimum. Same measurement method as the Spacious issues linked above.

Confidence

High — all three measured live against a real page and real keyboard input, not inferred from source.

Activity

  1. iamprazol commented on Sep 18, 2026

    @iamprazol
    ContributorAuthor

    Consolidating issue tracking: this is tracked going forward in Accelerate Pro as themegrill/accelerate-pro#50 (labelled free+pro there since it affects both themes). Closing this copy to avoid duplicate tracking.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions