feat: Replace Material Icons with Tabler Icons across multiple screens

This commit is contained in:
2026-01-24 21:51:50 +05:00
parent 14628e11a2
commit 83531a5c57
15 changed files with 128 additions and 136 deletions

View File

@@ -82,6 +82,9 @@ dependencies {
// Icons extended // Icons extended
implementation("androidx.compose.material:material-icons-extended:1.5.4") implementation("androidx.compose.material:material-icons-extended:1.5.4")
// Tabler Icons for Compose
implementation("br.com.devsrsouza.compose.icons:tabler-icons:1.1.0")
// Lottie for animations // Lottie for animations
implementation("com.airbnb.android:lottie-compose:6.1.0") implementation("com.airbnb.android:lottie-compose:6.1.0")

View File

@@ -6,9 +6,9 @@ import androidx.compose.foundation.*
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.*
import androidx.compose.material3.* import androidx.compose.material3.*
import compose.icons.TablerIcons
import compose.icons.tablericons.*
import androidx.compose.runtime.* import androidx.compose.runtime.*
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
@@ -106,7 +106,7 @@ fun SetPasswordScreen(
) { ) {
IconButton(onClick = onBack, enabled = !isCreating) { IconButton(onClick = onBack, enabled = !isCreating) {
Icon( Icon(
imageVector = Icons.Default.ArrowBack, imageVector = TablerIcons.ArrowLeft,
contentDescription = "Back", contentDescription = "Back",
tint = textColor.copy(alpha = 0.6f) tint = textColor.copy(alpha = 0.6f)
) )
@@ -166,7 +166,7 @@ fun SetPasswordScreen(
contentAlignment = Alignment.Center contentAlignment = Alignment.Center
) { ) {
Icon( Icon(
Icons.Default.Lock, TablerIcons.Lock,
contentDescription = null, contentDescription = null,
tint = PrimaryBlue, tint = PrimaryBlue,
modifier = Modifier.size(iconInnerSize) modifier = Modifier.size(iconInnerSize)
@@ -227,8 +227,8 @@ fun SetPasswordScreen(
IconButton(onClick = { passwordVisible = !passwordVisible }) { IconButton(onClick = { passwordVisible = !passwordVisible }) {
Icon( Icon(
imageVector = imageVector =
if (passwordVisible) Icons.Default.VisibilityOff if (passwordVisible) TablerIcons.EyeOff
else Icons.Default.Visibility, else TablerIcons.Eye,
contentDescription = contentDescription =
if (passwordVisible) "Hide" else "Show" if (passwordVisible) "Hide" else "Show"
) )
@@ -280,7 +280,7 @@ fun SetPasswordScreen(
else -> Color(0xFF4CAF50) else -> Color(0xFF4CAF50)
} }
Icon( Icon(
imageVector = Icons.Default.Shield, imageVector = TablerIcons.Shield,
contentDescription = null, contentDescription = null,
tint = strengthColor, tint = strengthColor,
modifier = Modifier.size(16.dp) modifier = Modifier.size(16.dp)
@@ -306,7 +306,7 @@ fun SetPasswordScreen(
verticalAlignment = Alignment.Top verticalAlignment = Alignment.Top
) { ) {
Icon( Icon(
imageVector = Icons.Default.Warning, imageVector = TablerIcons.AlertTriangle,
contentDescription = null, contentDescription = null,
tint = Color(0xFFE53935), tint = Color(0xFFE53935),
modifier = Modifier.size(16.dp) modifier = Modifier.size(16.dp)
@@ -353,8 +353,8 @@ fun SetPasswordScreen(
Icon( Icon(
imageVector = imageVector =
if (confirmPasswordVisible) if (confirmPasswordVisible)
Icons.Default.VisibilityOff TablerIcons.EyeOff
else Icons.Default.Visibility, else TablerIcons.Eye,
contentDescription = contentDescription =
if (confirmPasswordVisible) "Hide" else "Show" if (confirmPasswordVisible) "Hide" else "Show"
) )
@@ -394,7 +394,7 @@ fun SetPasswordScreen(
verticalAlignment = Alignment.CenterVertically verticalAlignment = Alignment.CenterVertically
) { ) {
val matchIcon = val matchIcon =
if (passwordsMatch) Icons.Default.Check else Icons.Default.Close if (passwordsMatch) TablerIcons.Check else TablerIcons.X
val matchColor = val matchColor =
if (passwordsMatch) Color(0xFF4CAF50) else Color(0xFFE53935) if (passwordsMatch) Color(0xFF4CAF50) else Color(0xFFE53935)
val matchText = val matchText =
@@ -446,7 +446,7 @@ fun SetPasswordScreen(
verticalAlignment = Alignment.Top verticalAlignment = Alignment.Top
) { ) {
Icon( Icon(
imageVector = Icons.Default.Info, imageVector = TablerIcons.InfoCircle,
contentDescription = null, contentDescription = null,
tint = PrimaryBlue, tint = PrimaryBlue,
modifier = Modifier.size(20.dp) modifier = Modifier.size(20.dp)

View File

@@ -9,9 +9,10 @@ import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.material.icons.Icons import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.filled.*
import androidx.compose.material3.* import androidx.compose.material3.*
import compose.icons.TablerIcons
import compose.icons.tablericons.*
import androidx.compose.runtime.* import androidx.compose.runtime.*
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
@@ -430,7 +431,7 @@ fun UnlockScreen(
// Dropdown arrow with rotation (only show if multiple accounts) // Dropdown arrow with rotation (only show if multiple accounts)
if (accounts.size > 1) { if (accounts.size > 1) {
Icon( Icon(
imageVector = Icons.Default.KeyboardArrowDown, imageVector = TablerIcons.ChevronDown,
contentDescription = null, contentDescription = null,
tint = secondaryTextColor.copy(alpha = 0.6f), tint = secondaryTextColor.copy(alpha = 0.6f),
modifier = modifier =
@@ -488,7 +489,7 @@ fun UnlockScreen(
}, },
leadingIcon = { leadingIcon = {
Icon( Icon(
Icons.Default.Search, TablerIcons.Search,
contentDescription = null, contentDescription = null,
tint = secondaryTextColor.copy(alpha = 0.6f) tint = secondaryTextColor.copy(alpha = 0.6f)
) )
@@ -606,7 +607,7 @@ fun UnlockScreen(
if (isSelected) { if (isSelected) {
Icon( Icon(
Icons.Default.Check, TablerIcons.Check,
contentDescription = null, contentDescription = null,
tint = PrimaryBlue, tint = PrimaryBlue,
modifier = Modifier.size(20.dp) modifier = Modifier.size(20.dp)
@@ -657,8 +658,8 @@ fun UnlockScreen(
IconButton(onClick = { passwordVisible = !passwordVisible }) { IconButton(onClick = { passwordVisible = !passwordVisible }) {
Icon( Icon(
imageVector = imageVector =
if (passwordVisible) Icons.Default.VisibilityOff if (passwordVisible) TablerIcons.EyeOff
else Icons.Default.Visibility, else TablerIcons.Eye,
contentDescription = if (passwordVisible) "Hide" else "Show" contentDescription = if (passwordVisible) "Hide" else "Show"
) )
} }
@@ -771,7 +772,7 @@ fun UnlockScreen(
) )
} else { } else {
Icon( Icon(
imageVector = Icons.Default.LockOpen, imageVector = TablerIcons.LockOpen,
contentDescription = null, contentDescription = null,
modifier = Modifier.size(20.dp) modifier = Modifier.size(20.dp)
) )
@@ -791,7 +792,7 @@ fun UnlockScreen(
) { ) {
TextButton(onClick = onSwitchAccount) { TextButton(onClick = onSwitchAccount) {
Icon( Icon(
imageVector = Icons.Default.PersonAdd, imageVector = TablerIcons.UserPlus,
contentDescription = null, contentDescription = null,
tint = PrimaryBlue, tint = PrimaryBlue,
modifier = Modifier.size(20.dp) modifier = Modifier.size(20.dp)

View File

@@ -10,10 +10,9 @@ import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.*
import androidx.compose.material.icons.outlined.*
import androidx.compose.material3.* import androidx.compose.material3.*
import compose.icons.TablerIcons
import compose.icons.tablericons.*
import androidx.compose.runtime.* import androidx.compose.runtime.*
import androidx.compose.runtime.Immutable import androidx.compose.runtime.Immutable
import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.saveable.rememberSaveable
@@ -493,7 +492,7 @@ fun ChatsListScreen(
// 👤 Profile Section // 👤 Profile Section
DrawerMenuItemEnhanced( DrawerMenuItemEnhanced(
icon = Icons.Outlined.Person, icon = TablerIcons.User,
text = "My Profile", text = "My Profile",
iconColor = menuIconColor, iconColor = menuIconColor,
textColor = textColor, textColor = textColor,
@@ -507,7 +506,7 @@ fun ChatsListScreen(
// 📖 Saved Messages // 📖 Saved Messages
DrawerMenuItemEnhanced( DrawerMenuItemEnhanced(
icon = Icons.Outlined.Bookmark, icon = TablerIcons.Bookmark,
text = "Saved Messages", text = "Saved Messages",
iconColor = menuIconColor, iconColor = menuIconColor,
textColor = textColor, textColor = textColor,
@@ -528,7 +527,7 @@ fun ChatsListScreen(
// ⚙️ Settings // ⚙️ Settings
DrawerMenuItemEnhanced( DrawerMenuItemEnhanced(
icon = Icons.Outlined.Settings, icon = TablerIcons.Settings,
text = "Settings", text = "Settings",
iconColor = menuIconColor, iconColor = menuIconColor,
textColor = textColor, textColor = textColor,
@@ -544,11 +543,9 @@ fun ChatsListScreen(
DrawerMenuItemEnhanced( DrawerMenuItemEnhanced(
icon = icon =
if (isDarkTheme) if (isDarkTheme)
Icons.Outlined TablerIcons.Sun
.LightMode
else else
Icons.Outlined TablerIcons.Moon,
.DarkMode,
text = text =
if (isDarkTheme) if (isDarkTheme)
"Light Mode" "Light Mode"
@@ -573,7 +570,7 @@ fun ChatsListScreen(
// Logout // Logout
DrawerMenuItemEnhanced( DrawerMenuItemEnhanced(
icon = Icons.Outlined.Logout, icon = TablerIcons.Logout,
text = "Log Out", text = "Log Out",
iconColor = Color(0xFFFF4444), iconColor = Color(0xFFFF4444),
textColor = Color(0xFFFF4444), textColor = Color(0xFFFF4444),
@@ -654,8 +651,7 @@ fun ChatsListScreen(
} }
) { ) {
Icon( Icon(
Icons.Default TablerIcons.ArrowLeft,
.ArrowBack,
contentDescription = contentDescription =
"Back", "Back",
tint = tint =
@@ -675,8 +671,7 @@ fun ChatsListScreen(
} }
) { ) {
Icon( Icon(
Icons.Default TablerIcons.Menu2,
.Menu,
contentDescription = contentDescription =
"Menu", "Menu",
tint = tint =
@@ -785,8 +780,7 @@ fun ChatsListScreen(
.AUTHENTICATED .AUTHENTICATED
) { ) {
Icon( Icon(
Icons.Default TablerIcons.Search,
.Search,
contentDescription = contentDescription =
"Search", "Search",
tint = tint =
@@ -849,7 +843,7 @@ fun ChatsListScreen(
shape = CircleShape shape = CircleShape
) { ) {
Icon( Icon(
Icons.Default.Edit, TablerIcons.Edit,
contentDescription = "New Chat" contentDescription = "New Chat"
) )
} }
@@ -1290,7 +1284,7 @@ fun ChatItem(chat: Chat, isDarkTheme: Boolean, onClick: () -> Unit) {
Row(verticalAlignment = Alignment.CenterVertically) { Row(verticalAlignment = Alignment.CenterVertically) {
// Read status // Read status
Icon( Icon(
Icons.Default.DoneAll, TablerIcons.Checks,
contentDescription = null, contentDescription = null,
tint = PrimaryBlue, tint = PrimaryBlue,
modifier = Modifier.size(16.dp) modifier = Modifier.size(16.dp)
@@ -1325,7 +1319,7 @@ fun ChatItem(chat: Chat, isDarkTheme: Boolean, onClick: () -> Unit) {
// Pin icon // Pin icon
if (chat.isPinned) { if (chat.isPinned) {
Icon( Icon(
Icons.Default.PushPin, TablerIcons.Pin,
contentDescription = "Pinned", contentDescription = "Pinned",
tint = tint =
secondaryTextColor.copy( secondaryTextColor.copy(
@@ -1527,8 +1521,8 @@ fun SwipeableDialogItem(
Icon( Icon(
imageVector = imageVector =
if (isBlocked) if (isBlocked)
Icons.Default.LockOpen TablerIcons.LockOpen
else Icons.Default.Block, else TablerIcons.Ban,
contentDescription = contentDescription =
if (isBlocked) "Unblock" if (isBlocked) "Unblock"
else "Block", else "Block",
@@ -1566,7 +1560,7 @@ fun SwipeableDialogItem(
verticalArrangement = Arrangement.Center verticalArrangement = Arrangement.Center
) { ) {
Icon( Icon(
imageVector = Icons.Default.Delete, imageVector = TablerIcons.Trash,
contentDescription = "Delete", contentDescription = "Delete",
tint = Color.White, tint = Color.White,
modifier = Modifier.size(22.dp) modifier = Modifier.size(22.dp)
@@ -1736,7 +1730,7 @@ fun DialogItemContent(
contentAlignment = Alignment.Center contentAlignment = Alignment.Center
) { ) {
Icon( Icon(
Icons.Default.Bookmark, TablerIcons.Bookmark,
contentDescription = null, contentDescription = null,
tint = Color.White, tint = Color.White,
modifier = Modifier.size(24.dp) modifier = Modifier.size(24.dp)
@@ -1799,7 +1793,7 @@ fun DialogItemContent(
// галочки (прочитано) // галочки (прочитано)
if (dialog.isSavedMessages) { if (dialog.isSavedMessages) {
Icon( Icon(
imageVector = Icons.Default.DoneAll, imageVector = TablerIcons.Checks,
contentDescription = null, contentDescription = null,
tint = PrimaryBlue, tint = PrimaryBlue,
modifier = Modifier.size(16.dp) modifier = Modifier.size(16.dp)
@@ -1822,8 +1816,7 @@ fun DialogItemContent(
// ERROR - показываем иконку ошибки // ERROR - показываем иконку ошибки
Icon( Icon(
imageVector = imageVector =
Icons.Outlined TablerIcons.AlertCircle,
.ErrorOutline,
contentDescription = contentDescription =
"Sending failed", "Sending failed",
tint = tint =
@@ -1843,8 +1836,7 @@ fun DialogItemContent(
// галочки // галочки
Icon( Icon(
imageVector = imageVector =
Icons.Default TablerIcons.Checks,
.DoneAll,
contentDescription = null, contentDescription = null,
tint = PrimaryBlue, tint = PrimaryBlue,
modifier = modifier =
@@ -1860,7 +1852,7 @@ fun DialogItemContent(
// одна серая галочка // одна серая галочка
Icon( Icon(
imageVector = imageVector =
Icons.Default.Done, TablerIcons.Check,
contentDescription = null, contentDescription = null,
tint = tint =
secondaryTextColor secondaryTextColor
@@ -2025,7 +2017,7 @@ fun RequestsSection(count: Int, isDarkTheme: Boolean, onClick: () -> Unit) {
) )
Icon( Icon(
imageVector = Icons.Default.ChevronRight, imageVector = TablerIcons.ChevronRight,
contentDescription = "Open requests", contentDescription = "Open requests",
tint = arrowColor.copy(alpha = 0.6f), tint = arrowColor.copy(alpha = 0.6f),
modifier = Modifier.size(24.dp) modifier = Modifier.size(24.dp)
@@ -2168,8 +2160,8 @@ fun FcmLogsSection(logs: List<String>, isDarkTheme: Boolean, onClearLogs: () ->
) { ) {
Icon( Icon(
imageVector = imageVector =
if (expanded) Icons.Default.KeyboardArrowDown if (expanded) TablerIcons.ChevronDown
else Icons.Default.KeyboardArrowRight, else TablerIcons.ChevronRight,
contentDescription = null, contentDescription = null,
tint = accentColor, tint = accentColor,
modifier = Modifier.size(24.dp) modifier = Modifier.size(24.dp)

View File

@@ -11,8 +11,10 @@ import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons import compose.icons.TablerIcons
import androidx.compose.material.icons.filled.* import compose.icons.tablericons.ArrowLeft
import compose.icons.tablericons.X
import compose.icons.tablericons.CircleCheck
import androidx.compose.material3.* import androidx.compose.material3.*
import androidx.compose.runtime.* import androidx.compose.runtime.*
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
@@ -139,7 +141,7 @@ fun SearchScreen(
} }
) { ) {
Icon( Icon(
Icons.Default.ArrowBack, TablerIcons.ArrowLeft,
contentDescription = "Back", contentDescription = "Back",
tint = textColor.copy(alpha = 0.6f) tint = textColor.copy(alpha = 0.6f)
) )
@@ -199,7 +201,7 @@ fun SearchScreen(
) { ) {
IconButton(onClick = { searchViewModel.clearSearchQuery() }) { IconButton(onClick = { searchViewModel.clearSearchQuery() }) {
Icon( Icon(
Icons.Default.Clear, TablerIcons.X,
contentDescription = "Clear", contentDescription = "Clear",
tint = secondaryTextColor.copy(alpha = 0.6f) tint = secondaryTextColor.copy(alpha = 0.6f)
) )
@@ -372,7 +374,7 @@ private fun RecentUserItem(
if (user.verified != 0) { if (user.verified != 0) {
Spacer(modifier = Modifier.width(4.dp)) Spacer(modifier = Modifier.width(4.dp))
Icon( Icon(
Icons.Default.Verified, TablerIcons.CircleCheck,
contentDescription = "Verified", contentDescription = "Verified",
tint = PrimaryBlue, tint = PrimaryBlue,
modifier = Modifier.size(16.dp) modifier = Modifier.size(16.dp)
@@ -393,7 +395,7 @@ private fun RecentUserItem(
// Remove button // Remove button
IconButton(onClick = onRemove, modifier = Modifier.size(40.dp)) { IconButton(onClick = onRemove, modifier = Modifier.size(40.dp)) {
Icon( Icon(
Icons.Default.Close, TablerIcons.X,
contentDescription = "Remove", contentDescription = "Remove",
tint = secondaryTextColor.copy(alpha = 0.6f), tint = secondaryTextColor.copy(alpha = 0.6f),
modifier = Modifier.size(20.dp) modifier = Modifier.size(20.dp)

View File

@@ -13,9 +13,9 @@ import androidx.compose.foundation.interaction.collectIsPressedAsState
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.*
import androidx.compose.material3.* import androidx.compose.material3.*
import compose.icons.TablerIcons
import compose.icons.tablericons.*
import androidx.compose.runtime.* import androidx.compose.runtime.*
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
@@ -235,7 +235,7 @@ fun MessageBubble(
contentAlignment = Alignment.Center contentAlignment = Alignment.Center
) { ) {
Icon( Icon(
Icons.Default.Reply, TablerIcons.CornerUpLeft,
contentDescription = "Reply", contentDescription = "Reply",
tint = if (swipeProgress >= 1f) Color.White tint = if (swipeProgress >= 1f) Color.White
else if (isDarkTheme) Color.White.copy(alpha = 0.7f) else if (isDarkTheme) Color.White.copy(alpha = 0.7f)
@@ -286,7 +286,7 @@ fun MessageBubble(
contentAlignment = Alignment.Center contentAlignment = Alignment.Center
) { ) {
Icon( Icon(
Icons.Default.Check, TablerIcons.Check,
contentDescription = "Selected", contentDescription = "Selected",
tint = Color.White, tint = Color.White,
modifier = Modifier.size(16.dp) modifier = Modifier.size(16.dp)
@@ -492,11 +492,11 @@ fun AnimatedMessageStatus(
Icon( Icon(
imageVector = when (currentStatus) { imageVector = when (currentStatus) {
MessageStatus.SENDING -> Icons.Default.Schedule MessageStatus.SENDING -> TablerIcons.Clock
MessageStatus.SENT -> Icons.Default.Done MessageStatus.SENT -> TablerIcons.Check
MessageStatus.DELIVERED -> Icons.Default.Done MessageStatus.DELIVERED -> TablerIcons.Check
MessageStatus.READ -> Icons.Default.DoneAll MessageStatus.READ -> TablerIcons.Checks
MessageStatus.ERROR -> Icons.Default.Error MessageStatus.ERROR -> TablerIcons.AlertCircle
}, },
contentDescription = null, contentDescription = null,
tint = animatedColor, tint = animatedColor,
@@ -523,7 +523,7 @@ fun AnimatedMessageStatus(
}, },
leadingIcon = { leadingIcon = {
Icon( Icon(
Icons.Default.Refresh, TablerIcons.Refresh,
contentDescription = null, contentDescription = null,
modifier = Modifier.size(18.dp) modifier = Modifier.size(18.dp)
) )
@@ -537,7 +537,7 @@ fun AnimatedMessageStatus(
}, },
leadingIcon = { leadingIcon = {
Icon( Icon(
Icons.Default.Delete, TablerIcons.Trash,
contentDescription = null, contentDescription = null,
tint = Color(0xFFE53935), tint = Color(0xFFE53935),
modifier = Modifier.size(18.dp) modifier = Modifier.size(18.dp)
@@ -695,7 +695,7 @@ fun KebabMenu(
) { ) {
if (!isSavedMessages) { if (!isSavedMessages) {
KebabMenuItem( KebabMenuItem(
icon = if (isBlocked) Icons.Default.CheckCircle else Icons.Default.Block, icon = if (isBlocked) TablerIcons.CircleCheck else TablerIcons.Ban,
text = if (isBlocked) "Unblock User" else "Block User", text = if (isBlocked) "Unblock User" else "Block User",
onClick = { if (isBlocked) onUnblockClick() else onBlockClick() }, onClick = { if (isBlocked) onUnblockClick() else onBlockClick() },
tintColor = PrimaryBlue, tintColor = PrimaryBlue,
@@ -712,7 +712,7 @@ fun KebabMenu(
} }
KebabMenuItem( KebabMenuItem(
icon = Icons.Default.Delete, icon = TablerIcons.Trash,
text = "Delete Chat", text = "Delete Chat",
onClick = onDeleteClick, onClick = onDeleteClick,
tintColor = Color(0xFFFF3B30), tintColor = Color(0xFFFF3B30),
@@ -778,7 +778,7 @@ fun ProfilePhotoMenu(
) )
) { ) {
ProfilePhotoMenuItem( ProfilePhotoMenuItem(
icon = Icons.Default.AddAPhoto, icon = TablerIcons.CameraPlus,
text = "Set Profile Photo", text = "Set Profile Photo",
onClick = onSetPhotoClick, onClick = onSetPhotoClick,
tintColor = if (isDarkTheme) Color.White else Color.Black, tintColor = if (isDarkTheme) Color.White else Color.Black,
@@ -810,7 +810,7 @@ fun OtherProfileMenu(
) )
) { ) {
ProfilePhotoMenuItem( ProfilePhotoMenuItem(
icon = if (isBlocked) Icons.Default.CheckCircle else Icons.Default.Block, icon = if (isBlocked) TablerIcons.CircleCheck else TablerIcons.Ban,
text = if (isBlocked) "Unblock User" else "Block User", text = if (isBlocked) "Unblock User" else "Block User",
onClick = onBlockClick, onClick = onBlockClick,
tintColor = PrimaryBlue, tintColor = PrimaryBlue,
@@ -826,7 +826,7 @@ fun OtherProfileMenu(
) )
ProfilePhotoMenuItem( ProfilePhotoMenuItem(
icon = Icons.Default.Delete, icon = TablerIcons.Trash,
text = "Clear Chat History", text = "Clear Chat History",
onClick = onClearChatClick, onClick = onClearChatClick,
tintColor = Color(0xFFFF3B30), tintColor = Color(0xFFFF3B30),

View File

@@ -8,9 +8,9 @@ import androidx.compose.foundation.background
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.*
import androidx.compose.material3.* import androidx.compose.material3.*
import compose.icons.TablerIcons
import compose.icons.tablericons.*
import androidx.compose.runtime.* import androidx.compose.runtime.*
import androidx.compose.runtime.snapshotFlow import androidx.compose.runtime.snapshotFlow
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
@@ -230,7 +230,7 @@ fun MessageInputBar(
horizontalArrangement = Arrangement.Center horizontalArrangement = Arrangement.Center
) { ) {
Icon( Icon(
Icons.Default.Block, TablerIcons.Ban,
contentDescription = null, contentDescription = null,
tint = Color(0xFFFF6B6B), tint = Color(0xFFFF6B6B),
modifier = Modifier.size(20.dp) modifier = Modifier.size(20.dp)
@@ -341,7 +341,7 @@ fun MessageInputBar(
contentAlignment = Alignment.Center contentAlignment = Alignment.Center
) { ) {
Icon( Icon(
Icons.Default.Close, TablerIcons.X,
contentDescription = "Cancel", contentDescription = "Cancel",
tint = if (isDarkTheme) Color.White.copy(alpha = 0.5f) tint = if (isDarkTheme) Color.White.copy(alpha = 0.5f)
else Color.Black.copy(alpha = 0.4f), else Color.Black.copy(alpha = 0.4f),
@@ -364,7 +364,7 @@ fun MessageInputBar(
modifier = Modifier.size(40.dp) modifier = Modifier.size(40.dp)
) { ) {
Icon( Icon(
Icons.Default.AttachFile, TablerIcons.Paperclip,
contentDescription = "Attach", contentDescription = "Attach",
tint = if (isDarkTheme) Color(0xFF8E8E93).copy(alpha = 0.6f) tint = if (isDarkTheme) Color(0xFF8E8E93).copy(alpha = 0.6f)
else Color(0xFF8E8E93).copy(alpha = 0.6f), else Color(0xFF8E8E93).copy(alpha = 0.6f),
@@ -407,8 +407,8 @@ fun MessageInputBar(
modifier = Modifier.size(40.dp) modifier = Modifier.size(40.dp)
) { ) {
Icon( Icon(
if (showEmojiPicker) Icons.Default.Keyboard if (showEmojiPicker) TablerIcons.Keyboard
else Icons.Default.SentimentSatisfiedAlt, else TablerIcons.MoodSmile,
contentDescription = "Emoji", contentDescription = "Emoji",
tint = if (isDarkTheme) Color(0xFF8E8E93).copy(alpha = 0.6f) tint = if (isDarkTheme) Color(0xFF8E8E93).copy(alpha = 0.6f)
else Color(0xFF8E8E93).copy(alpha = 0.6f), else Color(0xFF8E8E93).copy(alpha = 0.6f),

View File

@@ -15,9 +15,9 @@ import androidx.compose.foundation.lazy.grid.rememberLazyGridState
import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.*
import androidx.compose.material3.* import androidx.compose.material3.*
import compose.icons.TablerIcons
import compose.icons.tablericons.*
import androidx.compose.runtime.* import androidx.compose.runtime.*
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
@@ -57,7 +57,7 @@ data class EmojiCategory(
// Порядок категорий согласно Unicode CLDR // Порядок категорий согласно Unicode CLDR
val EMOJI_CATEGORIES = listOf( val EMOJI_CATEGORIES = listOf(
// 😀 Smileys & Emotion (Unicode ordering) // 😀 Smileys & Emotion (Unicode ordering)
EmojiCategory("Smileys", "Смайлы", Icons.Default.SentimentSatisfied, listOf( EmojiCategory("Smileys", "Смайлы", TablerIcons.MoodSmile, listOf(
// Face-Smiling // Face-Smiling
0x1F600 to 0x1F60F, // 😀-😏 0x1F600 to 0x1F60F, // 😀-😏
// Face-Affection // Face-Affection
@@ -103,7 +103,7 @@ val EMOJI_CATEGORIES = listOf(
0x2639 to 0x2639 // ☹ 0x2639 to 0x2639 // ☹
)), )),
// 👋 People & Body (Hands, Body parts, Persons) // 👋 People & Body (Hands, Body parts, Persons)
EmojiCategory("People", "Люди", Icons.Default.Person, listOf( EmojiCategory("People", "Люди", TablerIcons.User, listOf(
// Hand-Fingers-Open // Hand-Fingers-Open
0x1F44B to 0x1F44D, // 👋-👍 0x1F44B to 0x1F44D, // 👋-👍
0x1FAF0 to 0x1FAF8, // 🫰-🫸 0x1FAF0 to 0x1FAF8, // 🫰-🫸
@@ -137,7 +137,7 @@ val EMOJI_CATEGORIES = listOf(
0x1F9CE to 0x1F9CF // 🧎-🧏 0x1F9CE to 0x1F9CF // 🧎-🧏
)), )),
// 🐱 Animals & Nature // 🐱 Animals & Nature
EmojiCategory("Animals", "Животные", Icons.Default.Pets, listOf( EmojiCategory("Animals", "Животные", TablerIcons.Leaf, listOf(
// Animal-Mammal // Animal-Mammal
0x1F435 to 0x1F43E, // 🐵-🐾 0x1F435 to 0x1F43E, // 🐵-🐾
0x1F9A0 to 0x1F9AE, // 🦠-🦮 0x1F9A0 to 0x1F9AE, // 🦠-🦮
@@ -174,7 +174,7 @@ val EMOJI_CATEGORIES = listOf(
0x2618 to 0x2618 // ☘ 0x2618 to 0x2618 // ☘
)), )),
// 🍎 Food & Drink // 🍎 Food & Drink
EmojiCategory("Food", "Еда", Icons.Default.Restaurant, listOf( EmojiCategory("Food", "Еда", TablerIcons.ToolsKitchen, listOf(
// Food-Fruit // Food-Fruit
0x1F347 to 0x1F353, // 🍇-🍓 0x1F347 to 0x1F353, // 🍇-🍓
0x1FAD0 to 0x1FAD4, // 🫐-🫔 0x1FAD0 to 0x1FAD4, // 🫐-🫔
@@ -195,7 +195,7 @@ val EMOJI_CATEGORIES = listOf(
0x1F9C3 to 0x1F9C9 // 🧃-🧉 0x1F9C3 to 0x1F9C9 // 🧃-🧉
)), )),
// ✈️ Travel & Places // ✈️ Travel & Places
EmojiCategory("Travel", "Места", Icons.Default.Flight, listOf( EmojiCategory("Travel", "Места", TablerIcons.Plane, listOf(
// Place-Map // Place-Map
0x1F30D to 0x1F310, // 🌍-🌐 0x1F30D to 0x1F310, // 🌍-🌐
0x1F5FA to 0x1F5FA, // 🗺 0x1F5FA to 0x1F5FA, // 🗺
@@ -221,7 +221,7 @@ val EMOJI_CATEGORIES = listOf(
0x2708 to 0x2708 // ✈ 0x2708 to 0x2708 // ✈
)), )),
// ⚽ Activities // ⚽ Activities
EmojiCategory("Activities", "Спорт", Icons.Default.SportsSoccer, listOf( EmojiCategory("Activities", "Спорт", TablerIcons.BallFootball, listOf(
// Event // Event
0x1F380 to 0x1F393, // 🎀-🎓 0x1F380 to 0x1F393, // 🎀-🎓
0x1F9E7 to 0x1F9E7, // 🧧 0x1F9E7 to 0x1F9E7, // 🧧
@@ -247,7 +247,7 @@ val EMOJI_CATEGORIES = listOf(
0x1F9F6 to 0x1F9FF // 🧶-🧿 0x1F9F6 to 0x1F9FF // 🧶-🧿
)), )),
// 💡 Objects // 💡 Objects
EmojiCategory("Objects", "Объекты", Icons.Default.Lightbulb, listOf( EmojiCategory("Objects", "Объекты", TablerIcons.Bulb, listOf(
// Clothing // Clothing
0x1F451 to 0x1F462, // 👑-👢 0x1F451 to 0x1F462, // 👑-👢
0x1F97B to 0x1F97F, // 🥻-🥿 0x1F97B to 0x1F97F, // 🥻-🥿
@@ -302,7 +302,7 @@ val EMOJI_CATEGORIES = listOf(
0x1F4FF to 0x1F4FF // 📿 0x1F4FF to 0x1F4FF // 📿
)), )),
// ❤️ Symbols // ❤️ Symbols
EmojiCategory("Symbols", "Символы", Icons.Default.Favorite, listOf( EmojiCategory("Symbols", "Символы", TablerIcons.Heart, listOf(
// Heart // Heart
0x2764 to 0x2764, // ❤ 0x2764 to 0x2764, // ❤
0x1F493 to 0x1F49F, // 💓-💟 0x1F493 to 0x1F49F, // 💓-💟
@@ -343,7 +343,7 @@ val EMOJI_CATEGORIES = listOf(
0x2753 to 0x2757 // ❓-❗ 0x2753 to 0x2757 // ❓-❗
)), )),
// 🏳️ Flags // 🏳️ Flags
EmojiCategory("Flags", "Флаги", Icons.Default.Flag, listOf( EmojiCategory("Flags", "Флаги", TablerIcons.Flag, listOf(
// Flag // Flag
0x1F3C1 to 0x1F3C1, // 🏁 0x1F3C1 to 0x1F3C1, // 🏁
0x1F6A9 to 0x1F6A9, // 🚩 0x1F6A9 to 0x1F6A9, // 🚩

View File

@@ -15,9 +15,9 @@ import androidx.compose.foundation.lazy.grid.rememberLazyGridState
import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.*
import androidx.compose.material3.* import androidx.compose.material3.*
import compose.icons.TablerIcons
import compose.icons.tablericons.*
import androidx.compose.runtime.* import androidx.compose.runtime.*
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier

View File

@@ -4,8 +4,6 @@ import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.CircleShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Verified
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
@@ -13,6 +11,8 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import compose.icons.TablerIcons
import compose.icons.tablericons.CircleCheck
/** /**
* Значок верификации пользователя * Значок верификации пользователя
@@ -37,7 +37,7 @@ fun VerifiedBadge(
} }
Icon( Icon(
Icons.Default.Verified, TablerIcons.CircleCheck,
contentDescription = "Verified", contentDescription = "Verified",
tint = badgeColor, tint = badgeColor,
modifier = modifier.size(size.dp) modifier = modifier.size(size.dp)

View File

@@ -14,10 +14,10 @@ import androidx.compose.foundation.pager.PagerState
import androidx.compose.foundation.pager.rememberPagerState import androidx.compose.foundation.pager.rememberPagerState
import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.DarkMode
import androidx.compose.material.icons.filled.LightMode
import androidx.compose.material3.* import androidx.compose.material3.*
import compose.icons.TablerIcons
import compose.icons.tablericons.Sun
import compose.icons.tablericons.Moon
import androidx.compose.runtime.* import androidx.compose.runtime.*
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
@@ -379,8 +379,8 @@ fun ThemeToggleButton(
) { ) {
Icon( Icon(
imageVector = imageVector =
if (isDarkTheme) Icons.Default.LightMode if (isDarkTheme) TablerIcons.Sun
else Icons.Default.DarkMode, else TablerIcons.Moon,
contentDescription = contentDescription =
if (isDarkTheme) "Switch to Light Mode" if (isDarkTheme) "Switch to Light Mode"
else "Switch to Dark Mode", else "Switch to Dark Mode",

View File

@@ -6,10 +6,9 @@ import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.ArrowBack
import androidx.compose.material.icons.filled.Delete
import androidx.compose.material3.* import androidx.compose.material3.*
import compose.icons.TablerIcons
import compose.icons.tablericons.*
import androidx.compose.runtime.* import androidx.compose.runtime.*
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
@@ -64,7 +63,7 @@ fun ProfileLogsScreen(
) { ) {
IconButton(onClick = onBack) { IconButton(onClick = onBack) {
Icon( Icon(
imageVector = Icons.Filled.ArrowBack, imageVector = TablerIcons.ArrowLeft,
contentDescription = "Back", contentDescription = "Back",
tint = textColor tint = textColor
) )
@@ -80,7 +79,7 @@ fun ProfileLogsScreen(
) )
IconButton(onClick = onClearLogs) { IconButton(onClick = onClearLogs) {
Icon( Icon(
imageVector = Icons.Filled.Delete, imageVector = TablerIcons.Trash,
contentDescription = "Clear logs", contentDescription = "Clear logs",
tint = secondaryTextColor tint = secondaryTextColor
) )

View File

@@ -19,10 +19,9 @@ import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.text.BasicTextField import androidx.compose.foundation.text.BasicTextField
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.*
import androidx.compose.material.icons.outlined.*
import androidx.compose.material3.* import androidx.compose.material3.*
import compose.icons.TablerIcons
import compose.icons.tablericons.*
import androidx.compose.runtime.* import androidx.compose.runtime.*
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
@@ -403,7 +402,7 @@ fun ProfileScreen(
TelegramSectionTitle(title = "Settings", isDarkTheme = isDarkTheme) TelegramSectionTitle(title = "Settings", isDarkTheme = isDarkTheme)
TelegramSettingsItem( TelegramSettingsItem(
icon = Icons.Outlined.Palette, icon = TablerIcons.Palette,
title = "Theme", title = "Theme",
onClick = onNavigateToTheme, onClick = onNavigateToTheme,
isDarkTheme = isDarkTheme, isDarkTheme = isDarkTheme,
@@ -411,7 +410,7 @@ fun ProfileScreen(
) )
TelegramSettingsItem( TelegramSettingsItem(
icon = Icons.Outlined.Lock, icon = TablerIcons.Lock,
title = "Safety", title = "Safety",
onClick = onNavigateToSafety, onClick = onNavigateToSafety,
isDarkTheme = isDarkTheme, isDarkTheme = isDarkTheme,
@@ -586,7 +585,7 @@ private fun CollapsingProfileHeader(
modifier = Modifier.size(48.dp) modifier = Modifier.size(48.dp)
) { ) {
Icon( Icon(
imageVector = Icons.Filled.ArrowBack, imageVector = TablerIcons.ArrowLeft,
contentDescription = "Back", contentDescription = "Back",
tint = Color.White, tint = Color.White,
modifier = Modifier.size(24.dp) modifier = Modifier.size(24.dp)
@@ -610,7 +609,7 @@ private fun CollapsingProfileHeader(
modifier = Modifier.size(48.dp) modifier = Modifier.size(48.dp)
) { ) {
Icon( Icon(
imageVector = Icons.Default.MoreVert, imageVector = TablerIcons.DotsVertical,
contentDescription = "Profile menu", contentDescription = "Profile menu",
tint = Color.White, tint = Color.White,
modifier = Modifier.size(24.dp) modifier = Modifier.size(24.dp)
@@ -766,7 +765,7 @@ fun ProfileCard(
.padding(4.dp) .padding(4.dp)
) { ) {
Icon( Icon(
imageVector = Icons.Filled.ArrowBack, imageVector = TablerIcons.ArrowLeft,
contentDescription = "Back", contentDescription = "Back",
tint = Color.White tint = Color.White
) )
@@ -1058,7 +1057,7 @@ private fun TelegramBiometricItem(
verticalAlignment = Alignment.CenterVertically verticalAlignment = Alignment.CenterVertically
) { ) {
Icon( Icon(
imageVector = Icons.Outlined.Fingerprint, imageVector = TablerIcons.Fingerprint,
contentDescription = null, contentDescription = null,
tint = iconColor, tint = iconColor,
modifier = Modifier.size(24.dp) modifier = Modifier.size(24.dp)
@@ -1101,7 +1100,7 @@ private fun TelegramLogoutItem(
verticalAlignment = Alignment.CenterVertically verticalAlignment = Alignment.CenterVertically
) { ) {
Icon( Icon(
imageVector = Icons.Outlined.Logout, imageVector = TablerIcons.Logout,
contentDescription = null, contentDescription = null,
tint = redColor, tint = redColor,
modifier = Modifier.size(24.dp) modifier = Modifier.size(24.dp)
@@ -1193,7 +1192,7 @@ fun ProfileNavigationItem(
if (!hideChevron) { if (!hideChevron) {
Icon( Icon(
imageVector = Icons.Default.ChevronRight, imageVector = TablerIcons.ChevronRight,
contentDescription = null, contentDescription = null,
tint = iconTintColor.copy(alpha = 0.5f), tint = iconTintColor.copy(alpha = 0.5f),
modifier = Modifier.size(20.dp) modifier = Modifier.size(20.dp)

View File

@@ -11,13 +11,9 @@ import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons import androidx.compose.material3.*
import androidx.compose.material.icons.filled.ArrowBack import compose.icons.TablerIcons
import androidx.compose.material.icons.filled.Check import compose.icons.tablericons.*
import androidx.compose.material.icons.filled.DarkMode
import androidx.compose.material.icons.filled.DoneAll
import androidx.compose.material.icons.filled.LightMode
import androidx.compose.material.icons.filled.Smartphone
import androidx.compose.material3.* import androidx.compose.material3.*
import androidx.compose.runtime.* import androidx.compose.runtime.*
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
@@ -66,7 +62,7 @@ fun ThemeScreen(
) { ) {
IconButton(onClick = onBack) { IconButton(onClick = onBack) {
Icon( Icon(
imageVector = Icons.Filled.ArrowBack, imageVector = TablerIcons.ArrowLeft,
contentDescription = "Back", contentDescription = "Back",
tint = textColor tint = textColor
) )
@@ -103,7 +99,7 @@ fun ThemeScreen(
Column { Column {
TelegramThemeOption( TelegramThemeOption(
icon = Icons.Filled.LightMode, icon = TablerIcons.Sun,
title = "Light", title = "Light",
isSelected = themeMode == "light", isSelected = themeMode == "light",
onClick = { onClick = {
@@ -119,7 +115,7 @@ fun ThemeScreen(
) )
TelegramThemeOption( TelegramThemeOption(
icon = Icons.Filled.DarkMode, icon = TablerIcons.Moon,
title = "Dark", title = "Dark",
isSelected = themeMode == "dark", isSelected = themeMode == "dark",
onClick = { onClick = {
@@ -135,7 +131,7 @@ fun ThemeScreen(
) )
TelegramThemeOption( TelegramThemeOption(
icon = Icons.Filled.Smartphone, icon = TablerIcons.DeviceMobile,
title = "System", title = "System",
isSelected = themeMode == "auto", isSelected = themeMode == "auto",
onClick = { onClick = {
@@ -210,7 +206,7 @@ private fun TelegramThemeOption(
// Radio button // Radio button
if (isSelected) { if (isSelected) {
Icon( Icon(
imageVector = Icons.Filled.Check, imageVector = TablerIcons.Check,
contentDescription = null, contentDescription = null,
tint = Color(0xFF007AFF), tint = Color(0xFF007AFF),
modifier = Modifier.size(20.dp) modifier = Modifier.size(20.dp)
@@ -359,7 +355,7 @@ private fun MessageBubble(
if (isMe) { if (isMe) {
// Read checkmarks (DoneAll icon like in real chat) // Read checkmarks (DoneAll icon like in real chat)
Icon( Icon(
imageVector = Icons.Default.DoneAll, imageVector = TablerIcons.Checks,
contentDescription = null, contentDescription = null,
tint = Color(0xFF4FC3F7), // Blue checkmarks for read messages tint = Color(0xFF4FC3F7), // Blue checkmarks for read messages
modifier = Modifier.size(14.dp) modifier = Modifier.size(14.dp)

View File

@@ -6,9 +6,9 @@ import androidx.compose.foundation.layout.*
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.ArrowBack
import androidx.compose.material3.* import androidx.compose.material3.*
import compose.icons.TablerIcons
import compose.icons.tablericons.*
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
@@ -48,7 +48,7 @@ fun UpdatesScreen(
) { ) {
IconButton(onClick = onBack) { IconButton(onClick = onBack) {
Icon( Icon(
imageVector = Icons.Filled.ArrowBack, imageVector = TablerIcons.ArrowLeft,
contentDescription = "Back", contentDescription = "Back",
tint = if (isDarkTheme) Color.White else Color.Black tint = if (isDarkTheme) Color.White else Color.Black
) )