import { useState, FormEvent } from 'react'; import styles from '../styles/Login.module.css'; import { Link } from 'react-router-dom'; import { useNavigate } from 'react-router-dom'; import axios from 'axios'; import Navbar from './Navbar'; function Login() { document.title = 'LinkLogger | Login'; const [username, setUsername] = useState(''); const [password, setPassword] = useState(''); const [isSubmitting, setIsSubmitting] = useState(false); const [error, setError] = useState(null); const navigate = useNavigate(); const handleSubmit = async (e: FormEvent) => { e.preventDefault(); setIsSubmitting(true); try { const res = await axios.post( '/api/auth/token', new URLSearchParams({ username: username, password: password, }), { headers: { 'Content-Type': 'application/x-www-form-urlencoded', }, } ); if (res.status === 200) { navigate('/dashboard'); } } catch (error: unknown) { if (axios.isAxiosError(error)) { const customErrorMessage = error.response?.data?.detail || null; setPassword(''); setError(customErrorMessage || 'An error occurred. Please try again.'); } else { setPassword(''); setError('Unknown error. Please try again.'); } } finally { setIsSubmitting(false); } }; return ( <>

Log In

{error}


setUsername(e.target.value)} required /> setPassword(e.target.value)} required />

Don't have an account?{' '} Create one now

); } export default Login;