/opt/mawid/apps/dashboard/app/login
NameSizeModeActions
page.tsx19100644editdlrm
Edit: /opt/mawid/apps/dashboard/app/login/page.tsx (1910B)
'use client'; import { useState } from 'react'; import { useRouter } from 'next/navigation'; import { api, setToken } from '@/lib/api'; import { useLang } from '@/lib/i18n'; import { Button, Card, Field, Input } from '@/components/ui'; export default function LoginPage() { const { t } = useLang(); const router = useRouter(); const [email, setEmail] = useState(''); const [password, setPassword] = useState(''); const [error, setError] = useState(null); const [busy, setBusy] = useState(false); async function submit(e: React.FormEvent) { e.preventDefault(); setBusy(true); setError(null); try { const result = await api<{ accessToken: string }>('/auth/login', { method: 'POST', body: JSON.stringify({ email, password }), }); setToken(result.accessToken); router.push('/'); } catch { setError(t('loginFailed')); } finally { setBusy(false); } } return (

{t('appName')}

{t('loginTitle')}

setEmail(e.target.value)} required /> setPassword(e.target.value)} required /> {error &&

{error}

}
); }