import { useState } from 'react' import { Navigate, useLocation } from 'react-router-dom' import type { Location } from 'react-router-dom' import { Ic, Pattern } from '@/icons' import { Button } from '@/components/ui/button' import { Input } from '@/components/ui/input' import { useAuth, useLoginMutation } from '@/features/auth/use-auth' import { ApiError } from '@/services/http' import { siteConfig } from '@/config/site' import { AqilaLogo } from '@/components/AqilaLogo' function Field({ label, children }: { label: string; children: React.ReactNode }) { return (

{label}

{children}
) } export default function LoginPage() { const location = useLocation() const { isAuthenticated } = useAuth() const loginMutation = useLoginMutation() const [email, setEmail] = useState('') const [password, setPassword] = useState('') const [showPassword, setShowPassword] = useState(false) const from = (location.state as { from?: Location } | null)?.from?.pathname ?? '/' if (isAuthenticated) { return } const valid = email.trim().length > 0 && password.length > 0 const submit = (e: React.FormEvent) => { e.preventDefault() if (!valid || loginMutation.isPending) return loginMutation.mutate({ email: email.trim(), password }) } const fillDemo = () => { setEmail('admin@gmail.com') setPassword('admin') } const errorMessage = loginMutation.error instanceof ApiError ? loginMutation.error.message : loginMutation.error ? 'ورود ناموفق بود. دوباره تلاش کنید.' : null return (
{/* لوگو و نام برند */}

{siteConfig.name}

ورود به پنل مدیریت و داشبورد

{/* کارت لاگین */}
{/* راهنمای لاگین دمو */}
حساب آزمایشی آماده: admin@gmail.com / admin
setEmail(e.target.value)} autoFocus />
setPassword(e.target.value)} />
{errorMessage && (
{errorMessage}
)}

پشتیبانی از قالب‌های سفارشی و اتصال مستقیم به API

) }