import { useState } from 'react' import { Link, useNavigate } from 'react-router-dom' import { useAuthStore } from '@/store/authStore' import { Button } from '@/components/ui/button' import { Input } from '@/components/ui/input' import { Label } from '@/components/ui/label' import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card' import { Alert, AlertDescription } from '@/components/ui/alert' import LoadingSpinner from '@/components/LoadingSpinner' import { MessageCircle } from 'lucide-react' export default function RegisterPage() { const [formData, setFormData] = useState({ email: '', username: '', displayName: '', password: '', confirmPassword: '' }) const [validationError, setValidationError] = useState('') const { register, loading, error, clearError } = useAuthStore() const navigate = useNavigate() const handleChange = (e: React.ChangeEvent) => { const { name, value } = e.target setFormData(prev => ({ ...prev, [name]: value })) setValidationError('') } const validateForm = () => { if (formData.password !== formData.confirmPassword) { setValidationError('Passwords do not match') return false } if (formData.password.length < 6) { setValidationError('Password must be at least 6 characters long') return false } if (formData.username.length < 3) { setValidationError('Username must be at least 3 characters long') return false } if (!/^[a-zA-Z0-9_]+$/.test(formData.username)) { setValidationError('Username can only contain letters, numbers, and underscores') return false } return true } const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() clearError() setValidationError('') if (!validateForm()) { return } try { await register({ email: formData.email, username: formData.username, displayName: formData.displayName, password: formData.password }) navigate('/chat') } catch (error) { // Error is handled by the store } } const displayError = validationError || error return (
Create Account Join ChatApp and start messaging
{displayError && ( {displayError} )}

Already have an account?{' '} Sign in

) }