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()}.
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}
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.`
}