import { HTMLAttributes, useState } from 'react' import { z } from 'zod' import { useForm } from 'react-hook-form' import { zodResolver } from '@hookform/resolvers/zod' import { useNavigate } from '@tanstack/react-router' import { cn } from '@/lib/utils' import { showSubmittedData } from '@/utils/show-submitted-data' import { Button } from '@/components/ui/button' import { Form, FormControl, FormField, FormItem, FormMessage, } from '@/components/ui/form' import { Input } from '@/components/ui/input' import { Separator } from '@/components/ui/separator' import { PinInput, PinInputField } from '@/components/pin-input' type OtpFormProps = HTMLAttributes const formSchema = z.object({ otp: z.string().min(1, { message: 'Please enter your otp code.' }), }) export function OtpForm({ className, ...props }: OtpFormProps) { const navigate = useNavigate() const [isLoading, setIsLoading] = useState(false) const [disabledBtn, setDisabledBtn] = useState(true) const form = useForm>({ resolver: zodResolver(formSchema), defaultValues: { otp: '' }, }) function onSubmit(data: z.infer) { setIsLoading(true) showSubmittedData(data) setTimeout(() => { setIsLoading(false) navigate({ to: '/' }) }, 1000) } return (
( setDisabledBtn(false)} onIncomplete={() => setDisabledBtn(true)} > {Array.from({ length: 7 }, (_, i) => { if (i === 3) return return ( ) })} )} /> ) }