import type { Route } from '../+types' import { PatternFormat } from 'react-number-format' import { zodResolver } from '@hookform/resolvers/zod' import { useState } from 'react' import { CheckCircle2Icon } from 'lucide-react' import { useForm } from 'react-hook-form' import { redirect, useFetcher } from 'react-router' import { Button } from '@repo/ui/components/ui/button' import { Checkbox } from '@repo/ui/components/ui/checkbox' import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from '@repo/ui/components/ui/form' import { Input } from '@repo/ui/components/ui/input' import { Label } from '@repo/ui/components/ui/label' import { Alert, AlertDescription, AlertTitle } from '@repo/ui/components/ui/alert' import { Spinner } from '@repo/ui/components/ui/spinner' import { Cpf } from './cpf' import { formSchema, type Schema, RegisterContext, type User } from './data' export function meta({}: Route.MetaArgs) { return [{ title: 'Criar conta · EDUSEG®' }] } export async function action({ request, context }: Route.ActionArgs) { const issuerUrl = new URL('/register', context.cloudflare.env.ISSUER_URL) const body = await request.json() const r = await fetch(issuerUrl.toString(), { method: 'POST', headers: new Headers({ 'Content-Type': 'application/json' }), body: JSON.stringify(body), signal: request.signal }) throw redirect('/authorize', { headers: r.headers }) } export default function Signup({}: Route.ComponentProps) { const fetcher = useFetcher() const [show, setShow] = useState(false) const [user, setUser] = useState(null) const form = useForm({ resolver: zodResolver(formSchema) }) const { control, handleSubmit, formState, setError } = form const onSubmit = async (data: Schema) => { await fetcher.submit(JSON.stringify({ ...user, ...data }), { method: 'post', encType: 'application/json' }) } return ( {user ? (
{user?.never_logged && ( Confirme seus dados Revise suas informações e edite o que precisar antes de continuar. )} ( Nome )} /> ( Email )} /> ( CPF { onChange(value) }} {...props} /> )} /> ( Senha )} /> ( Confirmar senha
setShow((x) => !x)} tabIndex={-1} />
)} /> ) : ( )}
) }