An invite dialog that handles the real cases: paste a list and it becomes chips, bad addresses turn red, existing members and pending invites are caught, each person gets a role, a seat meter warns before you go over the plan, an optional message, a shareable invite link with expiry and reset, and a success list.
pnpm dlx shadcn@latest add "https://reactframe.com/r/invite-members-modal.json"