import { View, Text, Image, ViewStyle, ImageStyle } from 'react-native' const AVATAR_PALETTES = [ { bg: '#003B7E', text: '#FFFFFF' }, { bg: '#1D4ED8', text: '#FFFFFF' }, { bg: '#059669', text: '#FFFFFF' }, { bg: '#4338CA', text: '#FFFFFF' }, { bg: '#B45309', text: '#FFFFFF' }, { bg: '#0F766E', text: '#FFFFFF' }, ] function getInitials(name: string): string { return name .split(' ') .slice(0, 2) .map((w) => w[0]?.toUpperCase() ?? '') .join('') } function getPalette(name: string) { const index = name.charCodeAt(0) % AVATAR_PALETTES.length return AVATAR_PALETTES[index] } interface AvatarProps { name: string imageUrl?: string size?: number shadow?: boolean } export function Avatar({ name, imageUrl, size = 48, shadow = false }: AvatarProps) { const initials = getInitials(name) const palette = getPalette(name) const viewShadowStyle: ViewStyle = shadow ? { shadowColor: '#000', shadowOffset: { width: 0, height: 2 }, shadowOpacity: 0.12, shadowRadius: 8, elevation: 3, } : {} const imageShadowStyle: ImageStyle = shadow ? { shadowColor: '#000', shadowOffset: { width: 0, height: 2 }, shadowOpacity: 0.12, shadowRadius: 8, } : {} if (imageUrl) { return ( ) } return ( {initials} ) }