'use client' import { useState } from 'react' import { useForm } from 'react-hook-form' import { zodResolver } from '@hookform/resolvers/zod' import { z } from 'zod' import { Button } from '@/components/ui/button' import { Input } from '@/components/ui/input' import { Label } from '@/components/ui/label' import { Checkbox } from '@/components/ui/checkbox' import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, } from '@/components/ui/card' import { useAuth } from '@/contexts/AuthContext' import { GoogleSignInButton } from './GoogleSignInButton' import { GitHubSignInButton } from './GitHubSignInButton' import { Mail, Lock, Eye, EyeOff } from 'lucide-react' import Link from 'next/link' const LoginSchema = z.object({ emailOrId: z.string().min(1, 'Email or Silicon ID is required'), password: z.string().min(1, 'Password is required'), rememberMe: z.boolean().optional(), }) type LoginFormData = z.infer interface LoginFormProps { onSwitchToRegister?: () => void } export function LoginForm({ onSwitchToRegister }: LoginFormProps) { const [error, setError] = useState(null) const [showPassword, setShowPassword] = useState(false) const { login, loading } = useAuth() const { register, handleSubmit, formState: { errors }, setValue, getValues, trigger, } = useForm({ resolver: zodResolver(LoginSchema), }) const onSubmit = async (data: LoginFormData) => { try { setError(null) await login(data.emailOrId, data.password, data.rememberMe) } catch (err) { setError(err instanceof Error ? err.message : 'Login failed') } } return ( Sign In Enter your email and password to access your account
{error && (
{error}
)}
{errors.emailOrId &&

{errors.emailOrId.message}

}
Forgot password?
{errors.password &&

{errors.password.message}

}
{ setValue('rememberMe', checked as boolean) trigger('rememberMe') }} />
Or continue with
Don't have an account?{' '} {onSwitchToRegister ? ( ) : ( Create account )}
) }