Files
forkmessager/client-mobile/stories/presentation/components/StoryThumbnail.kt
2026-04-16 15:41:22 +03:00

65 lines
1.9 KiB
Kotlin

package stories.presentation.components
import androidx.compose.foundation.border
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.*
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Brush
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import core.presentation.components.AppAvatar
import core.presentation.theme.SoftSquareShape
@Composable
fun StoryThumbnail(
username: String?,
avatarUrl: String?,
hasUnseen: Boolean,
onClick: () -> Unit
) {
val displayUsername = username ?: "User"
val gradientBrush = Brush.sweepGradient(
colors = listOf(Color.Cyan, Color.Magenta, Color.Yellow, Color.Cyan)
)
Column(
modifier = Modifier
.padding(8.dp)
.clickable(onClick = onClick),
horizontalAlignment = Alignment.CenterHorizontally
) {
Box(
modifier = Modifier
.size(72.dp)
.padding(4.dp)
.then(
if (hasUnseen) Modifier.border(3.dp, gradientBrush, SoftSquareShape)
else Modifier.border(1.dp, Color.Gray, SoftSquareShape)
),
contentAlignment = Alignment.Center
) {
AppAvatar(
url = avatarUrl,
name = displayUsername,
size = 60.dp,
modifier = Modifier.padding(2.dp)
)
}
Spacer(modifier = Modifier.height(4.dp))
Text(
text = displayUsername,
fontSize = 11.sp,
maxLines = 1,
color = MaterialTheme.colorScheme.onSurface
)
}
}