'use client'; import * as React from 'react'; import Link from 'next/link'; import { useParams } from 'next/navigation'; import { useForm } from 'react-hook-form'; import { zodResolver } from '@hookform/resolvers/zod'; import { apiClient, ApiError } from '@/lib/api/client'; import { resetPasswordSchema, type ResetPasswordFormValues } from '@/lib/validators/auth'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { FormField } from '@/components/ui/form-field'; export default function RedefinirSenhaPage() { const { token } = useParams<{ token: string }>(); const [done, setDone] = React.useState(false); const [tokenInvalido, setTokenInvalido] = React.useState(false); const [error, setError] = React.useState(null); const { register, handleSubmit, formState: { errors, isSubmitting }, } = useForm({ resolver: zodResolver(resetPasswordSchema) }); const onSubmit = async (values: ResetPasswordFormValues) => { setError(null); setTokenInvalido(false); try { await apiClient.post('/auth/password/reset', { token, nova_senha: values.novaSenha }); setDone(true); } catch (err) { if (err instanceof ApiError && err.statusCode === 401) { setTokenInvalido(true); } else if (err instanceof ApiError) { setError(err.message); } else { setError('Não foi possível conectar. Tente novamente.'); } } }; return (

Redefinir senha

{done ? (

Senha redefinida com sucesso.

Ir para o login
) : tokenInvalido ? (

Este link de redefinição é inválido ou já expirou.

Solicitar um novo link
) : (
{error && (

{error}

)}
)}
); }