import { useState } from 'react' import { Key, ArrowRight, ShieldCheck, Lock, Check } from 'lucide-react' import clsx from 'clsx' import { useI18n } from '../i18n' import LanguageToggle from './LanguageToggle' export default function Login({ onLogin, onMessage }) { const { t } = useI18n() const [adminKey, setAdminKey] = useState('') const [loading, setLoading] = useState(false) const [remember, setRemember] = useState(true) const handleLogin = async (e) => { e.preventDefault() if (!adminKey.trim()) return setLoading(true) try { const res = await fetch('/admin/login', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ admin_key: adminKey }), }) const data = await res.json() if (res.ok && data.success) { const storage = remember ? localStorage : sessionStorage storage.setItem('ds2api_token', data.token) storage.setItem('ds2api_token_expires', Date.now() + data.expires_in * 1000) onLogin(data.token) if (data.message) { onMessage('warning', data.message) } } else { onMessage('error', data.detail || t('login.signInFailed')) } } catch (e) { onMessage('error', t('login.networkError', { error: e.message })) } finally { setLoading(false) } } return (

{t('login.welcome')}

{t('login.subtitle')}

setAdminKey(e.target.value)} autoFocus />
{t('login.secureConnection')}

{t('login.adminPortal')}

) }