import { useState } from 'react' import { useNavigate } from 'react-router-dom' import { motion } from 'framer-motion' import { Eye, EyeOff, Mail, Lock } from 'lucide-react' import { Input } from '@/components/ui/Input' import { Button } from '@/components/ui/Button' import { useAuthStore } from '@/stores/authStore' import { authApi } from '@/lib/api' export function LoginPage() { const navigate = useNavigate() const { login } = useAuthStore() const [email, setEmail] = useState('') const [password, setPassword] = useState('') const [showPassword, setShowPassword] = useState(false) const [error, setError] = useState('') const [loading, setLoading] = useState(false) const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() setError('') setLoading(true) try { const res = await authApi.login(email, password) if (!res.ok) { setError('Invalid credentials') return } // Save token FIRST so authApi.me() can use it localStorage.setItem('amos_token', res.token) // Fetch user info const me = await authApi.me() login(res.token, { id: me.user.sub, email: me.user.email, name: 'Erik Svensson', role: me.user.roles?.[0] || 'user', }) navigate('/') } catch (err) { setError(err instanceof Error ? err.message : 'Login failed') } finally { setLoading(false) } } return (
Sign in to your AMOS account