Loading app/src/main/java/foundation/e/apps/ui/compose/components/SearchResultListItem.kt +20 −18 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth Loading Loading @@ -54,6 +55,7 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import coil.compose.rememberImagePainter import foundation.e.apps.R import foundation.e.apps.data.application.data.Application Loading Loading @@ -118,22 +120,18 @@ fun SearchResultListItem( overflow = TextOverflow.Ellipsis, ) if (uiState.showRating || uiState.showSourceTag) { Row( verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(6.dp), ) { if (uiState.showRating) { RatingChip(ratingText = uiState.ratingText) } else { // keep layout predictable; hide rating when absent Spacer(modifier = Modifier.width(0.dp)) } if (uiState.showSourceTag) { SourceTag(text = uiState.sourceTag) } else { // design PNG omits source tag; kept togglable for legacy parity Spacer(modifier = Modifier.width(0.dp)) } } } } Loading Loading @@ -274,7 +272,10 @@ private fun PrimaryActionArea( return } Column(horizontalAlignment = Alignment.End) { Column( horizontalAlignment = Alignment.End, verticalArrangement = Arrangement.Center, ) { val accentColor = MaterialTheme.colorScheme.tertiary val labelTextColor = when { uiState.isFilledStyle -> Color.White Loading @@ -297,6 +298,7 @@ private fun PrimaryActionArea( maxLines = 1, overflow = TextOverflow.Clip, color = labelTextColor, letterSpacing = 1.5.sp ) } } Loading @@ -311,7 +313,7 @@ private fun PrimaryActionArea( enabled = uiState.enabled, modifier = Modifier .widthIn(min = 88.dp) .height(40.dp) .height(30.dp) .testTag(SearchResultListItemTestTags.PRIMARY_BUTTON), shape = RoundedCornerShape(4.dp), colors = ButtonDefaults.buttonColors( Loading @@ -327,7 +329,7 @@ private fun PrimaryActionArea( disabledContentColor = labelTextColor.copy(alpha = 0.38f), ), border = BorderStroke(1.dp, borderColor), contentPadding = ButtonDefaults.ContentPadding, contentPadding = PaddingValues.Zero, ) { buttonContent() } Loading Loading
app/src/main/java/foundation/e/apps/ui/compose/components/SearchResultListItem.kt +20 −18 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth Loading Loading @@ -54,6 +55,7 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import coil.compose.rememberImagePainter import foundation.e.apps.R import foundation.e.apps.data.application.data.Application Loading Loading @@ -118,22 +120,18 @@ fun SearchResultListItem( overflow = TextOverflow.Ellipsis, ) if (uiState.showRating || uiState.showSourceTag) { Row( verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(6.dp), ) { if (uiState.showRating) { RatingChip(ratingText = uiState.ratingText) } else { // keep layout predictable; hide rating when absent Spacer(modifier = Modifier.width(0.dp)) } if (uiState.showSourceTag) { SourceTag(text = uiState.sourceTag) } else { // design PNG omits source tag; kept togglable for legacy parity Spacer(modifier = Modifier.width(0.dp)) } } } } Loading Loading @@ -274,7 +272,10 @@ private fun PrimaryActionArea( return } Column(horizontalAlignment = Alignment.End) { Column( horizontalAlignment = Alignment.End, verticalArrangement = Arrangement.Center, ) { val accentColor = MaterialTheme.colorScheme.tertiary val labelTextColor = when { uiState.isFilledStyle -> Color.White Loading @@ -297,6 +298,7 @@ private fun PrimaryActionArea( maxLines = 1, overflow = TextOverflow.Clip, color = labelTextColor, letterSpacing = 1.5.sp ) } } Loading @@ -311,7 +313,7 @@ private fun PrimaryActionArea( enabled = uiState.enabled, modifier = Modifier .widthIn(min = 88.dp) .height(40.dp) .height(30.dp) .testTag(SearchResultListItemTestTags.PRIMARY_BUTTON), shape = RoundedCornerShape(4.dp), colors = ButtonDefaults.buttonColors( Loading @@ -327,7 +329,7 @@ private fun PrimaryActionArea( disabledContentColor = labelTextColor.copy(alpha = 0.38f), ), border = BorderStroke(1.dp, borderColor), contentPadding = ButtonDefaults.ContentPadding, contentPadding = PaddingValues.Zero, ) { buttonContent() } Loading