import React, { useState, useEffect } from 'react'; import { Eye, EyeOff, User, Lock, Mail, Camera, UserPlus, ArrowLeft, Check } from 'lucide-react'; // Mock navigation function for demo const mockNavigate = (path) => { console.log(`Navigating to: ${path}`); alert(`Would navigate to: ${path}`); }; const CreateAccountPage = () => { const [email, setEmail] = useState(''); const [password, setPassword] = useState(''); const [reEnterPassword, setReEnterPassword] = useState(''); const [avatarImage, setAvatarImage] = useState(null); const [showPassword, setShowPassword] = useState(false); const [showReEnterPassword, setShowReEnterPassword] = useState(false); const [isLoading, setIsLoading] = useState(false); const [mounted, setMounted] = useState(false); const [errorMessage, setErrorMessage] = useState(''); const [passwordStrength, setPasswordStrength] = useState(0); useEffect(() => { setMounted(true); }, []); useEffect(() => { // Calculate password strength let strength = 0; if (password.length >= 8) strength++; if (/[A-Z]/.test(password)) strength++; if (/[0-9]/.test(password)) strength++; if (/[^A-Za-z0-9]/.test(password)) strength++; setPasswordStrength(strength); }, [password]); const handleCreateAccount = async (e) => { e.preventDefault(); setErrorMessage(''); setIsLoading(true); if (!email || !password || !reEnterPassword) { setErrorMessage('All fields are required.'); setIsLoading(false); return; } if (password !== reEnterPassword) { setErrorMessage('Passwords do not match.'); setIsLoading(false); return; } if (password.length < 8) { setErrorMessage('Password must be at least 8 characters long.'); setIsLoading(false); return; } // Simulate API call setTimeout(() => { console.log('Account created successfully!'); alert('Account created successfully!'); mockNavigate('/login'); setIsLoading(false); }, 2000); }; const handleAvatarChange = (e) => { const file = e.target.files[0]; if (file) { const reader = new FileReader(); reader.onload = () => { setAvatarImage(reader.result); }; reader.readAsDataURL(file); } }; const getPasswordStrengthColor = () => { if (passwordStrength === 0) return 'bg-gray-300'; if (passwordStrength === 1) return 'bg-red-400'; if (passwordStrength === 2) return 'bg-yellow-400'; if (passwordStrength === 3) return 'bg-blue-400'; return 'bg-green-400'; }; const getPasswordStrengthText = () => { if (passwordStrength === 0) return 'Enter password'; if (passwordStrength === 1) return 'Weak'; if (passwordStrength === 2) return 'Fair'; if (passwordStrength === 3) return 'Good'; return 'Strong'; }; return (
Join our community today
Click to upload your photo
Passwords do not match
)}Already have an account?