import { useState, type FormEvent } from 'react'; import { ArrowRight, CheckCircle2 } from 'lucide-react'; import { BrandMark } from '../../components/BrandMark'; import { loginInstructor } from '../../lib/auth'; import type { AuthSession } from '../../types/auth'; type LoginPageProps = { onLogin: (session: AuthSession) => void; }; const REMEMBERED_EMAIL_STORAGE_KEY = 'atnmy.lms.admin.login.rememberedEmail'; const DEFAULT_EMAIL = ''; const DEFAULT_PASSWORD = 'qwer1234'; export function LoginPage({ onLogin }: LoginPageProps) { const rememberedEmail = window.localStorage.getItem(REMEMBERED_EMAIL_STORAGE_KEY); const [email, setEmail] = useState(rememberedEmail ?? DEFAULT_EMAIL); const [password, setPassword] = useState(DEFAULT_PASSWORD); const [rememberEmail, setRememberEmail] = useState(Boolean(rememberedEmail)); const [loading, setLoading] = useState(false); const [error, setError] = useState(''); const handleSubmit = async (event: FormEvent) => { event.preventDefault(); setLoading(true); setError(''); try { const session = await loginInstructor(email, password); if (rememberEmail) { window.localStorage.setItem(REMEMBERED_EMAIL_STORAGE_KEY, email); } else { window.localStorage.removeItem(REMEMBERED_EMAIL_STORAGE_KEY); } onLogin(session); } catch (loginError) { setError(loginError instanceof Error ? loginError.message : '로그인에 실패했습니다.'); } finally { setLoading(false); } }; return (

Learning Management System

자율주행 교육 플랫폼

실제 하드웨어와 시뮬레이션을 활용한 차세대 학습 관리 시스템

{['실시간 모니터링 및 통합 관리', '하드웨어 플랫폼 상태 추적', 'AI 가이드 에스컬레이션'].map((item) => (
))}

© 2026. All rights reserved.

강사 로그인

이메일과 비밀번호를 입력해주세요.

{error ?

{error}

: null}
또는

접근 권한이 없는 계정은 관리자에게 문의하세요.

); } function GoogleMark() { return ( ); }