import { useState } from 'react'; import { useNavigate, Link } from 'react-router-dom'; import { useAuth } from '../context/AuthContext'; export default function Register() { const [username, setUsername] = useState(''); const [password, setPassword] = useState(''); const [confirm, setConfirm] = useState(''); const [error, setError] = useState(''); const [loading, setLoading] = useState(false); const { register, user } = useAuth(); const navigate = useNavigate(); if (user) { navigate('/links'); return null; } const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setError(''); if (password !== confirm) { setError('Passwords do not match'); return; } setLoading(true); try { await register(username, password); navigate('/links'); } catch (err: any) { setError(err.response?.data?.message || 'Registration failed'); } finally { setLoading(false); } }; return (

Register

setUsername(e.target.value)} className="w-full bg-zinc-950 border border-zinc-700 p-3 text-zinc-300 placeholder-zinc-700 focus:outline-none focus:border-zinc-400 focus:ring-1 focus:ring-zinc-400 transition-all font-mono text-sm" required minLength={3} maxLength={32} /> setPassword(e.target.value)} className="w-full bg-zinc-950 border border-zinc-700 p-3 text-zinc-300 placeholder-zinc-700 focus:outline-none focus:border-zinc-400 focus:ring-1 focus:ring-zinc-400 transition-all font-mono text-sm" required minLength={6} /> setConfirm(e.target.value)} className="w-full bg-zinc-950 border border-zinc-700 p-3 text-zinc-300 placeholder-zinc-700 focus:outline-none focus:border-zinc-400 focus:ring-1 focus:ring-zinc-400 transition-all font-mono text-sm" required minLength={6} />
{error && (
{error}
)}

Already have an account?{' '} Login

); }