diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/Badge.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/Badge.kt index f73a0930e..4d3af6878 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/Badge.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/Badge.kt @@ -39,6 +39,7 @@ import androidx.compose.material3.FilledTonalButton import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedButton +import androidx.compose.material3.OutlinedCard import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.runtime.Composable @@ -78,6 +79,7 @@ import com.vitorpamplona.quartz.nip58Badges.award.BadgeAwardEvent import com.vitorpamplona.quartz.nip58Badges.definition.BadgeDefinitionEvent import com.vitorpamplona.quartz.nip58Badges.profile.ProfileBadgesEvent +private val BadgeCardShape = RoundedCornerShape(12.dp) private val BadgeThumbSize = 72.dp @Composable @@ -175,38 +177,41 @@ private fun BadgeCard( onClick: (() -> Unit)? = null, actions: @Composable () -> Unit = {}, ) { - val baseModifier = Modifier.fillMaxWidth() - val clickableModifier = if (onClick != null) baseModifier.clickable(onClick = onClick) else baseModifier + val baseModifier = Modifier.fillMaxWidth().padding(vertical = 6.dp) + OutlinedCard( + modifier = if (onClick != null) baseModifier.clickable(onClick = onClick) else baseModifier, + shape = BadgeCardShape, + ) { + Column(modifier = Modifier.padding(16.dp)) { + Row(verticalAlignment = Alignment.CenterVertically) { + BadgeThumbnail(imageUrl, name) - Column(modifier = clickableModifier.padding(horizontal = 16.dp, vertical = 12.dp)) { - Row(verticalAlignment = Alignment.CenterVertically) { - BadgeThumbnail(imageUrl, name) + Spacer(modifier = Modifier.size(14.dp)) - Spacer(modifier = Modifier.size(14.dp)) + Column(modifier = Modifier.weight(1f)) { + Text( + text = name?.ifBlank { null } ?: stringRes(R.string.badge_untitled), + style = MaterialTheme.typography.titleMedium, + fontWeight = FontWeight.SemiBold, + maxLines = 2, + overflow = TextOverflow.Ellipsis, + ) + } + } - Column(modifier = Modifier.weight(1f)) { + if (!description.isNullOrBlank()) { + Spacer(modifier = Modifier.height(12.dp)) Text( - text = name?.ifBlank { null } ?: stringRes(R.string.badge_untitled), - style = MaterialTheme.typography.titleMedium, - fontWeight = FontWeight.SemiBold, - maxLines = 2, + text = description, + style = MaterialTheme.typography.bodyMedium, + color = MaterialTheme.colorScheme.onSurfaceVariant, + maxLines = 4, overflow = TextOverflow.Ellipsis, ) } - } - if (!description.isNullOrBlank()) { - Spacer(modifier = Modifier.height(10.dp)) - Text( - text = description, - style = MaterialTheme.typography.bodyMedium, - color = MaterialTheme.colorScheme.onSurfaceVariant, - maxLines = 4, - overflow = TextOverflow.Ellipsis, - ) + actions() } - - actions() } }