Files
social-app/docs/plans/2026-03-13-auth-pages-redesign-design.md
T

319 lines
10 KiB
Markdown
Raw Normal View History

# Auth Pages And Feedback System Redesign
## Goal
Redesign the mobile authentication experience so the login, register, and reset-password flows feel like a polished assistant product instead of a flat form flow, while preserving existing business logic, routing, validation, and feedback behavior semantics.
## Scope
- Rebuild the UI for `login`, `register`, and `reset-password`
- Preserve existing auth logic, cubits, navigation, and API calls
- Redesign the fixed-length code input experience for verification code and invite code
- Redesign the feedback system into two coordinated layers:
- global floating toast messages
- in-component contextual messages
- Keep all work inside the existing Flutter design system and shared widget architecture
## Constraints
- Must follow `apps/AGENTS.md`
- Must follow `apps/rules/visual_design_language.md`
- Must use tokens from `apps/lib/core/theme/design_tokens.dart`
- Must not introduce a parallel feedback system outside the approved Toast and inline message architecture
- Must not change auth protocols, routing semantics, or submission logic
## Current Problems
### Visual Problems
- The screens read as flat white pages with blue buttons, which matches a prohibited anti-pattern in the visual design language.
- The main CTA button uses color as its only emphasis mechanism, so it feels plastic and low-fidelity.
- The three auth screens share only superficial consistency, not a strong surface system.
- The reset-password screen presents all steps at once, causing poor rhythm and weak hierarchy.
- The verification code layout feels cramped and improvised because the code cells and send button compete on the same row.
### Feedback Problems
- Global toast messages are visually generic and lack product identity.
- Component-level messaging is under-specified and inconsistently expressed.
- Result messages and contextual validation messages are not clearly separated in responsibility.
## Design Direction
The approved direction is a floating-card auth system with a soft blue atmospheric background, a clear brand anchor, and a calm layered surface hierarchy.
The target feeling is:
- premium
- calm
- trustworthy
- assistant-oriented
- softly tactile
- mobile-native
The redesign should feel like a cohesive product surface, not a stack of form containers.
## Surface Model
Each auth screen uses the same four-layer structure.
### 1. Background Surface
The screen background is not a plain blank fill. It should feel like a soft spatial field with subtle blue-gray atmosphere. This establishes the assistant mood before the user interacts with any form element.
### 2. Brand Anchor Surface
The top area contains the logo and brand title. On login and register, this remains the visual identity anchor. On reset password, the title becomes more task-driven, but the page still inherits the same spatial language and product mood.
### 3. Primary Floating Card
The form lives in a single, elevated primary card with softened corners, restrained shadows, and calm separation from the background. This card should feel intentional and product-grade rather than like a white panel.
### 4. Secondary Assistive Layer
Links, helper text, step hints, resend actions, and supplemental explanations belong to a lower-emphasis support layer. These elements should feel connected to the primary card without visually competing with it.
## Shared Auth Composition
All three auth screens should use a unified composition pattern.
- Top brand or task heading area
- Main floating card for the active task
- Internal grouped sections inside the card
- Lightweight transition area for secondary actions
This creates cross-screen consistency while allowing each flow to have different emphasis.
## Screen Designs
### Login Screen
The login screen should be the most restrained and focused of the three.
Structure:
- logo and brand title at top
- one compact floating form card
- email field
- password field
- primary login CTA
- low-emphasis forgot-password action inside the card
- lightweight bottom switch action to register
Intent:
- reduce visual noise
- make the login action feel confident and central
- keep account switching and recovery available without stealing focus
### Register Screen
The register screen should feel richer than login, but still composed.
Structure:
- same brand anchor as login
- taller primary card
- grouped section for core account information
- grouped section for invite code as an optional enhancement
- subtle progress indicator treated as part of the card rhythm, not as a crude progress bar
- primary CTA for moving to verification
- lightweight switch action to login
Invite code treatment:
- remains a fixed-length segmented input
- visually grouped as an optional section, not mixed into the main required inputs
- supported by a nearby low-emphasis explanation block
### Reset Password Screen
The reset-password screen should shift from a flat all-fields form into a guided two-stage flow.
Structure:
- task heading at top
- primary floating card
- stage one: email input plus send-code action
- after successful code send, reveal stage two inside the same card
- stage two: segmented verification code input, resend action, new password, confirm password, submit CTA
- lightweight return-to-login switch action below
Intent:
- create procedural clarity
- avoid forcing all fields onto the screen at once
- make the verification code area feel deliberate and product-grade
## Fixed-Length Segmented Input Design
The user explicitly prefers fixed-length segmented input for both verification code and invite code. This input pattern will be preserved.
However, it will be redesigned to feel like a premium grouped input rather than a row of raw boxes.
Design principles:
- the individual cells must read as one continuous input group
- current focus should be visible at both cell level and group level
- spacing should be balanced and calm
- filled state should feel confident and readable
- disabled and error states should be obvious without becoming harsh
Required states:
- default
- focused group
- active cell
- filled
- error
- disabled
Usage rules:
- verification code remains segmented
- invite code remains segmented
- resend action is no longer visually fused to the segmented input row
## Button Design
The CTA button must stop reading as a flat blue block.
New button intent:
- deeper and calmer brand blue
- stronger tactile weight
- premium capsule shape
- light depth through tonal layering and restrained shadow
- pressed and disabled states that clearly change material weight
Button hierarchy:
- primary button: for submission and key forward progress
- secondary button: for bounded alternative actions
- text-link action: for lightweight transitions and low-risk actions
Color strategy:
- blue remains the anchor, but is used with restraint
- the strongest emphasis goes to the main CTA only
- supporting actions should not look equally loud
## Input Field Design
Text fields should move from generic bordered rectangles to soft embedded surfaces.
Desired qualities:
- calmer default appearance
- stronger focus clarity
- reduced raw border noise
- consistent radius and spacing rhythm
- visually integrated label, input, and helper message states
## Feedback System Redesign
The feedback system is split into two coordinated layers.
### 1. Global Floating Toast
Global toast is a lightweight floating feedback card presented in the safe area near the top of the screen.
Use global toast for:
- cross-component success feedback
- async result notifications
- cross-step flow results
- errors that are not tied to a single visible field
Do not use global toast for:
- simple inline validation
- field-level format guidance
- contextual explanations that belong near the active input area
Visual direction:
- floating product card, not a system notification strip
- soft surface and rounded shape
- restrained state tinting
- icon plus title/message hierarchy if needed
- gentle slide/fade motion
### 2. In-Component Contextual Message
Contextual messages live inside the component or form group they explain.
Use contextual messages for:
- validation near fields
- warnings tied to current form state
- helper guidance for invite code or verification flow
- inline explanation of what the user should fix next
Visual direction:
- integrated into the card hierarchy
- lighter than a toast
- close to the related field or group
- consistent state styling across info, warning, and error
### Responsibility Boundary
- global toast = result-oriented, temporary, cross-context feedback
- inline message = contextual, explanatory, local feedback
This separation prevents toast overuse and makes forms feel calmer.
## Motion Language
Motion should be soft and minimal.
Use motion for:
- toast entrance and dismissal
- reset-password stage reveal
- button press feedback
- segmented input focus continuity
Avoid:
- springy or playful motion
- overlapping dramatic transitions
- flashy state animations
## Shared Component Impact
The redesign likely requires updates or additions to shared widgets rather than one-off page styling.
Expected shared component work:
- refine `AppButton`
- refine or replace current toast visuals
- refine `AppBanner` or introduce a shared inline message presentation built on the same semantics
- redesign `FixedLengthCodeInput`
- add a reusable auth surface wrapper if needed
## Verification Strategy
Because this work is UI-heavy, verification should focus on correctness, consistency, and safe reuse.
Primary verification targets:
- `flutter analyze`
- impacted auth tests
- targeted widget tests only where reusable interactive widgets become materially more complex
- manual visual review of the three auth screens and feedback states
## Success Criteria
The redesign is successful when all of the following are true:
- the three auth screens feel like one coherent product system
- the UI no longer resembles a plain white form page with blue buttons
- the main CTA has better perceived material quality
- reset password has a clearer and more attractive two-stage flow
- segmented code input remains intact but feels premium
- global toasts and inline messages have clear responsibility boundaries
- the feedback system feels native to the product rather than bolted on
- the result plausibly matches the visual language standard for a polished assistant app