import { getBranding } from '@/lib/branding/service' export interface InviteEmailData { companyName: string inviterEmail: string inviteUrl: string /** * Brand override (WL-13): the app name of the brand of the company the * invite concerns. Absent = platform default from getBranding(), which * keeps unbranded companies byte-identical to before. */ appName?: string } export function generateInviteEmailSubject(data: InviteEmailData): string { const appName = data.appName ?? getBranding().appName return `Du har bjudits in till ${data.companyName} på ${appName.toLowerCase()}` } export function generateInviteEmailHtml(data: InviteEmailData): string { const { companyName, inviterEmail, inviteUrl } = data const appName = data.appName ?? getBranding().appName return ` Inbjudan till ${companyName}

${appName.toUpperCase()}

Du har blivit inbjuden

${inviterEmail} har bjudit in dig till ${companyName} på ${appName.toLowerCase()}.

Acceptera inbjudan

Länken är giltig i 7 dagar. Om du inte förväntade dig denna inbjudan kan du ignorera detta meddelande.

` } export function generateInviteEmailText(data: InviteEmailData): string { const appName = data.appName ?? getBranding().appName return `Du har bjudits in till ${data.companyName} på ${appName.toLowerCase()} av ${data.inviterEmail}. Acceptera inbjudan: ${data.inviteUrl} Länken är giltig i 7 dagar.` } // ============================================================================= // Team invite email templates // ============================================================================= export interface TeamInviteEmailData { inviterEmail: string inviteUrl: string /** * Brand override (WL-13): the app name of the byrå team's brand. Absent = * platform default from getBranding(), which keeps brandless teams * byte-identical to before. */ appName?: string } export function generateTeamInviteEmailSubject(data?: Pick): string { // Branded byrå: the invite is to THE BYRÅ, by name and in its own casing // ("Du har blivit inbjuden till Willem"), no platform wording. Brandless // teams keep the platform phrasing byte-identical. if (data?.appName) { return `Du har blivit inbjuden till ${data.appName}` } return `Du har bjudits in till ett team på ${getBranding().appName.toLowerCase()}` } export function generateTeamInviteEmailHtml(data: TeamInviteEmailData): string { const { inviterEmail, inviteUrl } = data const appName = data.appName ?? getBranding().appName // Branded byrå: headline and body name the byrå itself; brandless teams // keep the generic team wording. const headline = data.appName ? `Du har blivit inbjuden till ${data.appName}` : 'Du har blivit inbjuden till ett team' const bodyLine = data.appName ? `${inviterEmail} har bjudit in dig till ${data.appName}. Du får tillgång till alla företag i teamet.` : `${inviterEmail} har bjudit in dig som konsult. Du får tillgång till alla företag i teamet.` return ` Inbjudan till team

${appName.toUpperCase()}

${headline}

${bodyLine}

Acceptera inbjudan

Länken är giltig i 7 dagar. Om du inte förväntade dig denna inbjudan kan du ignorera detta meddelande.

` } export function generateTeamInviteEmailText(data: TeamInviteEmailData): string { if (data.appName) { return `Du har blivit inbjuden till ${data.appName} av ${data.inviterEmail}. Du får tillgång till alla företag i teamet. Acceptera inbjudan: ${data.inviteUrl} Länken är giltig i 7 dagar.` } return `Du har bjudits in som konsult till ett team på ${getBranding().appName.toLowerCase()} av ${data.inviterEmail}. Du får tillgång till alla företag i teamet. Acceptera inbjudan: ${data.inviteUrl} Länken är giltig i 7 dagar.` }