"use client"; import * as React from "react"; import { cn } from "./lib/utils"; export interface InviteModalProps { open: boolean; onOpenChange: (open: boolean) => void; roles?: string[]; onSend?: (email: string, role: string) => void; } /** Team member invite modal: email + role selector + dispatch state. */ export function InviteModal({ open, onOpenChange, roles = ["admin", "editor", "member"], onSend }: InviteModalProps) { const [email, setEmail] = React.useState(""); const [role, setRole] = React.useState(roles[roles.length - 1]); const [sent, setSent] = React.useState(false); const valid = /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email); React.useEffect(() => { if (!open) return; const handleKeyDown = (event: KeyboardEvent) => { if (event.key === "Escape") onOpenChange(false); }; document.addEventListener("keydown", handleKeyDown); return () => document.removeEventListener("keydown", handleKeyDown); }, [open, onOpenChange]); if (!open) return null; return (
An invitation email will be dispatched immediately.
Invitation sent
{email}