Skip to content

[spike] Tabbed SelectPanel on the stable SelectPanel (faked tabs)#7969

Draft
joshfarrant wants to merge 2 commits into
mainfrom
joshfarrant/selectpanel-today-stable
Draft

[spike] Tabbed SelectPanel on the stable SelectPanel (faked tabs)#7969
joshfarrant wants to merge 2 commits into
mainfrom
joshfarrant/selectpanel-today-stable

Conversation

@joshfarrant

@joshfarrant joshfarrant commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

Draft — not for merge. Part of a spike comparing how a tabbed SelectPanel (Branches / Tags, one shared search) gets built across Primer's APIs. Same task, same model (Opus 4.8); the API is the only variable:


Builds the same picker on the stable SelectPanel (@primer/react) — the default most teams reach for — asked only to "just build it". Result: ~168 lines, works and is keyboard-usable, but the tabs are a façade. The stable component has no content slot between header and list and owns its listbox internally (id never exposed), so the tablist is smuggled through the subtitle slot and there is no way to wire aria-controls to the list. A screen reader can't tell the tabs control anything.

See packages/react/src/SelectPanel/examples/RefPickerV1.tsx. This is the "looks fine, isn't correct" end of the comparison — and the risk: a team could ship this without noticing.

A reusable git-ref picker: one button opens a stable SelectPanel with
Branches/Tags tabs and a single shared search input that filters the
active tab's list. Per-tab result counts, single selection, keyboard
accessible. Tabs are injected via the panel's subtitle slot and wired
with the headless useTab/useTabList hooks.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@changeset-bot

changeset-bot Bot commented Jun 10, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: b471bf4

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@github-actions github-actions Bot added the integration-tests: recommended This change needs to be tested for breaking changes. See https://arc.net/l/quote/tdmpakpm label Jun 10, 2026
@github-actions

Copy link
Copy Markdown
Contributor

⚠️ Action required

👋 Hi, this pull request contains changes to the source code that github/github-ui depends on. If you are GitHub staff, test these changes with github/github-ui using the integration workflow. Check the integration testing docs for step-by-step instructions. Or, apply the integration-tests: skipped manually label to skip these checks.

To publish a canary release for integration testing, apply the Canary Release label to this PR.

@primer

primer Bot commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

🤖 Lint issues have been automatically fixed and committed to this PR.

@github-actions github-actions Bot temporarily deployed to storybook-preview-7969 June 10, 2026 14:26 Inactive
@primer

primer Bot commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

🤖 Lint issues have been automatically fixed and committed to this PR.

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

Labels

integration-tests: recommended This change needs to be tested for breaking changes. See https://arc.net/l/quote/tdmpakpm

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant