pluralchat / src /lib /utils /personaColors.ts
Andrew
feat(utils): add persona color generation utility
f3975dd
/**
* Generate a consistent color for a persona based on their ID
* Uses a rainbow spectrum for variety
*/
export function getPersonaColor(personaId: string): string {
// Simple hash function to get a number from persona ID
let hash = 0;
for (let i = 0; i < personaId.length; i++) {
hash = personaId.charCodeAt(i) + ((hash << 5) - hash);
hash = hash & hash; // Convert to 32bit integer
}
// Use hash to pick from a set of distinct colors
const colors = [
"#ef4444", // red
"#f97316", // orange
"#f59e0b", // amber
"#eab308", // yellow
"#84cc16", // lime
"#22c55e", // green
"#10b981", // emerald
"#14b8a6", // teal
"#06b6d4", // cyan
"#0ea5e9", // sky
"#3b82f6", // blue
"#6366f1", // indigo
"#8b5cf6", // violet
"#a855f7", // purple
"#d946ef", // fuchsia
"#ec4899", // pink
"#f43f5e", // rose
];
const index = Math.abs(hash) % colors.length;
return colors[index];
}
/**
* User message color
*/
export const USER_COLOR = "#9ca3af"; // gray-400