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 (
{/* Background Elements */}
{/* Subtle geometric shapes */}
{/* Grid pattern */}
{/* Main Content */}
{/* Background Logo */}
{/* Create Account Card */}
{/* Card Background */}
{/* Header Section */}

Create Account

Join our community today

{/* Form Section */}
{/* Error Message */} {errorMessage && (
{errorMessage}
)} {/* Avatar Upload */}

Click to upload your photo

{/* Form Fields */}
{/* Email Field */}
setEmail(e.target.value)} className="w-full pl-12 pr-4 py-4 bg-gray-50 border border-gray-200 rounded-xl focus:outline-none focus:ring-2 focus:ring-purple-500 focus:border-transparent transition-all duration-200" placeholder="Enter your email" />
{/* Password Field */}
setPassword(e.target.value)} className="w-full pl-12 pr-12 py-4 bg-gray-50 border border-gray-200 rounded-xl focus:outline-none focus:ring-2 focus:ring-purple-500 focus:border-transparent transition-all duration-200" placeholder="Create a strong password" />
{/* Password Strength Indicator */} {password && (
{getPasswordStrengthText()}
= 8 ? 'bg-green-400' : 'bg-gray-300'}`}>
At least 8 characters
One uppercase letter
One number
)}
{/* Re-enter Password Field */}
setReEnterPassword(e.target.value)} className={`w-full pl-12 pr-12 py-4 bg-gray-50 border rounded-xl focus:outline-none focus:ring-2 focus:border-transparent transition-all duration-200 ${ reEnterPassword && password !== reEnterPassword ? 'border-red-300 focus:ring-red-500' : reEnterPassword && password === reEnterPassword ? 'border-green-300 focus:ring-green-500' : 'border-gray-200 focus:ring-purple-500' }`} placeholder="Confirm your password" /> {reEnterPassword && password === reEnterPassword && (
)}
{reEnterPassword && password !== reEnterPassword && (

Passwords do not match

)}
{/* Create Account Button */} {/* Login Link */}

Already have an account?

); }; export default CreateAccountPage;