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 (
Sign in to your account
Quick demo login
Don't have an account?{' '} Create one