import { useEffect, useState } from "react"; type ResetLinkModalProps = { variant?: "invite" | "reset"; email: string; resetLink: string; expiresAt: string; onClose: () => void; }; export default function ResetLinkModal({ variant = "reset", email, resetLink, expiresAt, onClose }: ResetLinkModalProps) { const [copied, setCopied] = useState(false); useEffect(() => { const handleKey = (event: KeyboardEvent) => { if (event.key === "Escape") { onClose(); } }; window.addEventListener("keydown", handleKey); return () => window.removeEventListener("keydown", handleKey); }, [onClose]); const handleCopy = async () => { try { await navigator.clipboard.writeText(resetLink); setCopied(true); window.setTimeout(() => setCopied(false), 2000); } catch { // Fallback: select the field so the user can copy manually. setCopied(false); } }; const isInvite = variant === "invite"; return (
{isInvite ? <>Share this one-time setup link for {email}. The mailbox will only be created after the user chooses a password.> : <>No email was sent for {email}. Share this one-time link yourself.>}
This link expires at {expiresAt} and becomes invalid after first use.