Настройки
This commit is contained in:
@@ -7,13 +7,14 @@ 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.ChatBubble
|
||||
import androidx.compose.material.icons.filled.People
|
||||
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
|
||||
@@ -35,25 +36,13 @@ fun GlassNavigationBar(
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(horizontal = 24.dp, vertical = 16.dp)
|
||||
.height(72.dp)
|
||||
.padding(horizontal = 16.dp, vertical = 12.dp)
|
||||
.height(64.dp)
|
||||
.clip(RoundedCornerShape(32.dp))
|
||||
.background(
|
||||
Brush.verticalGradient(
|
||||
colors = listOf(
|
||||
MaterialTheme.colorScheme.surface.copy(alpha = 0.7f),
|
||||
MaterialTheme.colorScheme.surface.copy(alpha = 0.5f)
|
||||
)
|
||||
)
|
||||
)
|
||||
.background(Color(0xFF1C1C1E).copy(alpha = 0.95f))
|
||||
.border(
|
||||
1.dp,
|
||||
Brush.verticalGradient(
|
||||
colors = listOf(
|
||||
Color.White.copy(alpha = 0.2f),
|
||||
Color.Transparent
|
||||
)
|
||||
),
|
||||
0.5.dp,
|
||||
Color.White.copy(alpha = 0.1f),
|
||||
RoundedCornerShape(32.dp)
|
||||
),
|
||||
contentAlignment = Alignment.Center
|
||||
@@ -64,13 +53,13 @@ fun GlassNavigationBar(
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
NavItem(
|
||||
icon = Icons.Default.ChatBubble,
|
||||
icon = Icons.Default.QuestionAnswer,
|
||||
label = stringResource(R.string.chats),
|
||||
isSelected = currentRoute == "chat_list",
|
||||
onClick = { onNavigate("chat_list") }
|
||||
)
|
||||
NavItem(
|
||||
icon = Icons.Default.People,
|
||||
icon = Icons.Default.AccountCircle,
|
||||
label = stringResource(R.string.contacts_tab),
|
||||
isSelected = currentRoute == "contacts",
|
||||
onClick = { onNavigate("contacts") }
|
||||
@@ -93,62 +82,70 @@ fun GlassNavigationBar(
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun NavItem(
|
||||
private fun RowScope.NavItem(
|
||||
icon: ImageVector,
|
||||
label: String,
|
||||
isSelected: Boolean,
|
||||
onClick: () -> Unit
|
||||
) {
|
||||
val contentColor = if (isSelected) MaterialTheme.colorScheme.primary else MaterialTheme.colorScheme.onSurfaceVariant
|
||||
val backgroundColor = if (isSelected) MaterialTheme.colorScheme.primary.copy(alpha = 0.1f) else Color.Transparent
|
||||
|
||||
val contentColor = if (isSelected) Color(0xFF3390EC) else Color(0xFF94A3B8)
|
||||
Column(
|
||||
modifier = Modifier
|
||||
.clip(RoundedCornerShape(20.dp))
|
||||
.background(backgroundColor)
|
||||
.weight(1f)
|
||||
.clickable(onClick = onClick)
|
||||
.padding(horizontal = 12.dp, vertical = 8.dp),
|
||||
.padding(vertical = 4.dp),
|
||||
horizontalAlignment = Alignment.CenterHorizontally,
|
||||
verticalArrangement = Arrangement.Center
|
||||
) {
|
||||
Icon(icon, contentDescription = label, tint = contentColor, modifier = Modifier.size(24.dp))
|
||||
Text(text = label, color = contentColor, fontSize = 10.sp, modifier = Modifier.padding(top = 2.dp))
|
||||
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 ProfileNavItem(
|
||||
private fun RowScope.ProfileNavItem(
|
||||
avatarUrl: String?,
|
||||
username: String,
|
||||
isSelected: Boolean,
|
||||
onClick: () -> Unit
|
||||
) {
|
||||
val borderColor = if (isSelected) MaterialTheme.colorScheme.primary else Color.Transparent
|
||||
val contentColor = if (isSelected) Color(0xFF3390EC) else Color(0xFF94A3B8)
|
||||
|
||||
Column(
|
||||
modifier = Modifier
|
||||
.clip(RoundedCornerShape(20.dp))
|
||||
.weight(1f)
|
||||
.clickable(onClick = onClick)
|
||||
.padding(horizontal = 12.dp, vertical = 8.dp),
|
||||
.padding(vertical = 4.dp),
|
||||
horizontalAlignment = Alignment.CenterHorizontally,
|
||||
verticalArrangement = Arrangement.Center
|
||||
) {
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.size(28.dp)
|
||||
.border(2.dp, borderColor, CircleShape)
|
||||
.padding(2.dp)
|
||||
.size(26.dp)
|
||||
.clip(CircleShape)
|
||||
) {
|
||||
AppAvatar(
|
||||
url = avatarUrl,
|
||||
name = username,
|
||||
size = 24.dp
|
||||
size = 26.dp
|
||||
)
|
||||
}
|
||||
Text(
|
||||
text = stringResource(R.string.profile_tab),
|
||||
color = if (isSelected) MaterialTheme.colorScheme.primary else MaterialTheme.colorScheme.onSurfaceVariant,
|
||||
color = contentColor,
|
||||
fontSize = 10.sp,
|
||||
fontWeight = if (isSelected) FontWeight.Bold else FontWeight.Normal,
|
||||
modifier = Modifier.padding(top = 2.dp)
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user