# Ship @suaveplan/react-auth-whitelabel — white-label auth React components
**Package**: `@suaveplan/react-auth-whitelabel`
**Status**: PROPOSED
**Type**: new-package
## Why
Genesis needs a tenant-aware, white-label authentication surface that lets a single
build serve many tenants with their own logo, palette, font, and copy. Upstream
(`/mnt/s/web/suaveplan/packages/react/react-auth-whitelabel`) ships three forms
(`LoginForm`, `RegisterForm`, `PasswordResetForm`), two contexts (`AuthProvider`,
`BrandingProvider`), and six hooks; it powers every tenant-branded sign-in flow
in the upstream stack but was never enterprise-graded. We re-author it on top of
the new `@suaveplan/react-ui` runtime theme mutator so branding writes flow
through the canonical token-layer stack instead of poking
`document.documentElement.style` from package code.
## What changes
- ADDED: `LoginForm` — controlled email/password form with optional OAuth provider list, remember-me, forgot-password, and register-link affordances.
- ADDED: `RegisterForm` — controlled register form with optional name field, terms checkbox, OAuth provider list, password confirmation, configurable min length. Split into `register-form-fields.tsx` + `register-form-terms.tsx` sub-components to honour the 300-LOC budget.
- ADDED: `PasswordResetForm` — dual-mode (`request` | `confirm`) reset form with success state. Split into `password-reset-request.tsx` + `password-reset-confirm.tsx` + `password-reset-success.tsx` sub-components to honour the 300-LOC budget.
- ADDED: `AuthProvider` — context provider that wires `login` / `loginWithProvider` / `register` / `logout` / `requestPasswordReset` / `resetPassword` to a backend reachable at `config.authUrl`. Accepts an injectable `fetch: FetchLike` and an injectable `navigate(url)` seam.
- ADDED: `BrandingProvider` — context provider that fetches per-tenant branding (or accepts static branding) and dispatches CSS custom properties through `useThemeMutator().setExtensionTokens(...)`. Wraps `document.title`, ``, and `