Uranus® Design System
Auth

Screens

OidcSignInScreen, OidcCallbackScreen e OidcErrorScreen — composições zero-config dos blocks.

Telas pré-conectadas que compõem AuthLayout + SignInForm + OAuthProviderButton (todos de @uranus-workspace/blocks) com cliques de SSO já wired ao useAuth().login.

OidcSignInScreen

import { OidcSignInScreen } from '@uranus-workspace/auth/screens';

<OidcSignInScreen
  brandPanel={<UranusBrand />}
  providers={['google', 'microsoft']}
  idpHints={{ google: 'google', microsoft: 'azure-ad' }}
  credentials="hidden"
  signUpHref="/sign-up"
/>

Cada provider vira um OAuthProviderButton. O idpHint é passado para signinRedirect como extraQueryParams.kc_idp_hint.

Props principais

PropNotas
providersArray de ids ('google' | 'microsoft' | 'github' | 'apple' | 'generic') ou objetos { id, label?, icon?, idpHint? }.
idpHintsOverride por id (ex.: { google: 'google' }). Cai no id quando ausente.
credentials'hidden' (default, SSO-only) ou 'visible' (mostra email/senha + divisor automático).
onCredentialsSubmitObrigatório quando credentials='visible'. Recebe { email, password, rememberMe } validados via Zod.
brandPanel, variant, brandToneForwardados para AuthLayout.

OidcCallbackScreen

Wrapper de <AuthCallback> dentro de <AuthLayout> com loader + mensagem polite. Aceita as mesmas props de <AuthCallback> (onSuccess, onError, errorFallback).

<OidcCallbackScreen
  message="Conectando…"
  onSuccess={(to) => router.replace(to ?? '/')}
  errorFallback={(err) => <OidcErrorScreen error={err} onRetry={() => router.replace('/login')} />}
/>

OidcErrorScreen

Tela presentacional para falhas. O caller decide o que onRetry faz (() => login() ou router.replace('/login')).

<OidcErrorScreen
  title="Não foi possível continuar"
  error={error}
  onRetry={() => login()}
  secondaryAction={<BlockLink href="/">Voltar para a home</BlockLink>}
/>

Composição manual

Se as screens não cobrem seu caso, importe diretamente de @uranus-workspace/blocks:

<AuthLayout brandPanel={<UranusBrand />}>
  <SignInForm
    credentials="hidden"
    socialProviders={
      <>
        <OAuthProviderButton provider="google" onClick={() => login({ idpHint: 'google' })}>
          Continuar com Google
        </OAuthProviderButton>
      </>
    }
  />
</AuthLayout>