'use client'; import { useState } from 'react'; import { useRouter } from 'next/navigation'; import Link from 'next/link'; import { Loader2, Eye, EyeOff, Sparkles } from 'lucide-react'; export default function RegisterPage() { const router = useRouter(); const [email, setEmail] = useState(''); const [pass, setPass] = useState(''); const [pass2, setPass2] = useState(''); const [name, setName] = useState(''); const [show, setShow] = useState(false); const [busy, setBusy] = useState(false); const [error, setError] = useState(''); async function submit() { if (!email.trim() || !pass) { setError('Заполните email и пароль'); return; } if (pass.length < 6) { setError('Пароль минимум 6 символов'); return; } if (pass !== pass2) { setError('Пароли не совпадают'); return; } setBusy(true); setError(''); try { const res = await fetch('/api/auth/login', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ email: email.trim(), password: pass, name: name.trim() || undefined, mode: 'register' }), }).then(r => r.json()); if (!res.ok) { setError(res.error || 'Ошибка'); setBusy(false); return; } router.push(res.isNew ? '/onboarding' : '/'); } catch { setError('Ошибка соединения'); setBusy(false); } } return (
{/* Background glow */}
{/* Logo */}
ZeroPost

Создайте аккаунт — это бесплатно

Регистрация

setName(e.target.value)} placeholder="Алексей" className="input w-full" autoFocus />
setEmail(e.target.value)} onKeyDown={e => e.key === 'Enter' && submit()} placeholder="you@example.com" className="input w-full" />
setPass(e.target.value)} placeholder="Минимум 6 символов" className="input w-full pr-10" />
setPass2(e.target.value)} onKeyDown={e => e.key === 'Enter' && submit()} placeholder="Ещё раз" className="input w-full" />
{error &&

{error}

}
или
Уже есть аккаунт? Войти →
{/* Бонус */}
🎁 При регистрации — 50 бесплатных кредитов

Регистрируясь, вы принимаете{' '} условия использования

); }