import { useEffect, useState } from "react"; import { AppFormDialog, dialogPrimaryButtonClass, dialogSecondaryButtonClass, } from "~/components/common/AppFormDialog"; import { Button } from "~/components/ui/button"; import { Input } from "~/components/ui/input"; import { formFieldClass, formHintClass, formInputClass, modalFormClass, } from "../platform/modalUi"; type ResetPasswordDialogProps = { open: boolean; displayName: string; username: string; saving: boolean; onSubmit: (newPassword: string) => Promise; onClose: () => void; }; export function ResetPasswordDialog({ open, displayName, username, saving, onSubmit, onClose, }: ResetPasswordDialogProps) { const [password, setPassword] = useState(""); const [confirm, setConfirm] = useState(""); const [error, setError] = useState(null); useEffect(() => { if (!open) return; setPassword(""); setConfirm(""); setError(null); }, [open]); const handleSubmit = async (event: React.FormEvent) => { event.preventDefault(); if (password.length < 8 || password.length > 72) { setError("密码长度需为 8~72 字符"); return; } if (password !== confirm) { setError("两次输入的密码不一致"); return; } setError(null); await onSubmit(password); }; return ( { if (!nextOpen) onClose(); }} eyebrow="SECURITY" title="重置密码" >
void handleSubmit(event)} >

正在为 {displayName} ({username})设置新密码。对方需使用新密码重新登录。

{error ? (

{error}

) : null}
); }