import { Controller, useForm } from 'react-hook-form'; import Button from '@mui/material/Button'; import Checkbox from '@mui/material/Checkbox'; import FormControl from '@mui/material/FormControl'; import FormControlLabel from '@mui/material/FormControlLabel'; import TextField from '@mui/material/TextField'; import Typography from '@mui/material/Typography'; import { Link } from 'react-router-dom'; import _ from '@lodash'; import Paper from '@mui/material/Paper'; import FuseSvgIcon from '@fuse/core/FuseSvgIcon'; import AvatarGroup from '@mui/material/AvatarGroup'; import Avatar from '@mui/material/Avatar'; import Box from '@mui/material/Box'; import { z } from 'zod'; import { zodResolver } from '@hookform/resolvers/zod'; import Tabs from '@mui/material/Tabs'; import Tab from '@mui/material/Tab'; import { useState } from 'react'; import JwtLoginTab from './tabs/JwtSignInTab'; import FirebaseSignInTab from './tabs/FirebaseSignInTab'; /** * Form Validation Schema */ const schema = z.object({ email: z.string().email('You must enter a valid email').nonempty('You must enter an email'), password: z .string() .min(8, 'Password is too short - must be at least 8 chars.') .nonempty('Please enter your password.') }); const tabs = [ { id: 'jwt', title: 'JWT', logo: 'assets/images/logo/jwt.svg', logoClass: 'h-40 p-4 bg-black rounded-12' }, { id: 'firebase', title: 'Firebase', logo: 'assets/images/logo/firebase.svg', logoClass: 'h-40' } ]; type FormType = { email: string; password: string; remember?: boolean; }; const defaultValues = { email: '', password: '', remember: true }; /** * The full screen reversed sign in page. */ function SignInPage() { const [selectedTabId, setSelectedTabId] = useState(tabs[0].id); function handleSelectTab(id: string) { setSelectedTabId(id); } const { control, formState, handleSubmit, reset } = useForm({ mode: 'onChange', defaultValues, resolver: zodResolver(schema) }); const { isValid, dirtyFields, errors } = formState; function onSubmit() { reset(defaultValues); } return (
logo Iniciar Sesión
Aún no tienes cuenta? Regístrate
{tabs.map((item) => ( handleSelectTab(item.id)} key={item.id} icon={ {item.title} } className="min-w-0" label={item.title} /> ))} {selectedTabId === 'jwt' && } {selectedTabId === 'firebase' && }
Or continue with
logo
Welcome to
our community
Fuse helps developers to build organized and well coded dashboards full of beautiful and rich modules. Join us and start building your application today.
More than 17k people joined us, it's your turn
); } export default SignInPage;