import * as React from 'react'; import Box from '@mui/material/Box'; import Button from '@mui/material/Button'; import Checkbox from '@mui/material/Checkbox'; import CssBaseline from '@mui/material/CssBaseline'; import Divider from '@mui/material/Divider'; import FormControlLabel from '@mui/material/FormControlLabel'; import FormLabel from '@mui/material/FormLabel'; import FormControl from '@mui/material/FormControl'; import Link from '@mui/material/Link'; import TextField from '@mui/material/TextField'; import Typography from '@mui/material/Typography'; import Stack from '@mui/material/Stack'; import MuiCard from '@mui/material/Card'; import { styled } from '@mui/material/styles'; import AppTheme from '../shared-theme/AppTheme'; import ColorModeSelect from '../shared-theme/ColorModeSelect'; import { GoogleIcon, FacebookIcon, SitemarkIcon } from './components/CustomIcons'; const Card = styled(MuiCard)(({ theme }) => ({ display: 'flex', flexDirection: 'column', alignSelf: 'center', width: '100%', padding: theme.spacing(4), gap: theme.spacing(2), margin: 'auto', boxShadow: 'hsla(220, 30%, 5%, 0.05) 0px 5px 15px 0px, hsla(220, 25%, 10%, 0.05) 0px 15px 35px -5px', [theme.breakpoints.up('sm')]: { width: '450px', }, ...theme.applyStyles('dark', { boxShadow: 'hsla(220, 30%, 5%, 0.5) 0px 5px 15px 0px, hsla(220, 25%, 10%, 0.08) 0px 15px 35px -5px', }), })); const SignUpContainer = styled(Stack)(({ theme }) => ({ height: 'calc((1 - var(--template-frame-height, 0)) * 100dvh)', minHeight: '100%', padding: theme.spacing(2), [theme.breakpoints.up('sm')]: { padding: theme.spacing(4), }, '&::before': { content: '""', display: 'block', position: 'absolute', zIndex: -1, inset: 0, backgroundImage: 'radial-gradient(ellipse at 50% 50%, hsl(210, 100%, 97%), hsl(0, 0%, 100%))', backgroundRepeat: 'no-repeat', ...theme.applyStyles('dark', { backgroundImage: 'radial-gradient(at 50% 50%, hsla(210, 100%, 16%, 0.5), hsl(220, 30%, 5%))', }), }, })); export default function SignUp(props: { disableCustomTheme?: boolean }) { const [emailError, setEmailError] = React.useState(false); const [emailErrorMessage, setEmailErrorMessage] = React.useState(''); const [passwordError, setPasswordError] = React.useState(false); const [passwordErrorMessage, setPasswordErrorMessage] = React.useState(''); const [nameError, setNameError] = React.useState(false); const [nameErrorMessage, setNameErrorMessage] = React.useState(''); const validateInputs = () => { const email = document.getElementById('email') as HTMLInputElement; const password = document.getElementById('password') as HTMLInputElement; const name = document.getElementById('name') as HTMLInputElement; let isValid = true; if (!email.value || !/\S+@\S+\.\S+/.test(email.value)) { setEmailError(true); setEmailErrorMessage('Please enter a valid email address.'); isValid = false; } else { setEmailError(false); setEmailErrorMessage(''); } if (!password.value || password.value.length < 6) { setPasswordError(true); setPasswordErrorMessage('Password must be at least 6 characters long.'); isValid = false; } else { setPasswordError(false); setPasswordErrorMessage(''); } if (!name.value || name.value.length < 1) { setNameError(true); setNameErrorMessage('Name is required.'); isValid = false; } else { setNameError(false); setNameErrorMessage(''); } return isValid; }; const handleSubmit = (event: React.FormEvent) => { if (nameError || emailError || passwordError) { event.preventDefault(); return; } const data = new FormData(event.currentTarget); console.log({ name: data.get('name'), lastName: data.get('lastName'), email: data.get('email'), password: data.get('password'), }); }; return ( Sign up Full name Email Password } label="I want to receive updates via email." /> or Already have an account?{' '} Sign in ); }