[spike] Tabbed SelectPanel on the experimental composable SelectPanel#7967
[spike] Tabbed SelectPanel on the experimental composable SelectPanel#7967joshfarrant wants to merge 3 commits into
Conversation
Build a reusable git-style reference picker on top of the experimental composable SelectPanel (v2) and the experimental Tabs primitive. One shared search box filters the active tab's list, each tab shows a live result count, and single selection closes the panel and updates the anchor button. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
|
|
🤖 Lint issues have been automatically fixed and committed to this PR. |
|
🤖 Lint and formatting issues have been automatically fixed and committed to this PR. |
|
🤖 Lint issues have been automatically fixed and committed to this PR. |
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:
SelectPanel, pragmatic (tabs work visually but aren't ARIA-associated)SelectPanel, ARIA correctness forced (the component gets abandoned)SelectPanel(composes correctly, ~35 lines of glue)SelectPanel(composes correctly, zero glue)Builds the same picker on the experimental composable
SelectPanel(@primer/react/experimental). The list lives inside the tab panel, so the tab→tabpanel→listbox relationship is real. ~165 lines, of which ~35 are glue that exists only because the layering is incomplete: hand-rolledTab/TabList/TabPanelwrappers, a ref type cast, manual per-tab counts, and the API being filed under "experimental/deprecated".See
packages/react/src/SelectPanel/examples/RefPicker.tsx. This is the "correct, but with glue" middle of the comparison.