'use client' import { useFormik } from 'formik' import { useRouter } from 'next/navigation' import React, { useEffect } from 'react' import FormLayout, { FormField, FormLabelAndMessage, Input, Textarea, } from '@components/Objects/StyledElements/Form/Form' import * as Form from '@radix-ui/react-form' import { AlertTriangle, Check, User } from 'lucide-react' import Link from 'next/link' import { signup } from '@services/auth/auth' import { useOrg } from '@components/Contexts/OrgContext' import { signIn } from 'next-auth/react' const validate = (values: any) => { const errors: any = {} if (!values.email) { errors.email = 'Required' } else if (!/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i.test(values.email)) { errors.email = 'Invalid email address' } if (!values.password) { errors.password = 'Required' } else if (values.password.length < 8) { errors.password = 'Password must be at least 8 characters' } if (!values.username) { errors.username = 'Required' } if (!values.username || values.username.length < 4) { errors.username = 'Username must be at least 4 characters' } if (!values.bio) { errors.bio = 'Required' } return errors } function OpenSignUpComponent() { const [isSubmitting, setIsSubmitting] = React.useState(false) const org = useOrg() as any const router = useRouter() const [error, setError] = React.useState('') const [message, setMessage] = React.useState('') const formik = useFormik({ initialValues: { org_slug: org?.slug, org_id: org?.id, email: '', password: '', username: '', bio: '', first_name: '', last_name: '', }, validate, enableReinitialize: true, onSubmit: async (values) => { setError('') setMessage('') setIsSubmitting(true) let res = await signup(values) let message = await res.json() if (res.status == 200) { //router.push(`/login`); setMessage('Your account was successfully created') setIsSubmitting(false) } else if ( res.status == 401 || res.status == 400 || res.status == 404 || res.status == 409 ) { setError(message.detail) setIsSubmitting(false) } else { setError('Something went wrong') setIsSubmitting(false) } }, }) useEffect(() => { }, [org]) return (