fix(web): theme Clerk surfaces - #6300
Conversation
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
ApprovabilityVerdict: Approved 99d4a82 Simple CSS theming change that maps color variables to Clerk's appearance API for consistent styling. No behavioral changes beyond visual appearance. Includes comprehensive contrast ratio tests. You can customize Macroscope's approvability policy. Learn more. |
Dismissing prior approval to re-evaluate 1c711f3
1c711f3 to
429f1f4
Compare
Dismissing prior approval to re-evaluate 99d4a82
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 99d4a82. Configure here.
| // foreground roles instead of the deeper fills used for icons and tinting. | ||
| colorDanger: "var(--error-foreground)", | ||
| colorSuccess: "var(--success-foreground)", | ||
| colorWarning: "var(--warning-foreground)", |
There was a problem hiding this comment.
Status fills lose dark contrast
Medium Severity
Mapping colorDanger, colorSuccess, and colorWarning to *-foreground tokens improves inline status text, but Clerk also uses those same values as solid button fills with hardcoded white labels. Dark palettes make those foreground roles light tints, so destructive account actions land near white-on-pale contrast while colorPrimary still gets an explicit inverse pair via colorPrimaryForeground.
Reviewed by Cursor Bugbot for commit 99d4a82. Configure here.


Clerk’s sign-in and account surfaces kept their default palette after selecting a T3 Code theme, which made authentication feel disconnected from the surrounding app.
This passes live semantic color tokens into the shared Clerk provider used by web and desktop. Clerk keeps its existing component structure, spacing, and behavior. Its card and controls now use contrast-safe surface roles, while the shared action color remains readable both as a filled button and as bare link text.
Before
After
Verification
pnpm exec vp test run --passWithNoTests --project unit src/components/clerk/clerkAppearance.test.tspnpm exec vp run --filter @t3tools/web typecheckMade with GPT-5.6-SOL in T3 Code through the Codex harness.
Note
Low Risk
Appearance-only change to Clerk theming; no auth logic, session handling, or credential flow is modified.
Overview
Clerk sign-in and account UI now follows the live T3 Code theme instead of Clerk’s default palette.
Adds a shared
clerkAppearanceconfig that maps Clerk color variables to app CSS tokens (e.g.--update-foreground,--card, status foregrounds). That config is passed to bothClerkProviderandElectronClerkProvider, so theme switches apply to portaled auth surfaces without remounting Clerk.Includes unit tests that lock the variable mapping and assert ≥4.5:1 contrast for key text/surface pairs across all built-in light and dark palettes.
Reviewed by Cursor Bugbot for commit 99d4a82. Bugbot is set up for automated code reviews on this repo. Configure here.
Note
Apply app theme CSS variables to Clerk UI components
appearance={clerkAppearance}to bothClerkProviderandElectronClerkProviderin main.tsx.Macroscope summarized 99d4a82.