package core.presentation.components import androidx.compose.foundation.background import androidx.compose.foundation.border import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.AccountCircle import androidx.compose.material.icons.filled.QuestionAnswer import androidx.compose.material.icons.filled.Settings import androidx.compose.material3.* import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.draw.blur import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import ru.knot.messager.R @Composable fun GlassNavigationBar( currentRoute: String, onNavigate: (String) -> Unit, userAvatarUrl: String? = null, username: String = "" ) { // Контейнер с эффектом стекла Box( modifier = Modifier .fillMaxWidth() .padding(horizontal = 16.dp, vertical = 12.dp) .height(64.dp) .clip(RoundedCornerShape(32.dp)) .background(Color(0xFF1C1C1E).copy(alpha = 0.95f)) .border( 0.5.dp, Color.White.copy(alpha = 0.1f), RoundedCornerShape(32.dp) ), contentAlignment = Alignment.Center ) { Row( modifier = Modifier.fillMaxSize(), horizontalArrangement = Arrangement.SpaceEvenly, verticalAlignment = Alignment.CenterVertically ) { NavItem( icon = Icons.Default.QuestionAnswer, label = stringResource(R.string.chats), isSelected = currentRoute == "chat_list", onClick = { onNavigate("chat_list") } ) NavItem( icon = Icons.Default.AccountCircle, label = stringResource(R.string.contacts_tab), isSelected = currentRoute == "contacts", onClick = { onNavigate("contacts") } ) NavItem( icon = Icons.Default.Settings, label = stringResource(R.string.settings), isSelected = currentRoute == "settings", onClick = { onNavigate("settings") } ) // Профиль с аватаром ProfileNavItem( avatarUrl = userAvatarUrl, username = username, isSelected = currentRoute.startsWith("profile"), onClick = { onNavigate("profile") } ) } } } @Composable private fun RowScope.NavItem( icon: ImageVector, label: String, isSelected: Boolean, onClick: () -> Unit ) { val contentColor = if (isSelected) Color(0xFF3390EC) else Color(0xFF94A3B8) Column( modifier = Modifier .weight(1f) .clickable(onClick = onClick) .padding(vertical = 4.dp), horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Center ) { Icon( icon, contentDescription = label, tint = contentColor, modifier = Modifier.size(26.dp) ) Text( text = label, color = contentColor, fontSize = 10.sp, fontWeight = if (isSelected) FontWeight.Bold else FontWeight.Normal, modifier = Modifier.padding(top = 2.dp) ) } } @Composable private fun RowScope.ProfileNavItem( avatarUrl: String?, username: String, isSelected: Boolean, onClick: () -> Unit ) { val contentColor = if (isSelected) Color(0xFF3390EC) else Color(0xFF94A3B8) Column( modifier = Modifier .weight(1f) .clickable(onClick = onClick) .padding(vertical = 4.dp), horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Center ) { Box( modifier = Modifier .size(26.dp) .clip(CircleShape) ) { AppAvatar( url = avatarUrl, name = username, size = 26.dp ) } Text( text = stringResource(R.string.profile_tab), color = contentColor, fontSize = 10.sp, fontWeight = if (isSelected) FontWeight.Bold else FontWeight.Normal, modifier = Modifier.padding(top = 2.dp) ) } }