import { Link, Text } from '@react-email/components' import { baseStyles } from '@/components/emails/_styles' import { EmailLayout } from '@/components/emails/components' import { getBrandConfig } from '@/ee/whitelabeling' interface WorkspaceInvitation { workspaceId: string workspaceName: string permission: 'admin' | 'write' | 'read' } interface BatchInvitationEmailProps { inviterName: string organizationName: string organizationRole: 'admin' | 'member' workspaceInvitations: WorkspaceInvitation[] acceptUrl: string } const getPermissionLabel = (permission: string) => { switch (permission) { case 'admin': return 'Admin (full access)' case 'write': return 'Editor (can edit workflows)' case 'read': return 'Viewer (read-only access)' default: return permission } } const getRoleLabel = (role: string) => { switch (role) { case 'admin': return 'Admin' case 'member': return 'Member' default: return role } } const EMPTY_INVITATIONS: WorkspaceInvitation[] = [] export function BatchInvitationEmail({ inviterName = 'Someone', organizationName = 'the team', organizationRole = 'member', workspaceInvitations = EMPTY_INVITATIONS, acceptUrl, }: BatchInvitationEmailProps) { const brand = getBrandConfig() const hasWorkspaces = workspaceInvitations.length > 0 return ( Hello, {inviterName} has invited you to join {organizationName}{' '} on {brand.name}. {/* Team Role Information */} Team Role: {getRoleLabel(organizationRole)} {organizationRole === 'admin' ? "As a Team Admin, you'll be able to manage team members, billing, and workspace access." : "As a Team Member, you'll have access to shared team billing and can be invited to workspaces."} {/* Workspace Invitations */} {hasWorkspaces && ( <> Workspace Access ({workspaceInvitations.length} workspace {workspaceInvitations.length !== 1 ? 's' : ''}): {workspaceInvitations.map((ws) => ( {ws.workspaceName} - {getPermissionLabel(ws.permission)} ))} )} Accept Invitation {/* Divider */}
Invitation expires in 7 days. If unexpected, you can ignore this email. ) } export default BatchInvitationEmail