import React, { useState } from "react"; import { useNavigate, Link } from "react-router-dom"; import { createUserWithEmailAndPassword } from "firebase/auth"; import { auth } from "@/firebase"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, } from "@/components/ui/card"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Loader2 } from "lucide-react"; export default function Register() { const navigate = useNavigate(); const [email, setEmail] = useState(""); const [password, setPassword] = useState(""); const [error, setError] = useState(null); const [loading, setLoading] = useState(false); const validatePassword = (password) => { if (password.length < 6) { return "Password must be at least 6 characters long."; } return null; }; const validateEmail = (email) => { const re = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; if (!re.test(String(email).toLowerCase())) { return "Invalid email address."; } return null; }; const handleRegister = async (e) => { e.preventDefault(); setError(null); if (!email || !password) { setError("Email and password are required."); return; } const emailError = validateEmail(email); if (emailError) { setError(emailError); return; } const passwordError = validatePassword(password); if (passwordError) { setError(passwordError); return; } setLoading(true); try { await createUserWithEmailAndPassword(auth, email, password); navigate("/"); } catch (error) { setError(error.message || "Something went wrong. Please try again."); } finally { setLoading(false); } }; return (
Already have an account?{" "} Login