Skip to content

[BUG] Tools page filter controls are not keyboard accessible and use invalid interactive markup #5223

@Oluwatunmise-olat

Description

@Oluwatunmise-olat

Describe the bug.

On /tools, the Filter and Jump to Category controls are implemented as clickable div elements instead of semantic button elements. This causes poor keyboard accessibility (focus/activation
behavior is inconsistent for keyboard-only users).

Also, the filter popup wrapper is rendered as a <button> containing interactive children (<Filters />), which is invalid interactive markup and can lead to unpredictable browser/screen-reader behavior.

Expected behavior

  • Filter and Jump to Category should be semantic controls (<button type="button">) and fully keyboard operable.
  • The filter popup wrapper should be a non-interactive container (<div>), not a button wrapping other interactive elements.
  • Keyboard users and assistive tech users should get consistent behavior and announcements.

Screenshots

I will attach a Loom video showing:

  1. Keyboard-only interaction issues on /tools

Loom Video Showing Bug and Fix

How to Reproduce

  1. Run the website locally or navigate to the website (https://www.asyncapi.com/tools):
    • npm run dev
  2. Open:
    • http://localhost:3000/tools or https://www.asyncapi.com/tools
  3. Use keyboard only (Tab, Shift+Tab, Enter, Space).
  4. Navigate to Filter and Jump to Category controls.
  5. Try opening/closing controls with keyboard.
  6. Inspect DOM in DevTools:
    • Trigger controls are clickable divs.
    • Filter popup is wrapped in a <button> containing interactive content.

🖥️ Device Information [optional]

  • Operating System (OS): macOS
  • Browser: Chrome

👀 Have you checked for similar open issues?

  • I checked and didn't find similar issue

🏢 Have you read the Contributing Guidelines?

Are you willing to work on this issue ?

Yes I am willing to submit a PR!

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Status

    In progress

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions