'use client' import { useState } from 'react' import { useTranslations } from 'next-intl' import { useAuth } from './auth-provider' import { Box, TextField, Button, Alert, CircularProgress, InputAdornment, IconButton } from '@mui/material' import { Email, Lock, Person, Visibility, VisibilityOff } from '@mui/icons-material' interface RegisterFormProps { onSuccess?: () => void } export function RegisterForm({ onSuccess }: RegisterFormProps) { const [email, setEmail] = useState('') const [password, setPassword] = useState('') const [confirmPassword, setConfirmPassword] = useState('') const [name, setName] = useState('') const [loading, setLoading] = useState(false) const [error, setError] = useState('') const [showPassword, setShowPassword] = useState(false) const [showConfirmPassword, setShowConfirmPassword] = useState(false) const { register } = useAuth() const t = useTranslations('auth') const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() setLoading(true) setError('') if (password !== confirmPassword) { setError(t('passwordMismatch')) setLoading(false) return } try { const result = await register(email, password, name || undefined) if (result.success) { if (onSuccess) { onSuccess() } } else { setError(result.error || t('registerError')) } } catch (error) { setError(t('connectionError')) } finally { setLoading(false) } } const handleClickShowPassword = () => { setShowPassword(!showPassword) } const handleClickShowConfirmPassword = () => { setShowConfirmPassword(!showConfirmPassword) } return ( setName(e.target.value)} margin="normal" variant="outlined" disabled={loading} InputProps={{ startAdornment: ( ), }} /> setEmail(e.target.value)} required margin="normal" variant="outlined" disabled={loading} InputProps={{ startAdornment: ( ), }} /> setPassword(e.target.value)} required margin="normal" variant="outlined" disabled={loading} InputProps={{ startAdornment: ( ), endAdornment: ( {showPassword ? : } ), }} /> setConfirmPassword(e.target.value)} required margin="normal" variant="outlined" disabled={loading} error={confirmPassword !== '' && password !== confirmPassword} helperText={ confirmPassword !== '' && password !== confirmPassword ? t('passwordMismatch') : '' } InputProps={{ startAdornment: ( ), endAdornment: ( {showConfirmPassword ? : } ), }} /> {error && ( {error} )} ) }