Status: Approved · v2.1 · SPEC-UX-AUTH-001
depends_on: SPEC-DOMAIN-AUTH-001, SPEC-DOMAIN-TERRITORY-001
used_by: IS-MVP-02.1, IS-MVP-02.2, IS-MVP-02.3, IS-MVP-19.4, IS-MVP-19.30
Autenticação, onboarding e login contextual
Fluxos curtos e confiáveis que preservam a intenção do visitante sem transformar onboarding em questionário longo.
Objetivo
Fluxos curtos e confiáveis que preservam a intenção do visitante sem transformar onboarding em questionário longo.
Pontos de entrada
- Entrar pelo Perfil.
- Ação protegida em página pública.
- Convite deep link.
- Sessão expirada durante ação.
Hierarquia da tela
- Escolha entrar/criar conta.
- Formulário mínimo.
- Onboarding em passos curtos: identidade, distrito, preferências.
- Revisão da ação contextual quando aplicável.
- Retorno ao destino original.
Componentes e comportamento
Auth Form
E-mail ou telefone, senha, mostrar/ocultar, recuperação. Erros no campo quando seguro.
Onboarding Progress
Poucos passos; permite voltar sem perder dados. Distrito obrigatório.
Favorite Team
Opcional; explica que Torcer é público e gera Follow.
Suggestions
Times/torcidas relacionadas pré-marcados apenas quando claramente relacionados; território/campeonato desmarcados por padrão.
Intent Review
Antes de executar apoio identificado, torcer, aceitar convite ou denunciar, exibe resumo quando houver consequência relevante.
Ações do usuário
| Ação | Pré-condição | Resultado | Falha/alternativa |
|---|---|---|---|
| Cadastrar | Dados válidos | Conta pending_onboarding | Duplicidade/validação |
| Entrar | Credencial válida | Sessão/restauração de intent | Inválida/suspensa |
| Concluir onboarding | Distrito válido | Conta active | Distrito inativo |
| Executar intent | Intent válido | Ação e retorno | Expirado/conflito |
| Recuperar senha | Identificador | Resposta neutra | Sempre neutra |
Estados obrigatórios
| Estado | Representação | Ação disponível |
|---|---|---|
| Submitting | Botão bloqueado e feedback | Cancelar quando seguro |
| Field error | Mensagem próxima ao campo | Corrigir |
| Account suspended | Mensagem e suporte | Abrir suporte |
| Intent expired | Ação não executada | Voltar ao contexto |
| Offline | Dados preservados localmente quando seguro | Tentar novamente |
Autenticação e permissões
- Cadastro/login são públicos.
- Onboarding autenticado.
- Intent revalida alvo e permission no backend.
Responsividade
- Mobile usa teclado/tipos corretos e evita conteúdo oculto.
- Desktop centraliza formulário com contexto visual discreto.
- Deep link retorna corretamente em ambos.
Baseline visual T1
- Login, cadastro, recuperação, reset e onboarding usam a mesma composição editorial T1 em web e mobile, sem transformar o formulário-base em card quando o protótipo não apresenta uma superfície elevada.
- O lockup horizontal oficial aparece antes do título com largura visual de 150 px no desktop e 130 px no mobile, preservando proporção, contraste, texto alternativo/nome acessível e a variante correta para cada modo.
- O runtime usa somente assets com proveniência em
assets/new_brand/**ouassets/redesign-v3/**; o base64 embutido no harness do protótipo nunca é copiado. - Campos de nome, identificador e senha usam ícones outline da mesma família licenciada do App Shell; os ícones são decorativos, não substituem labels persistentes e não reduzem a área útil ou o alvo de 44 px.
- O fundo é o token
background, sem gradiente radial decorativo. Bordas, superfícies auxiliares e caixas de estado só existem quando comunicam estado real, AuthIntent ou agrupamento funcional previsto. - A largura de leitura segue o protótipo: 420 px no desktop e largura disponível no mobile, com padding de 40 px/24 px e sem overflow a partir de 320 px.
- Google, divisor
oue qualquer espaço reservado permanecem ausentes enquanto EP-MVP-19.5 estiver gated. - Convergência visual exige screenshots reais lado a lado para as cinco superfícies, nos quatro modos, em web e mobile; teste por presença de token/string não substitui essa evidência.
Acessibilidade
- Labels persistentes, autocomplete seguro, mensagens associadas a campos.
- Não depender de placeholder.
- Foco no primeiro erro.
Eventos de produto e observabilidade
- auth_started
- register_submitted
- login_succeeded
- onboarding_step_completed
- auth_intent_executed
- auth_intent_failed
Dados e endpoints
- POST auth/register/login/refresh/logout.
- POST onboarding/complete.
- POST auth/intents e execute.
- POST forgot/reset password.
Critérios de aceite
- Distrito obrigatório.
- Ação original preservada.
- Onboarding opcional não bloqueia por preferências.
- Erros não vazam existência de conta.
Pós-MVP
- SSO, MFA e magic link.
Decisões registradas
- Todo cadastrado nasce supporter.
- Favorite team opcional.
- AuthIntent é parte do MVP.
Machine summary
spec: SPEC-UX-AUTH-001
screen_or_flow: Autenticação, onboarding e login contextual
required_states:
- loading
- success
- empty
- error
must_use:
- contracts
- service
- hook
- design_tokens
must_not:
- direct_fetch
- direct_fixture_import
- hardcoded_brand_colors