diff --git a/app/src/main/java/com/radiola/ui/charts/ChartsScreen.kt b/app/src/main/java/com/radiola/ui/charts/ChartsScreen.kt index cea287c..5a46607 100644 --- a/app/src/main/java/com/radiola/ui/charts/ChartsScreen.kt +++ b/app/src/main/java/com/radiola/ui/charts/ChartsScreen.kt @@ -16,6 +16,7 @@ import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyRow import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.itemsIndexed +import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.* @@ -46,7 +47,8 @@ import com.radiola.domain.model.StatPoint import com.radiola.domain.model.TrackStats import com.radiola.ui.components.CategoryPicker import com.radiola.ui.components.EmptyState -import com.radiola.ui.components.fadingStartEdge +import com.radiola.ui.components.recede +import com.radiola.ui.components.recedeFactor import com.radiola.ui.components.PopularityChart import com.radiola.ui.components.crossfadeModel import com.radiola.ui.components.serviceLogoRes @@ -108,11 +110,10 @@ fun ChartsScreen( genres = genres, selected = selectedGenre, onSelect = viewModel::selectGenre, - contentPadding = PaddingValues(start = 70.dp, end = 20.dp), + contentPadding = PaddingValues(start = 100.dp, end = 20.dp), modifier = Modifier .fillMaxWidth() .align(Alignment.Center) - .fadingStartEdge(62.dp) ) CategoryPicker( title = "Стиль музыки", @@ -233,24 +234,22 @@ private fun GenreSelector( modifier: Modifier = Modifier, contentPadding: PaddingValues = PaddingValues(horizontal = 20.dp) ) { + val listState = rememberLazyListState() + val all = remember(genres) { listOf(null) + genres } LazyRow( modifier = modifier, + state = listState, horizontalArrangement = Arrangement.spacedBy(9.dp), contentPadding = contentPadding ) { - item { - PeriodChip( - label = "Все", - selected = selected == null, - onClick = { onSelect(null) } - ) - } - items(genres) { genre -> - PeriodChip( - label = genre, - selected = selected == genre, - onClick = { onSelect(genre) } - ) + itemsIndexed(all, key = { _, g -> g ?: " all" }) { index, g -> + Box(modifier = Modifier.recede(recedeFactor(listState, index))) { + PeriodChip( + label = g ?: "Все", + selected = selected == g, + onClick = { onSelect(g) } + ) + } } } } diff --git a/app/src/main/java/com/radiola/ui/components/FilterChips.kt b/app/src/main/java/com/radiola/ui/components/FilterChips.kt index bd0d751..7c05692 100644 Binary files a/app/src/main/java/com/radiola/ui/components/FilterChips.kt and b/app/src/main/java/com/radiola/ui/components/FilterChips.kt differ diff --git a/app/src/main/java/com/radiola/ui/stations/StationsScreen.kt b/app/src/main/java/com/radiola/ui/stations/StationsScreen.kt index 9bedf69..e4bc430 100644 --- a/app/src/main/java/com/radiola/ui/stations/StationsScreen.kt +++ b/app/src/main/java/com/radiola/ui/stations/StationsScreen.kt @@ -185,11 +185,10 @@ fun StationsScreen( tags = tags, selectedTag = selectedTag, onTagSelected = viewModel::onTagSelected, - contentPadding = PaddingValues(start = 66.dp, end = 16.dp), + contentPadding = PaddingValues(start = 96.dp, end = 16.dp), modifier = Modifier .fillMaxWidth() .align(Alignment.Center) - .fadingStartEdge(60.dp) ) // Кнопка-категории — поверх чипов, слева. CategoryPicker(