Skip to content
This repository was archived by the owner on May 23, 2026. It is now read-only.
This repository was archived by the owner on May 23, 2026. It is now read-only.

FOLLOW-UP: Optionally upgrade Tabs pattern to full ARIA tablist semantics (from PR #74) #76

Description

@adnaan

Context

This follow-up task was identified during the review of PR #74.

Source PR: #74
PR Title: feat: patterns example Session 4 (patterns #17-21) — dialogs, tabs & navigation
Suggested by: @claude[bot] (PR comments, rounds 5 and 11)

Task Description

The Tabs (HATEOAS) pattern uses <nav> + aria-current="page" (Pico CSS convention) for a server-driven navigation set. This is correct for "current page in navigation" semantics but does not announce as a tab widget to screen readers.

Some users may want to demonstrate the formal ARIA tab widget pattern instead, with role="tablist", role="tab", role="tabpanel", and aria-selected.

Suggested Approach

Either (a) add a separate "Tabs (ARIA)" pattern alongside the existing HATEOAS one to show both options, or (b) upgrade the existing pattern with the ARIA roles while keeping aria-current for breadcrumb consistency.

<nav aria-label="Sections">
    <ul role="tablist">
        <li role="presentation">
            <a href="?tab=overview" role="tab"
               {{if eq .ActiveTab "overview"}}aria-current="page" aria-selected="true"{{else}}aria-selected="false"{{end}}>
              Overview
            </a>
        </li>
        ...
    </ul>
</nav>
<section role="tabpanel" aria-label="{{.ActiveTab}}">

Why Not in PR #74

The PR's pattern was scoped to demonstrate server-driven tab content swapping via the __navigate__ action, not the ARIA tab widget pattern. The Pico-native aria-current shape matches the rest of the patterns codebase. Upgrading is a separate accessibility improvement worth its own PR.


Auto-created by prmonitor from PR review comments.

Activity

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

    follow-upFollow-up task from PR reviewfrom-reviewIssue originated from PR review

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions