import { createFileRoute, redirect, useNavigate } from '@tanstack/react-router' import { useState, type FormEvent } from 'react' import { api } from '@/lib/api-client' import { isLoggedIn, setToken } from '@/lib/auth' import { Button } from '@telemt/ui/components/button' import { Field, FieldGroup, FieldLabel } from '@telemt/ui/components/field' import { Input } from '@telemt/ui/components/input' import { Frame, FrameDescription, FramePanel, FrameTitle, } from '@/components/reui/frame' /** * Local login — ReUI PRO auth-4 DNA, wired to panel JWT. * @see https://reui.io/preview/base/auth-4 * @see https://reui.io/docs/blocks */ export const Route = createFileRoute('/login')({ beforeLoad: () => { if (isLoggedIn()) throw redirect({ to: '/dashboard' }) }, component: LoginPage, }) function LoginPage() { const navigate = useNavigate() const [username, setUsername] = useState('admin') const [password, setPassword] = useState('') const [error, setError] = useState(null) const [pending, setPending] = useState(false) async function handleSubmit(e: FormEvent) { e.preventDefault() setPending(true) setError(null) try { const res = await api<{ accessToken: string }>('/api/auth/login', { method: 'POST', body: JSON.stringify({ username, password }), }) setToken(res.accessToken) await navigate({ to: '/dashboard' }) } catch (err) { setError(err instanceof Error ? err.message : 'Ошибка входа') } finally { setPending(false) } } return (
Telemt Panel Локальный вход оператора
Логин setUsername(e.target.value)} required /> Пароль setPassword(e.target.value)} required /> {error ? (

{error}

) : null}

UI: ReUI auth-4 ·{' '} preview

) }