"use client"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from "@/components/ui/card"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { PasswordInput } from "@/components/ui/password-input"; import { signIn } from "@/lib/auth-client"; import { DiscordLogoIcon, GitHubLogoIcon } from "@radix-ui/react-icons"; import { Loader2 } from "lucide-react"; import Link from "next/link"; import { useRouter } from "next/navigation"; import { useState, useEffect } from "react"; import { toast } from "sonner"; import { z } from "zod"; const signInSchema = z.object({ email: z.string().email("Invalid email address"), password: z.string().min(8, "Password must be at least 8 characters"), }); export default function SignIn() { const [email, setEmail] = useState(""); const [password, setPassword] = useState(""); const [rememberMe, setRememberMe] = useState(false); const [errors, setErrors] = useState({ email: "", password: "" }); const [isValid, setIsValid] = useState(false); const [touched, setTouched] = useState({ email: false, password: false }); const router = useRouter(); const [loading, setLoading] = useState(false); useEffect(() => { const validationResult = signInSchema.safeParse({ email, password }); if (!validationResult.success) { const newErrors: any = {}; validationResult.error.errors.forEach((err) => { newErrors[err.path[0]] = err.message; }); setErrors(newErrors); setIsValid(false); } else { setErrors({ email: "", password: "" }); setIsValid(true); } }, [email, password]); return ( Sign In Enter your email below to login to your account
{ setEmail(e.target.value); setTouched((prev) => ({ ...prev, email: true })); }} value={email} /> {touched.email && errors.email && (

{errors.email}

)}
Forgot your password?
{ setPassword(e.target.value); setTouched((prev) => ({ ...prev, password: true })); }} autoComplete="password" placeholder="Password" /> {touched.password && errors.password && (

{errors.password}

)}
); }