'use client'; import { useState } from 'react'; import { authClient } from '@/lib/auth-client'; type AuthMode = 'signin' | 'signup'; export function AuthForm() { const [mode, setMode] = useState('signin'); const [email, setEmail] = useState(''); const [password, setPassword] = useState(''); const [confirmPassword, setConfirmPassword] = useState(''); const [loading, setLoading] = useState(false); const [error, setError] = useState(''); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setError(''); setLoading(true); try { if (mode === 'signin') { const response = await authClient.signIn.email({ email, password, }); if (response.error) { setError(response.error.message || 'Authentifizierung fehlgeschlagen'); } } else { if (password !== confirmPassword) { setError('Die Passwörter stimmen nicht überein'); setLoading(false); return; } const response = await authClient.signUp.email({ email, name: email.split('@')[0], password, }); if (response.error) { setError(response.error.message || 'Registrierung fehlgeschlagen'); } } } catch (err: any) { setError(err.message || 'Ein Fehler ist aufgetreten'); } finally { setLoading(false); } }; return (
{/* Card */}
{/* Header */}
{/* Tabs */}
{/* Form */}
{/* Error Message */} {error && (
{error}
)} {/* Email Input */}
setEmail(e.target.value)} placeholder="you@example.com" required className="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-colors" />
{/* Password Input */}
setPassword(e.target.value)} placeholder="••••••••" required minLength={8} className="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-colors" /> {mode === 'signup' && (

Mindestens 8 Zeichen

)}
{/* Confirm Password Input (Sign Up Only) */} {mode === 'signup' && (
setConfirmPassword(e.target.value)} placeholder="••••••••" required minLength={8} className="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-colors" />
)} {/* Submit Button */} {/* Info Text */}

{mode === 'signin' ? ( <> Sie haben noch kein Konto?{' '} ) : ( <> Sie haben bereits ein Konto?{' '} )}

); }