import Cookies from 'js-cookie'; import type { FormEvent } from 'react'; import { useState } from 'react'; import { httpPost } from '../../lib/http'; import { TOKEN_COOKIE_NAME } from '../../lib/jwt'; const EmailLoginForm = () => { const [email, setEmail] = useState(''); const [password, setPassword] = useState(''); const [error, setError] = useState(''); const [isLoading, setIsLoading] = useState(false); const handleFormSubmit = async (e: FormEvent) => { e.preventDefault(); setIsLoading(true); setError(''); const { response, error } = await httpPost<{ token: string }>( `${import.meta.env.PUBLIC_API_URL}/v1-login`, { email, password, } ); // Log the user in and reload the page if (response?.token) { Cookies.set(TOKEN_COOKIE_NAME, response.token, { path: '/', expires: 30, domain: import.meta.env.DEV ? 'localhost' : '.roadmap.sh', }); window.location.reload(); return; } // @todo use proper types if ((error as any).type === 'user_not_verified') { window.location.href = `/verification-pending?email=${encodeURIComponent( email )}`; return; } setIsLoading(false); setError(error?.message || 'Something went wrong. Please try again later.'); }; return (
setEmail(String((e.target as any).value))} /> setPassword(String((e.target as any).value))} />

Reset your password?

{error && (

{error}

)}
); }; export default EmailLoginForm;