import { formatDistanceToNow, parseISO, addYears, differenceInDays } from 'date-fns'; // Deterministic avatar color from name hash export const avatarColors = [ 'bg-rose-500/20 text-rose-400', 'bg-blue-500/20 text-blue-400', 'bg-purple-500/20 text-purple-400', 'bg-pink-500/20 text-pink-400', 'bg-teal-500/20 text-teal-400', 'bg-orange-500/20 text-orange-400', 'bg-green-500/20 text-green-400', 'bg-amber-500/20 text-amber-400', ]; export function getInitials(name: string): string { const parts = name.trim().split(/\s+/); if (parts.length >= 2) return (parts[0][0] + parts[parts.length - 1][0]).toUpperCase(); return name.slice(0, 2).toUpperCase(); } export function getAvatarColor(name: string): string { let hash = 0; for (let i = 0; i < name.length; i++) { hash = ((hash << 5) - hash + name.charCodeAt(i)) | 0; } return avatarColors[Math.abs(hash) % avatarColors.length]; } export function formatUpdatedAt(updatedAt: string): string { try { return `Updated ${formatDistanceToNow(parseISO(updatedAt), { addSuffix: true })}`; } catch { return ''; } } export function getNextBirthday(birthday: string): Date { const today = new Date(); const parsed = parseISO(birthday); const thisYear = new Date(today.getFullYear(), parsed.getMonth(), parsed.getDate()); if (thisYear < today) { return addYears(thisYear, 1); } return thisYear; } export function getDaysUntilBirthday(birthday: string): number { const next = getNextBirthday(birthday); return differenceInDays(next, new Date()); } export function splitName(name: string): { firstName: string; lastName: string } { const idx = name.indexOf(' '); if (idx === -1) return { firstName: name, lastName: '' }; return { firstName: name.slice(0, idx), lastName: name.slice(idx + 1) }; }