import { useState } from 'react'; import { Link, useNavigate } from 'react-router-dom'; import { useAuth } from '@/contexts/AuthContext'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from '@/components/ui/card'; import { Cloud, Loader2 } from 'lucide-react'; import { showToast } from '@/components/ui/toast-utils'; export function Register() { const [email, setEmail] = useState(''); const [fullName, setFullName] = useState(''); const [password, setPassword] = useState(''); const [confirmPassword, setConfirmPassword] = useState(''); const [isSubmitting, setIsSubmitting] = useState(false); const [errors, setErrors] = useState>({}); const { register } = useAuth(); const navigate = useNavigate(); const validateForm = (): boolean => { const newErrors: Record = {}; // Email validation const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; if (!emailRegex.test(email)) { newErrors.email = 'Please enter a valid email address'; } // Password validation if (password.length < 8) { newErrors.password = 'Password must be at least 8 characters'; } // Confirm password if (password !== confirmPassword) { newErrors.confirmPassword = 'Passwords do not match'; } // Full name if (!fullName.trim()) { newErrors.fullName = 'Full name is required'; } setErrors(newErrors); return Object.keys(newErrors).length === 0; }; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!validateForm()) { showToast({ title: 'Validation Error', description: 'Please fix the errors in the form', variant: 'destructive' }); return; } setIsSubmitting(true); const success = await register(email, password, fullName); if (success) { navigate('/'); } setIsSubmitting(false); }; return (
mockupAWS
Create account Enter your details to create a new account
setFullName(e.target.value)} required autoComplete="name" /> {errors.fullName && (

{errors.fullName}

)}
setEmail(e.target.value)} required autoComplete="email" /> {errors.email && (

{errors.email}

)}
setPassword(e.target.value)} required autoComplete="new-password" /> {errors.password && (

{errors.password}

)}

Must be at least 8 characters

setConfirmPassword(e.target.value)} required autoComplete="new-password" /> {errors.confirmPassword && (

{errors.confirmPassword}

)}

Already have an account?{' '} Sign in

AWS Cost Simulator & Backend Profiler

); }