"use client"; import React, { useState } from 'react'; import { useAuth } from '@/contexts/AuthContext'; // Assumes user has this context import { api } from '@/lib/api-client'; // Assumes user has this client import { Modal } from '@/components/ui/Modal/Modal'; import { Input } from '@/components/ui/Input/Input'; import { Button } from '@/components/ui/Button/Button'; import styles from './AuthModal.module.css'; interface AuthModalProps { isOpen: boolean; onClose: () => void; onSuccess?: () => void; defaultTab?: 'login' | 'signup'; } export const AuthModal: React.FC = ({ isOpen, onClose, onSuccess, defaultTab = 'login' }) => { const [mode, setMode] = useState<'login' | 'signup'>(defaultTab); const [email, setEmail] = useState(''); const [password, setPassword] = useState(''); const [name, setName] = useState(''); const [isLoading, setIsLoading] = useState(false); const [error, setError] = useState(null); const { login } = useAuth(); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setIsLoading(true); setError(null); try { if (mode === 'login') { const response = await api.post('/auth/login', { body: { email, password } }); login(response.jwt_token, response.main_agent_id, response.main_thread_id); } else { const response = await api.post('/auth/signup', { body: { email, password, name } }); // Auto-login after signup if (response.jwt_token) { login(response.jwt_token, response.main_agent_id, response.main_thread_id); } } if (onSuccess) onSuccess(); onClose(); } catch (err: any) { console.error('Auth error:', err); setError(err.message || `Failed to ${mode}. Please check your details.`); } finally { setIsLoading(false); } }; return (

{mode === 'login' ? "Don't have an account? " : "Already have an account? "}

} >
{mode === 'signup' && ( setName(e.target.value)} required fullWidth /> )} setEmail(e.target.value)} required fullWidth /> setPassword(e.target.value)} required fullWidth minLength={8} /> {error && (
{error}
)}
); };