"use client" import { useState } from "react" import { motion, AnimatePresence } from "framer-motion" import { Eye, EyeOff, X, CheckCircle2, LogIn, UserPlus } from "lucide-react" import Link from "next/link" import { toast } from "sonner" import { useAuth } from "@/lib/auth-context" interface AuthModalProps { open: boolean onOpenChange: (open: boolean) => void defaultTab?: "login" | "register" onSuccess?: () => void } export function AuthModal({ open, onOpenChange, defaultTab = "login", onSuccess }: AuthModalProps) { const { signIn, signUp } = useAuth() const [tab, setTab] = useState<"login" | "register">(defaultTab) const [name, setName] = useState("") const [email, setEmail] = useState("") const [password, setPassword] = useState("") const [showPass, setShowPass] = useState(false) const [loading, setLoading] = useState(false) const [verified, setVerified] = useState(false) const reset = () => { setName(""); setEmail(""); setPassword("") setShowPass(false); setLoading(false); setVerified(false) } const close = () => { reset() onOpenChange(false) } const handleTab = (t: "login" | "register") => { setTab(t); reset() } const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() if (!email || !password) { toast.error("يرجى ملء جميع الحقول"); return } if (password.length < 6) { toast.error("كلمة المرور يجب أن تكون 6 أحرف على الأقل"); return } setLoading(true) if (tab === "login") { const { error } = await signIn(email, password) setLoading(false) if (error) { toast.error( error.message.includes("Invalid login") ? "البريد أو كلمة المرور غير صحيحة" : error.message.includes("Email not confirmed") ? "يرجى تأكيد بريدك الإلكتروني أولاً" : "حدث خطأ، يرجى المحاولة" ) return } toast.success("أهلاً وسهلاً!") close() onSuccess?.() } else { const { error, needsVerification } = await signUp(email, password, name) setLoading(false) if (error) { toast.error(error.message.includes("already registered") ? "هذا البريد مسجّل مسبقاً" : error.message) return } if (needsVerification) { setVerified(true) } else { toast.success("تم إنشاء الحساب!") close() onSuccess?.() } } } return ( {open && ( e.stopPropagation()} className="w-full max-w-sm glass-strong rounded-3xl overflow-hidden shadow-2xl" style={{ border: "1px solid var(--border)" }} > {/* Header */}

{verified ? "تحقّق من بريدك" : tab === "login" ? "مرحباً بعودتك" : "إنشاء حساب"}

{!verified && (
{(["login", "register"] as const).map(t => ( ))}
)} {/* Email verified state */} {verified ? (

تم إرسال رابط التفعيل إلى

{email}

تحقّق من بريدك وانقر على الرابط لتفعيل حسابك

) : ( /* Form */
{tab === "register" && ( setName(e.target.value)} className="w-full px-4 py-3 rounded-2xl text-sm text-foreground placeholder:text-muted-foreground bg-input border border-border/60 focus:border-ring focus:ring-2 focus:ring-ring/20 outline-none transition-colors" /> )} setEmail(e.target.value)} required className="w-full px-4 py-3 rounded-2xl text-sm text-foreground placeholder:text-muted-foreground bg-input border border-border/60 focus:border-ring focus:ring-2 focus:ring-ring/20 outline-none transition-colors" />
setPassword(e.target.value)} required minLength={6} className="w-full px-4 pl-10 py-3 rounded-2xl text-sm text-foreground placeholder:text-muted-foreground bg-input border border-border/60 focus:border-ring focus:ring-2 focus:ring-ring/20 outline-none transition-colors" />
{tab === "login" && (
نسيت كلمة المرور؟
)} {loading ? ( <> جارٍ... ) : tab === "login" ? "تسجيل الدخول" : "إنشاء الحساب"}
)}
{/* Footer */} {!verified && (

{tab === "login" ? ( <> ليس لديك حساب؟{" "} ) : ( <> لديك حساب؟{" "} )}

)}
)}
) }