Skip to content

[Improvement]: A11y — focus ring, aria-label on icon buttons, and tablist pattern for ActivityBar / TabBar / BottomPanel #104

@matiaspalmac

Description

@matiaspalmac

Describe the improvement

Keyboard-first users currently have a broken experience:

  • Many interactive elements use outline-none without a replacement (SettingsView.tsx:139,149,158,215,250,263; AiChatComponent.tsx:873; GitExplorerComponent.tsx:589,612,669,...).
  • Icon-only buttons have no accessible name — only title tooltips (ActivityBar, TitleBar, StatusBar, TabBar close, AiChat send/stop/close, BottomPanel tabs).
  • ActivityBar and TabBar and BottomPanel tabs are rendered with <div onClick> and have no role="tablist"/role="tab", no arrow-key navigation.

Proposed change:

  1. Introduce a global focus-visible style (:focus-visible { outline: 2px solid #4c8bff; outline-offset: 2px }) and apply it to all buttons/inputs/tabs. Tailwind: focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-blue-400.
  2. Add aria-label (translated via t()) to every icon-only button. Convert StatusBar <div cursor-pointer> elements to real <button>.
  3. Implement the ARIA Tabs pattern on ActivityBar, TabBar and BottomPanel: role="tablist" + role="tab" + aria-selected + arrow-key navigation + Home/End.

Would you like to implement this improvement yourself by sending a PR?

Maybe

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions