ultisuite-client/lib/sender-display.ts
2026-05-15 17:40:17 +02:00

29 lines
961 B
TypeScript

const AVATAR_COLORS = [
"#1a73e8", "#e8710a", "#1e8e3e", "#d93025", "#9334e6",
"#185abc", "#b06000", "#137333", "#a50e0e", "#7627bb",
"#0d652d", "#c5221f", "#e37400", "#1967d2", "#8430ce",
]
export function avatarColor(name: string): string {
let hash = 0
for (let i = 0; i < name.length; i++) {
hash = name.charCodeAt(i) + ((hash << 5) - hash)
}
return AVATAR_COLORS[Math.abs(hash) % AVATAR_COLORS.length]!
}
export function senderInitial(name: string): string {
const clean = name.replace(/[[\].,]/g, "").trim()
return clean.charAt(0).toUpperCase() || "?"
}
export function cleanSenderName(raw: string): string {
return raw.split(",")[0]?.trim().replace(/\.\./g, " ").replace(/\[.*?\]/g, "").trim() || raw
}
export function resolveSenderEmail(displayName: string, explicit?: string): string {
if (explicit) return explicit
const n = cleanSenderName(displayName)
return `${n.toLowerCase().replace(/\s+/g, ".")}@example.com`
}