"use client"; import { useEffect, useState } from "react"; import styles from "../vip.module.css"; import { LoginForm } from "./LoginForm"; import { AuthForm } from "./AuthForm"; type LoginModalProps = { open: boolean; onClose: () => void; onVerify: (userId: string) => Promise; onVerifyByEmail?: (email: string, password: string) => Promise; onSuccess: () => void; }; export function LoginModal({ open, onClose, onVerify, onVerifyByEmail, onSuccess }: LoginModalProps) { const [tab, setTab] = useState<"email" | "legacy">("email"); useEffect(() => { if (open) { document.body.style.overflow = "hidden"; } else { document.body.style.overflow = ""; } return () => { document.body.style.overflow = ""; }; }, [open]); useEffect(() => { if (!open) return; const onKeyDown = (e: KeyboardEvent) => { if (e.key === "Escape") onClose(); }; window.addEventListener("keydown", onKeyDown); return () => window.removeEventListener("keydown", onKeyDown); }, [open, onClose]); const handleSuccess = () => { onClose(); onSuccess(); }; if (!open) return null; return (
e.stopPropagation()} >

登录

{tab === "email" ? (

使用邮箱登录,可与 digital / meetup 等站点共享账号

) : (

支持 user_id 或关联 users 的邮箱验证

)} {tab === "email" ? ( ) : ( )}
); }