65 lines
1.9 KiB
Kotlin
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
|
|
)
|
|
}
|
|
}
|