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.rememberScrollState import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.verticalScroll 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.layout.ContentScale import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import coil.compose.AsyncImage import com.socialapp.presentation.ui.theme.AccentMagenta import com.socialapp.presentation.ui.theme.PrimaryBlue @Composable fun PostDetailScreen( postId: Int, onBackClick: () -> Unit = {}, onUserClick: (Int) -> Unit = {}, onCommentsClick: () -> Unit = {}, onLikeClick: (Int) -> Unit = {} ) { val isLiked = remember { mutableStateOf(false) } val isSaved = remember { mutableStateOf(false) } val likesCount = remember { mutableStateOf(234) } 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 = "Post", fontSize = 18.sp, fontWeight = FontWeight.Bold ) IconButton(onClick = { }, modifier = Modifier.size(40.dp)) { Icon( imageVector = Icons.Default.MoreVert, contentDescription = "More", tint = MaterialTheme.colorScheme.onBackground ) } } Divider(color = MaterialTheme.colorScheme.surface, thickness = 1.dp) Column( modifier = Modifier .weight(1f) .verticalScroll(rememberScrollState()) ) { // User Info Row( modifier = Modifier .fillMaxWidth() .clickable { onUserClick(1) } .padding(16.dp), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(12.dp) ) { Box( modifier = Modifier .size(48.dp) .clip(CircleShape) .background(AccentMagenta.copy(alpha = 0.3f)), contentAlignment = Alignment.Center ) { Text("U", fontSize = 20.sp, fontWeight = FontWeight.Bold, color = AccentMagenta) } Column(modifier = Modifier.weight(1f)) { Text("Username", fontSize = 14.sp, fontWeight = FontWeight.SemiBold) Text("@username", fontSize = 12.sp, color = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.6f)) } Button( onClick = { }, modifier = Modifier .height(32.dp) .clip(RoundedCornerShape(16.dp)), colors = ButtonDefaults.buttonColors(containerColor = AccentMagenta), contentPadding = PaddingValues(horizontal = 12.dp) ) { Text("Follow", fontSize = 11.sp, fontWeight = FontWeight.SemiBold) } } // Post Caption Text( text = "This is an amazing post with lots of engagement and beautiful content. Check it out and let me know what you think!", fontSize = 14.sp, color = MaterialTheme.colorScheme.onSurface, modifier = Modifier.padding(horizontal = 16.dp) ) Spacer(modifier = Modifier.height(12.dp)) // Post Image Box( modifier = Modifier .fillMaxWidth() .height(300.dp) .background(MaterialTheme.colorScheme.surface) .padding(horizontal = 16.dp) .clip(RoundedCornerShape(16.dp)) ) { AsyncImage( model = "https://via.placeholder.com/400x300", contentDescription = "Post", modifier = Modifier.fillMaxSize(), contentScale = ContentScale.Crop ) } Spacer(modifier = Modifier.height(16.dp)) // Engagement Stats Row( modifier = Modifier .fillMaxWidth() .padding(horizontal = 16.dp), horizontalArrangement = Arrangement.SpaceAround ) { Row( verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(4.dp) ) { Icon( imageVector = Icons.Default.Favorite, contentDescription = "Likes", tint = AccentMagenta, modifier = Modifier.size(14.sp.value.toInt().dp) ) Text("${likesCount.value} likes", fontSize = 12.sp) } Row( verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(4.dp) ) { Icon( imageVector = Icons.Default.ChatBubbleOutline, contentDescription = "Comments", tint = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.6f), modifier = Modifier.size(14.sp.value.toInt().dp) ) Text("45 comments", fontSize = 12.sp) } Row( verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(4.dp) ) { Icon( imageVector = Icons.Default.Share, contentDescription = "Shares", tint = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.6f), modifier = Modifier.size(14.sp.value.toInt().dp) ) Text("12 shares", fontSize = 12.sp) } } Spacer(modifier = Modifier.height(16.dp)) Text( text = "2 hours ago", fontSize = 12.sp, color = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.5f), modifier = Modifier.padding(horizontal = 16.dp) ) Spacer(modifier = Modifier.height(16.dp)) Divider(color = MaterialTheme.colorScheme.surface, thickness = 1.dp) Spacer(modifier = Modifier.height(16.dp)) } Divider(color = MaterialTheme.colorScheme.surface, thickness = 1.dp) // Actions Row( modifier = Modifier .fillMaxWidth() .padding(16.dp), horizontalArrangement = Arrangement.spacedBy(8.dp) ) { PostActionButton( icon = if (isLiked.value) Icons.Default.Favorite else Icons.Default.FavoriteBorder, label = "Like", tint = if (isLiked.value) AccentMagenta else MaterialTheme.colorScheme.onSurface.copy(alpha = 0.6f), modifier = Modifier.weight(1f), onClick = { isLiked.value = !isLiked.value if (isLiked.value) likesCount.value++ else likesCount.value-- onLikeClick(1) } ) PostActionButton( icon = Icons.Default.ChatBubbleOutline, label = "Comment", tint = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.6f), modifier = Modifier.weight(1f), onClick = onCommentsClick ) PostActionButton( icon = Icons.Default.Share, label = "Share", tint = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.6f), modifier = Modifier.weight(1f), onClick = { } ) PostActionButton( icon = if (isSaved.value) Icons.Default.Bookmark else Icons.Default.BookmarkBorder, label = "Save", tint = if (isSaved.value) AccentMagenta else MaterialTheme.colorScheme.onSurface.copy(alpha = 0.6f), modifier = Modifier.weight(1f), onClick = { isSaved.value = !isSaved.value } ) } } } @Composable private fun PostActionButton( icon: androidx.compose.material.icons.materialIcon, label: String, tint: androidx.compose.ui.graphics.Color = MaterialTheme.colorScheme.onSurface, modifier: Modifier = Modifier, onClick: () -> Unit ) { Column( modifier = modifier .clip(RoundedCornerShape(12.dp)) .clickable { onClick() } .padding(8.dp), horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Center ) { Icon( imageVector = icon, contentDescription = label, tint = tint, modifier = Modifier.size(24.dp) ) Spacer(modifier = Modifier.height(4.dp)) Text(label, fontSize = 11.sp, fontWeight = FontWeight.Medium) } }