'use client'; import { useState } from 'react'; import Link from 'next/link'; import { useRouter } from 'next/navigation'; import { Video, Loader2, KeyRound, UserPlus } from 'lucide-react'; import { Button } from '@/components/ui/button'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; export default function RegisterPage() { const router = useRouter(); const [isLoading, setIsLoading] = useState(false); const [error, setError] = useState(''); const [formData, setFormData] = useState({ name: '', email: '', password: '', confirmPassword: '', inviteCode: '', }); const handleChange = (e: React.ChangeEvent) => { setFormData(prev => ({ ...prev, [e.target.name]: e.target.value, })); setError(''); }; const handleRegister = async (e: React.FormEvent) => { e.preventDefault(); setError(''); setIsLoading(true); // Client-side validation if (formData.password !== formData.confirmPassword) { setError('Passwords do not match'); setIsLoading(false); return; } if (formData.password.length < 8) { setError('Password must be at least 8 characters'); setIsLoading(false); return; } try { const response = await fetch('/api/auth/register', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ name: formData.name, email: formData.email, password: formData.password, inviteCode: formData.inviteCode, }), }); const data = await response.json(); if (!response.ok) { setError(data.error || 'Registration failed'); return; } // Redirect to login on success router.push('/login?registered=true'); } catch { setError('Something went wrong. Please try again.'); } finally { setIsLoading(false); } }; return (
{/* Logo */}
); }