|
|
@@ -0,0 +1,62 @@
|
|
|
+'use client'
|
|
|
+
|
|
|
+import { useState } from 'react'
|
|
|
+import { useAuth } from '@/hooks/useAuth'
|
|
|
+import { useRouter } from 'next/navigation'
|
|
|
+
|
|
|
+export default function LoginModal({ onClose }: { onClose: () => void }) {
|
|
|
+ const router = useRouter()
|
|
|
+ const { login } = useAuth()
|
|
|
+ const [email, setEmail] = useState('')
|
|
|
+ const [password, setPassword] = useState('')
|
|
|
+ const [error, setError] = useState('')
|
|
|
+
|
|
|
+ const handleSubmit = async (e: React.FormEvent) => {
|
|
|
+ e.preventDefault()
|
|
|
+ try {
|
|
|
+ await login(email, password)
|
|
|
+ onClose()
|
|
|
+ } catch (err: any) {
|
|
|
+ setError(err.message || 'Login failed')
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return (
|
|
|
+ <div className="fixed inset-0 z-50 flex items-center justify-center bg-black/40" onClick={onClose}>
|
|
|
+ <form
|
|
|
+ onSubmit={handleSubmit}
|
|
|
+ onClick={(e) => e.stopPropagation()}
|
|
|
+ className="w-full max-w-sm space-y-4 rounded-2xl bg-white/10 p-8 backdrop-blur-md"
|
|
|
+ >
|
|
|
+ <h1 className="text-center text-2xl font-bold text-white">Вход</h1>
|
|
|
+
|
|
|
+ {error && <p className="text-sm text-red-400">{error}</p>}
|
|
|
+
|
|
|
+ <input
|
|
|
+ type="email"
|
|
|
+ placeholder="Email"
|
|
|
+ value={email}
|
|
|
+ onChange={(e) => setEmail(e.target.value)}
|
|
|
+ className="w-full rounded-lg border border-white/10 bg-white/5 px-4 py-3 text-white placeholder-white/40 outline-none focus:border-green-500"
|
|
|
+ required
|
|
|
+ />
|
|
|
+
|
|
|
+ <input
|
|
|
+ type="password"
|
|
|
+ placeholder="Пароль"
|
|
|
+ value={password}
|
|
|
+ onChange={(e) => setPassword(e.target.value)}
|
|
|
+ className="w-full rounded-lg border border-white/10 bg-white/5 px-4 py-3 text-white placeholder-white/40 outline-none focus:border-green-500"
|
|
|
+ required
|
|
|
+ />
|
|
|
+
|
|
|
+ <button
|
|
|
+ type="submit"
|
|
|
+ className="w-full rounded-lg bg-green-600 px-4 py-3 font-medium text-white hover:bg-green-500 transition"
|
|
|
+ >
|
|
|
+ Войти
|
|
|
+ </button>
|
|
|
+ </form>
|
|
|
+ </div>
|
|
|
+ )
|
|
|
+}
|