"use client"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import axios from "axios"; import { useState } from "react"; import Cookies from "js-cookie"; import { useRouter } from "next/navigation"; import { Label } from "@/components/ui/label"; import Link from "next/link"; import { CardContent, CardDescription, CardFooter, CardHeader, CardTitle, } from "../ui/card"; export default function Login() { const [username, setUsername] = useState(""); const [password, setPassword] = useState(""); const [feedback, setFeedback] = useState< undefined | { kind: "error" | "info"; message: string } >(); const router = useRouter(); const login = async () => { setFeedback(undefined); try { const res = await axios.put("/api/user", { username, password }); Cookies.set("token", (res.data as any).token); setFeedback({ kind: "info", message: "Login successful! Redirecting...", }); // small delay to show feedback before redirect setTimeout(() => router.push("/chat"), 800); } catch (err: any) { setFeedback({ kind: "error", message: err.response?.data?.message || "Login failed. Please try again.", }); } }; return ( <> Login Username or email setUsername(e.target.value)} type="email" /> Password setPassword(e.target.value)} onKeyDown={(e) => { if (e.key === "Enter") login(); }} type="password" /> {feedback && (
{feedback.message}
)}
); }