'use client'; import { useState } from 'react'; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, } from '@/components/ui/dialog'; import { LoginForm } from './LoginForm'; import { RegisterForm } from './RegisterForm'; import { PasswordResetForm } from './PasswordResetForm'; import { OAuthButtons } from './OAuthButtons'; type AuthView = 'login' | 'register' | 'reset'; interface AuthModalProps { open: boolean; onOpenChange: (open: boolean) => void; defaultView?: AuthView; onSuccess?: () => void; showOAuth?: boolean; } export function AuthModal({ open, onOpenChange, defaultView = 'login', onSuccess, showOAuth = true, }: AuthModalProps) { const [view, setView] = useState(defaultView); const handleSuccess = () => { onSuccess?.(); onOpenChange(false); }; const getTitle = () => { switch (view) { case 'login': return 'Welcome Back'; case 'register': return 'Create Account'; case 'reset': return 'Reset Password'; } }; const getDescription = () => { switch (view) { case 'login': return 'Sign in to your account to continue'; case 'register': return 'Create a new account to get started'; case 'reset': return 'Reset your password'; } }; return ( {getTitle()} {getDescription()}
{view === 'login' && ( <> setView('register')} onSwitchToReset={() => setView('reset')} /> {showOAuth && (
)} )} {view === 'register' && ( <> setView('login')} /> {showOAuth && (
)} )} {view === 'reset' && ( setView('login')} /> )}
); }