'use client'; import * as Yup from 'yup'; import { useForm } from 'react-hook-form'; import { useState } from 'react'; import { yupResolver } from '@hookform/resolvers/yup'; // @mui import LoadingButton from '@mui/lab/LoadingButton'; import Alert from '@mui/material/Alert'; import Stack from '@mui/material/Stack'; import IconButton from '@mui/material/IconButton'; import Typography from '@mui/material/Typography'; import InputAdornment from '@mui/material/InputAdornment'; // routes import { useSearchParams, useRouter } from 'src/routes/hooks'; // config import { PATH_AFTER_LOGIN } from 'src/config-global'; // hooks import { useBoolean } from 'src/hooks/use-boolean'; // auth import { useAuthContext } from 'src/auth/hooks'; // components import Iconify from 'src/components/iconify'; import FormProvider, { RHFTextField } from 'src/components/hook-form'; // ---------------------------------------------------------------------- export default function FirebaseLoginView() { const { login } = useAuthContext(); const router = useRouter(); const [errorMsg, setErrorMsg] = useState(''); const searchParams = useSearchParams(); const returnTo = searchParams.get('returnTo'); const password = useBoolean(); const LoginSchema = Yup.object().shape({ email: Yup.string().required('Email is required').email('Email must be a valid email address'), password: Yup.string().required('Password is required'), }); const defaultValues = { email: '', password: '', }; const methods = useForm({ resolver: yupResolver(LoginSchema), defaultValues, }); const { reset, handleSubmit, formState: { isSubmitting }, } = methods; const onSubmit = handleSubmit(async (data) => { try { await login?.(data.email, data.password); router.push(returnTo || PATH_AFTER_LOGIN); } catch (error) { console.error(error); reset(); setErrorMsg(typeof error === 'string' ? error : error.message); } }); const renderHead = ( Sign in to AgencyOS ); const renderForm = ( {!!errorMsg && {errorMsg}} ), }} /> Login ); return ( {renderHead} {renderForm} ); }