Skip to content

feat(auth): redesign sign-in popups + modal in v3 design language#222

Merged
ecto merged 1 commit into
mainfrom
claude/angry-pike-cf0d97
May 13, 2026
Merged

feat(auth): redesign sign-in popups + modal in v3 design language#222
ecto merged 1 commit into
mainfrom
claude/angry-pike-cf0d97

Conversation

@ecto
Copy link
Copy Markdown
Owner

@ecto ecto commented May 13, 2026

Summary

  • Fixes Google sign-in regression on web: the OAuth callback popup at /auth/popup.html was hitting CSP because of an inline <script> block (script-src is 'self', no 'unsafe-inline'). Users got stuck on a blank "Completing sign-in…" screen. Extracted to a sibling popup.js, matching the existing desktop.html / desktop.js pattern.
  • Redesigns the auth bridge pages (popup.html + desktop.html) and the in-app AuthModal to match the v3 design language from recent commits (02f9d8d1 "comb out Borland-era UI patterns", ed32703b "adopt v3 design system tokens").
  • Inspired by Splash.tsx: large vcad. wordmark, brand-pink dot, indeterminate shimmer progress bar.

Auth bridge pages (popup.html + desktop.html)

  • Drop Berkeley Mono (v3 reserves it for code surfaces). Body now Inter / SF Pro.
  • Adopt v3 tokens: stage #0E0E10, chrome #1A1A1D, brand #F92672, 6px radii, opaque surfaces.
  • Splash-style hero: 56px wordmark with brand-pink dot.
  • Indeterminate shimmer progress bar while the postMessage / deep-link bridge runs.
  • Brand-pink primary CTA on the fallback states ("Continue to vcad" / "Open vcad").
  • popup.js now hides the progress bar once the success state is shown; desktop.js does the same on fallback.

AuthModal.tsx

  • Wordmark text-3xltext-5xl, mirrors Splash.
  • Drop the idle pulse animation on the brand dot, the top-edge brand gradient, and the backdrop-blur glass effect — opaque bg-surface per v3 chrome.
  • Square corners → rounded-xl on the dialog, rounded-md on buttons / input / error banner.
  • Buttons h-11h-10, tighter typography.
  • OR divider: drop Borland-era tracking-[0.18em] + 9.5px caps for plain lowercase 11px.
  • Footer: title-cased "Terms · Privacy · Security" with text-text-tert dot separators.
  • Close button: 12px X in 4px padding → 16px X in 28×28 rounded-md hit target.
  • Sent state: rounded envelope badge, larger hierarchy.
  • Colored brand logos: inline SVGs replace Phosphor monochrome icons. Google gets the official 4-color G; GitHub Octocat uses currentColor so it tracks the theme (white on dark, black on light).
  • Email autofocus: onOpenAutoFocus on Dialog.Content overrides Radix's default (which focused the close button) and focuses the email field instead.

Screenshots

State Dark Light
Modal Big wordmark, colored Google G, white GitHub Octocat, brand CTA when email valid Modal flips to white surface with black GitHub Octocat
Popup loading Wordmark + shimmer Wordmark + shimmer
Popup complete Wordmark + "Continue to vcad" brand CTA Same

Test plan

  • Sign in with Google in a web browser — verify the popup no longer blanks out on CSP, posts back to the opener, and closes itself.
  • Sign in with GitHub — same.
  • Email magic link → check "Check your email" state styling.
  • Open the modal — email field is focused on mount.
  • Toggle prefers-color-scheme — GitHub Octocat flips white ↔ black, Google G stays 4-color.
  • Desktop magic-link → confirm the fallback page after 1.5s shows the brand-pink "Open vcad" + secondary "Continue in browser".

🤖 Generated with Claude Code

The OAuth popup at /auth/popup.html broke at runtime because its inline
script was refused by the site CSP (script-src 'self'), leaving users
stuck on a blank "Completing sign-in…" screen. Extract the IIFE to a
sibling popup.js, matching the desktop.html/desktop.js pattern that
already exists.

While both auth bridge pages were open, rebuild them around the v3
tokens (#0E0E10 stage, #1A1A1D chrome, Inter/SF Pro, 6px radii, brand
pink #F92672) and the Splash visual vocabulary: large vcad. wordmark
with brand-pink dot, indeterminate shimmer progress bar, primary CTA
in brand pink. Drops Berkeley Mono since v3 reserves it for code.

Same pass on AuthModal.tsx:
- Wordmark text-3xl -> text-5xl to mirror Splash
- Remove idle dot pulse, top edge gradient, backdrop blur
- Opaque bg-surface, rounded-xl dialog, rounded-md controls
- Lower buttons to h-10, tighten typography hierarchy
- Replace Phosphor monochrome icons with the official 4-color Google G
  and a GitHub Octocat that uses currentColor so it tracks the theme
- Autofocus the email field on open via onOpenAutoFocus (Radix's
  default focused the close button)

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
@vercel
Copy link
Copy Markdown

vercel Bot commented May 13, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

4 Skipped Deployments
Project Deployment Actions Updated (UTC)
mecheval Ignored Ignored May 13, 2026 5:55pm
vcad Ignored Ignored May 13, 2026 5:55pm
vcad-docs Ignored Ignored May 13, 2026 5:55pm
vcad-mcp Ignored Ignored May 13, 2026 5:55pm

Request Review

@ecto ecto merged commit f6a9df5 into main May 13, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant