import { useEffect, useState } from 'react' import { ArrowRight, Eye, EyeOff, Globe, Loader2, LockKeyhole, Sparkles, UserRound, } from 'lucide-react' import Modal from './Modal' import Button from './Button' export default function AuthDialogPanel({ open, mode, onModeChange, onClose, onLogin, onRegister, onGoogleLogin, pending, }) { const [name, setName] = useState('') const [username, setUsername] = useState('') const [password, setPassword] = useState('') const [error, setError] = useState('') const [showPassword, setShowPassword] = useState(false) const isRegister = mode === 'register' const submitLabel = isRegister ? 'Create account' : 'Sign in' useEffect(() => { setError('') setShowPassword(false) }, [mode, open]) const submit = async (event) => { event.preventDefault() setError('') if (!username || !password || (isRegister && !name.trim())) { setError('Fill all fields.') return } try { if (isRegister) { await onRegister({ username, name: name.trim(), password }) } else { await onLogin({ username, password }) } } catch (authError) { setError(authError.message || 'Authentication failed.') } } return ( { if (!next) onClose() }} size="sm" title={isRegister ? 'Create account' : 'Sign in'} className="auth-panel border-border bg-card" >
{isRegister ? ( ) : null} {error ? (
{error}
) : null}
) } function AuthField({ icon: Icon, label, value, onChange, placeholder, autoComplete, autoFocus = false, }) { return ( ) }