"use client"; import { zodResolver } from "@hookform/resolvers/zod"; import { useForm } from "react-hook-form"; import { signInSchema } from "@/schemas/auth.schema"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Checkbox } from "@/components/ui/checkbox"; import { Button } from "@/components/ui/button"; import ForgotPasswordModal from "./forgot-password-modal"; import Link from "next/link"; import Image from "next/image"; import { GoogleSigninButton } from "./google-oauth"; import type { z } from "zod"; import { useContext, useState } from "react"; import { useRouter } from "next/navigation"; import { loginUser } from "@/api/authentication"; import { SessionContext } from "@/context/SessionContext"; import { Eye, EyeOff, Leaf, ArrowRight, AlertCircle, Loader2 } from "lucide-react"; import { Alert, AlertDescription } from "@/components/ui/alert"; import { ThemeToggle } from "@/components/theme-toggle"; export default function SigninPage() { const [serverError, setServerError] = useState(null); const [isLoading, setIsLoading] = useState(false); const [showPassword, setShowPassword] = useState(false); const router = useRouter(); const session = useContext(SessionContext); const { register, handleSubmit, formState: { errors, isSubmitting }, } = useForm({ resolver: zodResolver(signInSchema), defaultValues: { email: "", password: "", }, }); const onSubmit = async (values: z.infer) => { setServerError(null); setIsLoading(true); try { const data = await loginUser(values.email, values.password); if (!data) { setServerError("An error occurred while logging in. Please try again."); throw new Error("No data received from the server."); } session!.setToken(data.token); session!.setUser(values.email); router.push("/setup"); // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (error: any) { console.error("Error logging in:", error); setServerError(error.message || "Invalid email or password. Please try again."); } finally { setIsLoading(false); } }; return (
{/* Left side - Image */}
ForFarm

Grow smarter with ForFarm

Join thousands of farmers using our platform to optimize their agricultural operations and increase yields.

{[1, 2, 3].map((i) => (
User
))}
500+ farmers already using ForFarm
{/* Right side - Form */}
Forfarm

Welcome back

New to Forfarm?{" "} Sign up

{serverError && ( {serverError} )} {/* Sign in form */}
{errors.email && (

{errors.email.message}

)}
{errors.password && (

{errors.password.message}

)}
Or continue with

By signing in, you agree to our{" "} Terms of Service {" "} and{" "} Privacy Policy

); }