Files
2026-05-27 23:29:53 +01:00

2.9 KiB

OpenSpec Change: enterprise-react-auth-whitelabel

  • Change ID: enterprise-react-auth-whitelabel
  • Package: @suaveplan/react-auth-whitelabel
  • Category: react
  • Target path: react/auth/react-auth-whitelabel
  • Status: PROPOSED
  • Date: 2026-04-24
  • Reference spec: /mnt/s/web/suaveplan/enterprise/react-auth-whitelabel.md

Summary

Deliver @suaveplan/react-auth-whitelabel on genesis from scratch at enterprise quality. White-label authentication React components with tenant branding: LoginForm, RegisterForm, PasswordResetForm, AuthProvider, BrandingProvider, and six hooks. Genesis adds an interception hook for SSO flows (replacing direct window.location.href assignment), improves BrandingContext README documentation, and reaches 100% test coverage with real @suaveplan/react-translate.


Current-state audit (genesis)

Package does not exist on genesis — fresh build.


Available workspace deps on genesis

Package Role
@suaveplan/error (workspace:^) AuthWhitelabelError
@suaveplan/react-translate (workspace:^) i18n
zod (catalog:forms) Form schemas + branding schemas

External: @hookform/resolvers catalog:forms, react-hook-form catalog:forms, clsx catalog:ui, tailwind-merge catalog:ui, tslib catalog:build. React 18 peer.


Preserved public API surface

// Components
LoginForm, RegisterForm, PasswordResetForm
// Context
AuthProvider (+ AuthProviderProps), BrandingProvider
// Hooks
useAuth, useBranding, useIsAuthenticated, useLogo, useTenantBranding, useUser
// Types
AuthConfig, AuthContextValue, AuthUser, BrandingContextValue, BrandingProviderProps,
RegisterData, TenantBranding, LoginFormProps, LoginFormValues,
PasswordResetConfirmValues, PasswordResetFormProps, PasswordResetMode,
PasswordResetRequestValues, RegisterFormProps, RegisterFormValues,
AuthProviderConfig

New additions for genesis

  1. SSO navigation hook — AuthProvider accepts optional onNavigate(url: string): void; loginWithProvider calls this instead of window.location.href directly. Enables full testability.
  2. AuthWhitelabelError — codes: AUTH_WL_CONTEXT_MISSING, AUTH_WL_INVALID_BRANDING.
  3. TenantBranding Zod schema — documents the full shape (colors, fonts, logoUrl) with validation.
  4. Stories — all three forms with default branding, custom branding, loading, error states.
  5. E2E — e2e/login-form.spec.ts, register-form.spec.ts, password-reset-form.spec.ts.

File layout

react/auth/react-auth-whitelabel/
  package.json
  tsconfig.json
  vitest.config.ts
  src/
    index.ts
    components/
      login-form/ register-form/ password-reset-form/
    context/
      auth-context/ branding-context/
    hooks/ (6 hooks)
    types/
      branding.types.ts
  e2e/
    login-form.spec.ts
    register-form.spec.ts
    password-reset-form.spec.ts