name ?? $record->email ?? 'U'; $initials = $this->getInitials($name); // Generate a consistent color based on the name $hash = crc32($name); $hue = $hash % 360; // Generate SVG avatar $svg = $this->generateSvg($initials, $hue); return 'data:image/svg+xml;base64,' . base64_encode($svg); } private function getInitials(string $name): string { $words = preg_split('/[\s@._-]+/', trim($name)); $initials = ''; foreach ($words as $word) { if (!empty($word)) { $initials .= mb_strtoupper(mb_substr($word, 0, 1)); if (mb_strlen($initials) >= 2) { break; } } } return $initials ?: 'U'; } private function generateSvg(string $initials, int $hue): string { $bgColor = "hsl({$hue}, 50%, 50%)"; return << {$initials} SVG; } }