react-email
Version:
A live preview of your emails right in your browser.
37 lines (35 loc) • 912 B
text/typescript
const digitToNameMap = {
'0': 'zero',
'1': 'one',
'2': 'two',
'3': 'three',
'4': 'four',
'5': 'five',
'6': 'six',
'7': 'seven',
'8': 'eight',
'9': 'nine',
} as const;
/**
* Replaces special characters to avoid problems on email clients.
*
* @param className - This should not come with any escaped charcters, it should come the same
* as is on the `className` attribute on React elements.
*/
export function sanitizeClassName(className: string) {
return className
.replaceAll('+', 'plus')
.replaceAll('[', '')
.replaceAll('%', 'pc')
.replaceAll(']', '')
.replaceAll('(', '')
.replaceAll(')', '')
.replaceAll('!', 'imprtnt')
.replaceAll('>', 'gt')
.replaceAll('<', 'lt')
.replaceAll('=', 'eq')
.replace(/^[0-9]/, (digit) => {
return digitToNameMap[digit as keyof typeof digitToNameMap];
})
.replace(/[^a-zA-Z0-9\-_]/g, '_');
}