import React, { useState } from 'react' import { useNavigate, Link } from 'react-router-dom' import { Eye, EyeOff } from 'lucide-react' import logo from '../../assets/chapterX-removebg-preview.png' import { useAuthStore } from '../../store/authStore' import { useUIStore } from '../../store/uiStore' import { Button } from '../../components/ui/Button' import { Avatar } from '../../components/ui/Avatar' import { RoleBadge } from '../../components/ui/Badge' const quickUsers = [ { username: 'admin_alex', name: 'Alex Admin', role: 'admin' as const }, { username: 'elena_writes', name: 'Elena Dimitrova', role: 'writer' as const }, { username: 'boris_writer', name: 'Boris Nikolov', role: 'writer' as const }, { username: 'sara_reader', name: 'Sara Petkovska', role: 'regular' as const }, ] export const LoginPage: React.FC = () => { const navigate = useNavigate() const { login, switchUser } = useAuthStore() const { addToast } = useUIStore() const [email, setEmail] = useState('') const [password, setPassword] = useState('') const [showPw, setShowPw] = useState(false) const [loading, setLoading] = useState(false) const [errors, setErrors] = useState<{ email?: string; password?: string }>({}) const validate = () => { const e: typeof errors = {} if (!email.trim()) e.email = 'Email or username is required' if (!password.trim()) e.password = 'Password is required' setErrors(e) return Object.keys(e).length === 0 } const handleSubmit = async (ev: React.FormEvent) => { ev.preventDefault() if (!validate()) return setLoading(true) try { await login(email, password) addToast('Welcome back!') navigate('/') } catch (err: any) { addToast(err.message || 'Login failed', 'error') } finally { setLoading(false) } } const handleQuickLogin = (username: string) => { const { allUsers } = useAuthStore.getState() const user = allUsers.find(u => u.username === username) if (user) { switchUser(user.user_id) addToast(`Signed in as ${user.name}`) navigate('/') } } return (
{/* Logo */}
ChapterX

Welcome back

Sign in to your account

{/* Quick login */}

Quick demo login

{quickUsers.map(u => ( ))}
or sign in with email
{/* Form */}
{ setEmail(e.target.value); setErrors(p => ({ ...p, email: '' })) }} placeholder="you@example.com" className={`w-full px-4 py-3 bg-slate-800 border rounded-xl text-white placeholder-slate-500 focus:outline-none focus:border-indigo-500 transition-colors ${ errors.email ? 'border-rose-500' : 'border-slate-700' }`} /> {errors.email &&

{errors.email}

}
{ setPassword(e.target.value); setErrors(p => ({ ...p, password: '' })) }} placeholder="••••••••" className={`w-full px-4 py-3 pr-12 bg-slate-800 border rounded-xl text-white placeholder-slate-500 focus:outline-none focus:border-indigo-500 transition-colors ${ errors.password ? 'border-rose-500' : 'border-slate-700' }`} />
{errors.password &&

{errors.password}

}

Don't have an account?{' '} Create one

) }