website-builder-backend / workspace-template /generated_projects /frontend /src /components /Login.tsx
David Prince
fix: add all missing local module stubs (remote_mcp_registry, mcp_auth, mcp_transport, etc)
cce8120 | import React, { useState } from 'react'; | |
| import api, { setAuthToken } from '../api'; | |
| interface LoginProps { | |
| onLogin: (token: string) => void; | |
| } | |
| const Login: React.FC<LoginProps> = ({ onLogin }) => { | |
| const [email, setEmail] = useState(''); | |
| const [password, setPassword] = useState(''); | |
| const [error, setError] = useState<string | null>(null); | |
| const handleSubmit = async (e: React.FormEvent) => { | |
| e.preventDefault(); | |
| try { | |
| const response = await api.post('/auth/login', { email, password }); | |
| const token = response.data.access_token; | |
| setAuthToken(token); | |
| onLogin(token); | |
| } catch (err: any) { | |
| setError(err.response?.data?.detail || 'Login failed'); | |
| } | |
| }; | |
| return ( | |
| <div style={{ maxWidth: 400, margin: 'auto', paddingTop: '2rem' }}> | |
| <h2>Login</h2> | |
| {error && <p style={{ color: 'red' }}>{error}</p>} | |
| <form onSubmit={handleSubmit}> | |
| <div> | |
| <label>Email:</label><br /> | |
| <input type="email" value={email} onChange={e => setEmail(e.target.value)} required /> | |
| </div> | |
| <div> | |
| <label>Password:</label><br /> | |
| <input type="password" value={password} onChange={e => setPassword(e.target.value)} required /> | |
| </div> | |
| <button type="submit" style={{ marginTop: '1rem' }}>Login</button> | |
| </form> | |
| </div> | |
| ); | |
| }; | |
| export default Login; | |