/** * Source-of-truth: password-reset email template. * * Auth templates manage their own full HTML (no shared emailLayout wrapper). * The password-reset template uses CSS class-based styling with

${c.headerTitle}

${c.headerSubtitle}

${c.greeting}

${c.intro}

${c.securityTitle}

${c.securityRequested}

${c.securityEmail}

${c.securityValid}

${c.resetPrompt}

${c.buttonText}

${c.linkInstructions}

${c.warningTitle}

${c.nextTitle}

  1. ${c.next1}
  2. ${c.next2}
  3. ${c.next3}
  4. ${c.next4}
  5. ${c.next5}

${c.helpTitle}

${c.helpText}

${c.helpContact}

`; } function buildText(c) { return `${c.textSubject} ${c.greeting} ${c.intro.replace(/<[^>]+>/g, '')} ${c.textSecurityHeader} ${c.textSecurityRequested} ${c.textSecurityValid} ${c.textResetPrompt} ${c.textWarningHeader} ${c.textWarning1} ${c.textWarning2} ${c.textWarning3} ${c.textWarning4} ${c.textNextHeader} ${c.textNext1} ${c.textNext2} ${c.textNext3} ${c.textNext4} ${c.textNext5} ${c.textHelp} --- ${c.textFooter}`; } function getTemplate() { return { templateName: TEMPLATE_NAME, subtypeName: SUBTYPE_NAME, translations: Object.entries(COPY).map(([lang, copy]) => ({ language: lang, subject: copy.subject, htmlContent: buildHtml(copy), textContent: buildText(copy), })), }; } module.exports = { TEMPLATE_NAME, SUBTYPE_NAME, getTemplate };