const signupSchema = z
.object({
fullname: z.string().min(1, 'Name is required'),
email: z
.string()
.min(1, 'Email is required')
.email('Please enter a valid email'),
password: z
.string()
.min(1, 'Password is required')
.min(8, 'Password must be at least 8 characters'),
confirmPassword: z.string().min(1, 'Please confirm your password'),
})
.refine(data => data.password === data.confirmPassword, {
message: 'Passwords do not match',
path: ['confirmPassword'],
})
export function Signup() {
const [showLinkSentView, setShowLinkSentView] = useState<boolean>(false)
const [signupError, setSignupError] = useState<Error | null>(null)
const {
formData,
errors,
isSubmitting,
showPassword,
changeShowPassword,
handleInputChange,
handleSubmit,
} = useFormHandler(signupSchema, async data => {
setSignupError(null)
try {
await signup({ email: data.email, password: data.password })
setShowLinkSentView(true)
} catch (error: unknown) {
setSignupError(error as Error)
}
})
const signupSchema = z
.object({
fullname: z.string().min(1, 'Name is required'),
email: z
.string()
.min(1, 'Email is required')
.email('Please enter a valid email'),
password: z
.string()
.min(1, 'Password is required')
.min(8, 'Password must be at least 8 characters'),
confirmPassword: z.string().min(1, 'Please confirm your password'),
})
.refine(data => data.password === data.confirmPassword, {
message: 'Passwords do not match',
path: ['confirmPassword'],
})
export function Signup() {
const [showLinkSentView, setShowLinkSentView] = useState<boolean>(false)
const [signupError, setSignupError] = useState<Error | null>(null)
const {
formData,
errors,
isSubmitting,
showPassword,
changeShowPassword,
handleInputChange,
handleSubmit,
} = useFormHandler(signupSchema, async data => {
setSignupError(null)
try {
await signup({ email: data.email, password: data.password })
setShowLinkSentView(true)
} catch (error: unknown) {
setSignupError(error as Error)
}
})