package com.socialapp.presentation.ui.screens import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.* import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.* import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.* import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.socialapp.presentation.ui.theme.AccentMagenta import com.socialapp.presentation.ui.theme.PrimaryBlue data class Comment( val id: Int, val userId: Int, val userName: String, val userHandle: String, val userAvatar: String, val text: String, val timestamp: String, val likesCount: Int, val isLiked: Boolean = false, val replies: Int = 0 ) @Composable fun CommentsScreen( postId: Int, onBackClick: () -> Unit = {}, onUserClick: (Int) -> Unit = {} ) { val commentText = remember { mutableStateOf("") } val comments = remember { mutableStateOf( listOf( Comment(1, 1, "Sarah", "@sarah", "", "This is so cool!", "2h ago", 23, true, 3), Comment(2, 2, "Mike", "@mike", "", "Amazing post! Love it", "1h ago", 15, false, 1), Comment(3, 3, "Emma", "@emma", "", "Thanks for sharing! ✨", "45m ago", 8, true, 0), Comment(4, 4, "John", "@john", "", "This deserves more likes", "30m ago", 12, false, 2), ) ) } Column( modifier = Modifier .fillMaxSize() .background(MaterialTheme.colorScheme.background) ) { // Header Row( modifier = Modifier .fillMaxWidth() .padding(16.dp), horizontalArrangement = Arrangement.SpaceBetween, verticalAlignment = Alignment.CenterVertically ) { IconButton(onClick = onBackClick, modifier = Modifier.size(40.dp)) { Icon( imageVector = Icons.Default.ArrowBack, contentDescription = "Back", tint = MaterialTheme.colorScheme.onBackground ) } Text( text = "Comments", fontSize = 18.sp, fontWeight = FontWeight.Bold ) Spacer(modifier = Modifier.width(40.dp)) } Divider(color = MaterialTheme.colorScheme.surface, thickness = 1.dp) // Comments List LazyColumn( modifier = Modifier .weight(1f) .fillMaxWidth() ) { items(comments.value) { comment -> CommentItem( comment = comment, onUserClick = { onUserClick(comment.userId) } ) Divider(color = MaterialTheme.colorScheme.surface, thickness = 1.dp, modifier = Modifier.padding(horizontal = 16.dp)) } } Divider(color = MaterialTheme.colorScheme.surface, thickness = 1.dp) // Comment Input Row( modifier = Modifier .fillMaxWidth() .padding(12.dp), horizontalArrangement = Arrangement.spacedBy(8.dp), verticalAlignment = Alignment.CenterVertically ) { Box( modifier = Modifier .size(36.dp) .clip(CircleShape) .background(AccentMagenta.copy(alpha = 0.3f)), contentAlignment = Alignment.Center ) { Text("U", fontSize = 14.sp, fontWeight = FontWeight.Bold, color = AccentMagenta) } Box( modifier = Modifier .weight(1f) .height(36.dp) .clip(RoundedCornerShape(18.dp)) .background(MaterialTheme.colorScheme.surface) .padding(horizontal = 12.dp), contentAlignment = Alignment.CenterStart ) { if (commentText.value.isEmpty()) { Text( text = "Add a comment...", fontSize = 12.sp, color = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.5f) ) } else { Text( text = commentText.value, fontSize = 12.sp, color = MaterialTheme.colorScheme.onSurface ) } } if (commentText.value.isNotEmpty()) { IconButton(onClick = { commentText.value = "" }, modifier = Modifier.size(36.dp)) { Icon( imageVector = Icons.Default.Send, contentDescription = "Send", tint = AccentMagenta, modifier = Modifier.size(18.dp) ) } } } } } @Composable private fun CommentItem( comment: Comment, onUserClick: () -> Unit = {} ) { Column( modifier = Modifier .fillMaxWidth() .padding(12.dp) ) { Row( verticalAlignment = Alignment.CenterVertically, modifier = Modifier.clickable { onUserClick() } ) { Box( modifier = Modifier .size(32.dp) .clip(CircleShape) .background(AccentMagenta.copy(alpha = 0.3f)), contentAlignment = Alignment.Center ) { Text( text = comment.userName.first().toString(), fontSize = 12.sp, fontWeight = FontWeight.Bold, color = AccentMagenta ) } Spacer(modifier = Modifier.width(8.dp)) Column(modifier = Modifier.weight(1f)) { Row( verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(4.dp) ) { Text( text = comment.userName, fontSize = 12.sp, fontWeight = FontWeight.Bold ) Text( text = comment.userHandle, fontSize = 11.sp, color = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.6f) ) Text( text = comment.timestamp, fontSize = 11.sp, color = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.5f) ) } Text( text = comment.text, fontSize = 12.sp, modifier = Modifier.padding(top = 4.dp) ) Row( horizontalArrangement = Arrangement.spacedBy(16.dp), modifier = Modifier.padding(top = 8.dp) ) { Row( verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(4.dp), modifier = Modifier.clickable { } ) { Icon( imageVector = if (comment.isLiked) Icons.Default.Favorite else Icons.Default.FavoriteBorder, contentDescription = "Like", tint = if (comment.isLiked) AccentMagenta else MaterialTheme.colorScheme.onSurface.copy(alpha = 0.5f), modifier = Modifier.size(14.dp) ) Text( text = "${comment.likesCount}", fontSize = 10.sp, color = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.6f) ) } if (comment.replies > 0) { Text( text = "${comment.replies} replies", fontSize = 10.sp, color = PrimaryBlue, modifier = Modifier.clickable { } ) } } } } } }