'use client' import Alert from '@/components/ui/Alert' import Button from '@/components/ui/Button' import Typography from '@/components/ui/Typography' import FormGroup from '@/components/ui/form/FormGroup' import Input from '@/components/ui/form/Input' import TextArea from '@/components/ui/form/TextArea' import { css } from '@/styled-system/css' import { type Alert as AlertType } from '@/types/feedback' import { type TeamApplyData } from '@/types/teamApply' import { faChevronRight } from '@fortawesome/free-solid-svg-icons' import { FontAwesomeIcon, type FontAwesomeIconProps } from '@fortawesome/react-fontawesome' import { AppwriteException } from 'appwrite' import { useFormik } from 'formik' import { AnimatePresence, motion } from 'framer-motion' import { useSearchParams } from 'next/navigation' import { useEffect, useState, type FC } from 'react' const ApplyForm: FC = () => { const searchParams = useSearchParams() const [alert, setAlert] = useState(undefined) const formik = useFormik({ initialValues: { name: '', email: '', discordName: '', message: '', role: 'administrator' }, onSubmit: async (_values) => { try { // await createTeamApply(values) } catch (error) { if (error instanceof AppwriteException) { setAlert({ title: 'Error al enviar el formulario', message: error.message, severity: 'error' }) return } console.error('Error al enviar el formulario', error) setAlert({ severity: 'error', title: 'Error al enviar el formulario', message: 'Hubo un error al enviar el formulario, por favor, intenta nuevamente.' }) } } }) useEffect(() => { if (searchParams.has('role')) { formik.setFieldValue('role', searchParams.get('role')) .catch((error) => { console.error(error) }) } }, []) return (
{alert !== undefined && ( {alert.title !== undefined && ( {alert.title} )} {alert.message} )} {formik.submitCount > 0 && (
{formik.touched.name !== undefined && formik.errors.name !== undefined ? ( {formik.errors.name} ) : ( Tu nombre. )} {formik.touched.email !== undefined && formik.errors.email !== undefined ? ( {formik.errors.email} ) : ( Tu email, para poder contactarte. ) } {formik.touched.discordName !== undefined && formik.errors.discordName !== undefined ? ( {formik.errors.discordName} ) : ( Tu nombre de Discord, para poder contactarte. ) }