import React, { useState, useEffect } from "react"; import { useNavigate, Link } from "react-router-dom"; import { FiUser, FiLock, FiUserPlus } from "react-icons/fi"; import { useAuthStore } from "@/modules/auth/store/useAuthStore"; export const RegisterPage: React.FC = () => { const navigate = useNavigate(); const { register, isLoading, error, clearError } = useAuthStore(); const [formData, setFormData] = useState({ login: "", password: "", confirmPassword: "", firstName: "", lastName: "", }); const [passwordError, setPasswordError] = useState(null); const [successMessage, setSuccessMessage] = useState(null); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (formData.password !== formData.confirmPassword) { setPasswordError("Пароли не совпадают"); return; } setPasswordError(null); try { await register({ login: formData.login, password: formData.password, firstName: formData.firstName, lastName: formData.lastName, }); setSuccessMessage("Аккаунт успешно создан! Теперь вы можете войти."); setFormData({ login: "", password: "", confirmPassword: "", firstName: "", lastName: "", }); setTimeout(() => { navigate("/auth"); }, 2000); } catch (err) { // Error is handled by store } }; const handleChange = (e: React.ChangeEvent) => { setFormData({ ...formData, [e.target.name]: e.target.value, }); if (error) clearError(); if (passwordError) setPasswordError(null); }; const inputStyles = ` w-full pl-10 pr-3 py-2.5 rounded-lg border focus:outline-none focus:ring-2 transition-all `; const simpleInputStyles = ` w-full px-3 py-2.5 rounded-lg border focus:outline-none focus:ring-2 transition-all `; return (
{/* Card */}
{/* Header */}

Создать аккаунт

Зарегистрируйтесь, чтобы начать

{/* Error Message */} {error && (
{error}
)} {/* Success Message */} {successMessage && (
{successMessage}
)} {/* Form */}
{/* Name Fields */}
{ e.currentTarget.style.borderColor = "var(--border-focus)"; e.currentTarget.style.boxShadow = `0 0 0 3px ${e.currentTarget.style.borderColor}20`; }} onBlur={(e) => { e.currentTarget.style.borderColor = "var(--border)"; e.currentTarget.style.boxShadow = "none"; }} placeholder="Иван" />
{ e.currentTarget.style.borderColor = "var(--border-focus)"; e.currentTarget.style.boxShadow = `0 0 0 3px ${e.currentTarget.style.borderColor}20`; }} onBlur={(e) => { e.currentTarget.style.borderColor = "var(--border)"; e.currentTarget.style.boxShadow = "none"; }} placeholder="Иванов" />
{/* Login */}
{ e.currentTarget.style.borderColor = "var(--border-focus)"; e.currentTarget.style.boxShadow = `0 0 0 3px ${e.currentTarget.style.borderColor}20`; }} onBlur={(e) => { e.currentTarget.style.borderColor = "var(--border)"; e.currentTarget.style.boxShadow = "none"; }} placeholder="Придумайте логин" />
{/* Password */}
{ e.currentTarget.style.borderColor = "var(--border-focus)"; e.currentTarget.style.boxShadow = `0 0 0 3px ${e.currentTarget.style.borderColor}20`; }} onBlur={(e) => { e.currentTarget.style.borderColor = "var(--border)"; e.currentTarget.style.boxShadow = "none"; }} placeholder="Придумайте пароль" />
{/* Confirm Password */}
{ e.currentTarget.style.borderColor = "var(--border-focus)"; e.currentTarget.style.boxShadow = `0 0 0 3px ${e.currentTarget.style.borderColor}20`; }} onBlur={(e) => { e.currentTarget.style.borderColor = "var(--border)"; e.currentTarget.style.boxShadow = "none"; }} placeholder="Повторите пароль" />
{passwordError && (

{passwordError}

)}
{/* Footer */}

Уже есть аккаунт?{" "} { e.currentTarget.style.color = "var(--link-hover)"; }} onMouseLeave={(e) => { e.currentTarget.style.color = "var(--link)"; }} > Войти

); };