package core.presentation.components import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.size import androidx.compose.material3.* import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Bookmark import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import coil.compose.AsyncImage import androidx.compose.foundation.shape.RoundedCornerShape import core.presentation.theme.SoftSquareShape @Composable fun AppAvatar( url: String?, name: String, size: Dp = 48.dp, modifier: Modifier = Modifier ) { val isSavedMessages = remember(name) { name.equals("Избранное", ignoreCase = true) || name.equals("Saved Messages", ignoreCase = true) } val initials = remember(name) { if (isSavedMessages) "" else { val words = name.trim().split("\\s+".toRegex()) if (words.size >= 2) { (words[0].take(1) + words[1].take(1)).uppercase() } else if (name.length >= 2) { name.take(2).uppercase() } else { name.take(1).uppercase() } } } val avatarColor = Color(0xFF4AA6F3) // Premium Telegram Blue (Web) val cornerRadius = remember(size) { if (size <= 32.dp) (size.value * 0.25).dp else 12.dp } Box( modifier = modifier .size(size) .clip(RoundedCornerShape(cornerRadius)) .background(avatarColor), contentAlignment = Alignment.Center ) { if (!url.isNullOrBlank()) { AsyncImage( model = url, contentDescription = name, modifier = Modifier.size(size), contentScale = ContentScale.Crop ) } else if (isSavedMessages) { Icon( imageVector = Icons.Default.Bookmark, contentDescription = null, tint = Color.White, modifier = Modifier.size((size.value * 0.5).dp) ) } else { Text( text = initials, color = Color.White, fontSize = (size.value * 0.4).sp, fontWeight = androidx.compose.ui.text.font.FontWeight.Bold, style = MaterialTheme.typography.titleMedium ) } } }