import * as z from 'zod'; import { defineEmail } from '../send'; import { getDefaultTemplate } from '../templates'; import { ZEmailBranding } from '../core/branding'; import { escapeHtml } from '../utils/functions/email-helpers'; export const inviteTeacherEmail = defineEmail({ id: 'inviteTeacher', subject: 'You have been invited to join an organization on ClassroomIO', schema: z.object({ email: z.string().email(), orgName: z.string().min(1), orgSiteName: z.string().min(1), roleName: z.string().min(1), inviterName: z.string().min(1).optional(), expiresAt: z.string().min(1), inviteLink: z.url(), branding: ZEmailBranding }), render: (fields) => { const orgName = escapeHtml(fields.orgName); const roleName = escapeHtml(fields.roleName); const inviterName = fields.inviterName ? escapeHtml(fields.inviterName) : undefined; const inviteLink = escapeHtml(fields.inviteLink); const expiresAt = escapeHtml(fields.expiresAt); const invitationLine = inviterName ? `

${inviterName} invited you to join ${orgName} on ClassroomIO as ${roleName}.

` : `

You have been invited to join ${orgName} on ClassroomIO as ${roleName}.

`; const content = `

Hi there,

${invitationLine}

This invite expires on ${expiresAt} (UTC).

Accept Invitation
`; return getDefaultTemplate(content, fields.branding); } });