import { useState } from 'react' import { useForm } from 'react-hook-form' import { z } from 'zod' import { zodResolver } from '@hookform/resolvers/zod' import { useAuth } from '../context/AuthContext' import { Button } from '@/components/ui/button' import { Input } from '@/components/ui/input' import { Card } from '@/components/ui/card' import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs' import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from '@/components/ui/form' import { useToast } from '@/hooks/use-toast' const formSchema = z.object({ email: z.string().email('Invalid email address'), password: z.string().min(6, 'Password must be at least 6 characters long'), adminToken: z.string(), }) type FormValues = z.infer export function AuthForms() { const [activeTab, setActiveTab] = useState<'login' | 'register'>('login') const { login, register } = useAuth() const { toast } = useToast() const form = useForm({ resolver: zodResolver(formSchema), defaultValues: { email: '', password: '', adminToken: '', }, }) const onSubmit = async (values: FormValues) => { try { if (activeTab === 'login') { await login(values.email, values.password) } else { await register(values.email, values.password, values.adminToken) } form.reset() } catch (err: any) { toast({ variant: 'destructive', title: 'Error', description: err.response?.data || 'An error occurred', }) } } return ( setActiveTab(value as 'login' | 'register')}> Login Register
( Email )} /> ( Password )} /> {activeTab === 'register' && ( ( Admin Setup Token )} /> )}
) }