{{={= =}=}} import { useState, useMemo } from 'react' import { AuthContext, type ErrorMessage } from '@wasp.sh/lib-auth/browser' import styles from './Auth.module.css' import './internal/auth-styles.css' import { tokenObjToCSSVars } from "./internal/util" import { type State, type CustomizationOptions, type AdditionalSignupFields, } from './types' import { LoginSignupForm } from './internal/common/LoginSignupForm' import { MessageError, MessageSuccess } from './internal/Message' {=# isEmailAuthEnabled =} import { ForgotPasswordForm } from './internal/email/ForgotPasswordForm' import { ResetPasswordForm } from './internal/email/ResetPasswordForm' import { VerifyEmailForm } from './internal/email/VerifyEmailForm' {=/ isEmailAuthEnabled =} const logoStyle = { height: '3rem' } function Auth ({ state, appearance, logo, socialLayout = 'horizontal', additionalSignupFields }: { state: State; } & CustomizationOptions & { additionalSignupFields?: AdditionalSignupFields; }) { const [errorMessage, setErrorMessage] = useState(null); const [successMessage, setSuccessMessage] = useState(null); const [isLoading, setIsLoading] = useState(false); const customStyle = useMemo(() => ({ ...tokenObjToCSSVars('color', appearance?.colors ?? {}), ...tokenObjToCSSVars('font-size', appearance?.fontSizes ?? {}), }), [appearance]) const titles: Record = { login: 'Log in to your account', signup: 'Create a new account', {=# isEmailAuthEnabled =} "forgot-password": "Forgot your password?", "reset-password": "Reset your password", "verify-email": "Email verification", {=/ isEmailAuthEnabled =} } const title = titles[state] const socialButtonsDirection = socialLayout === 'vertical' ? 'vertical' : 'horizontal' return (
{logo && (Your Company)}

{title}

{errorMessage && ( {errorMessage.title}{errorMessage.description && ': '}{errorMessage.description} )} {successMessage && {successMessage}} {(state === 'login' || state === 'signup') && ( )} {=# isEmailAuthEnabled =} {state === 'forgot-password' && ()} {state === 'reset-password' && ()} {state === 'verify-email' && ()} {=/ isEmailAuthEnabled =}
) } // PRIVATE API export default Auth;