The connected-accounts surface reached from the security hub's "Connected
accounts" card (/account/security/connections). It's where a person connects
a sign-in provider (Google), sees their linked providers + password, and disconnects one —
always keeping at least one way to sign in. These frames freeze the connect/disconnect model
before UI is built. Rendered in the fuse-seam design system (tokens only). No identity-vendor name
ever appears — the browser only ever sees app.fuzefront.com and, during a link,
accounts.google.com.
Password method + each linked provider (Disconnect), plus a "Connect Google" affordance for providers not yet linked. Reads GET /identity/connections.
Redirect intent (POST /social/google/link → redirectUrl → accounts.google.com) and the successful return on ?linked=google.
Loading, load error + retry, social-only (hasPassword:false → set a password first), last-method 409 guard, connect failed/cancelled, already-linked.
/account/security/connections · approved: false (awaiting review)SignInMethodsList, ConnectedAccountRow, SetPasswordBanner and
LoadErrorRetry already exist in @fuzefront/account-security-ui — reused,
not reinvented. New here: ConnectedAccountsPanel (route orchestrator) and
ConnectProviderButton (the connect affordance).
@fuzefront/design-system (fuse-seam) tokens.
StatusCallout (soft-tinted inline banner with icon + actions) is the same primitive
named by the account-security hub frames for frontend-engineer to add as a foundation
PR before implementation. Drawn here from tokens only — never one-offed into feature code.