refactor(ui): migrate workspace buttons to the Button primitive (#71 Wave 1) - #102
Open
NickCrew wants to merge 9 commits into
Open
refactor(ui): migrate workspace buttons to the Button primitive (#71 Wave 1)#102NickCrew wants to merge 9 commits into
NickCrew wants to merge 9 commits into
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
|
This pull request has been ignored for the connected project Preview Branches by Supabase. |
NickCrew
force-pushed
the
71-button-migration-wave-1
branch
from
June 29, 2026 02:02
bb9c95c to
0082f2e
Compare
Bundle Size Report
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Migrates workspace buttons onto the
Button/IconButtonprimitives (#68) — Wave 1 of the UI primitive consolidation (milestone M12) — and resolves a primary-button color inconsistency the migration surfaced.Migrated here: Build, Match, LinkedIn, Recruiter, Debrief, Letters, Admin (~80 inline
<button className="*-btn*">→<Button>/<IconButton>). AccountPage already landed onmainearlier under #71.Why
The M12 audit found 49 forked
.{ws}-btn*classes across ~8 workspaces — convention-only consistency had degraded into copy-and-diverge (a single button restyle meant editing ~49 class defs across 12+ files). This puts callers on one component.Primary-color fix (the headline). The migration revealed
Button.primarywas white (mirroring the literal.btn-primary), but all 9 forked workspaces + the Workspace Shell convention + #31 use accent blue for the primary CTA. Soprimaryis now accent blue, and a newsolidvariant carries the white emphasis treatment (Download PDF). Net visual change is zero — the 9 forks stay blue viaprimary; previously-white Build/Account buttons stay white viasolid. The variants are simply named correctly now.Alternatives rejected
primarywhite, converge forks to white — would turn 9 workspaces' main CTAs white; contradicts the convention and Standardize AI-action button styling and labels site-wide #31.accentvariant, keepprimarywhite — preserves the look but enshrines two competing "primary" styles rather than resolving the inconsistency.Scope notes
.{ws}-btn*classes share grouped base rules with bespoke list-selectors (draft/session/card-button). Match's standalone.match-btn*block was removed here. Avoids delicate grouped-selector surgery; the dead classes are inert until Remove dead forked button CSS + add re-fork guard (lint/CI) #76's sweep..btn-*): segmented tabs (Build content/design, view-switcher), list selectors, and the Public marketing CTAs (off-system per the style guide).Verification
New variants pass WCAG AA on solid fills in both themes (primary 5.81/7.23, solid 17.85/16.51).
Unit tests are blind to color (jsdom doesn't apply CSS). Please eyeball both light and dark themes: workspace primary CTAs (now blue), the white Download PDF (
solid), and the migrated icon/danger buttons. The primary→blue recolor is the change most worth a human glance.Closes #71