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 9a6a7fd..cd3fdbc 100644 --- a/app/src/main/java/com/radiola/ui/stations/StationsScreen.kt +++ b/app/src/main/java/com/radiola/ui/stations/StationsScreen.kt @@ -1,6 +1,7 @@ package com.radiola.ui.stations import androidx.compose.foundation.ExperimentalFoundationApi +import androidx.compose.foundation.background import androidx.compose.foundation.gestures.detectHorizontalDragGestures import androidx.compose.foundation.layout.* import androidx.compose.foundation.lazy.grid.GridCells @@ -10,6 +11,8 @@ import androidx.compose.material3.* import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Brush +import androidx.compose.ui.graphics.Color import androidx.compose.ui.hapticfeedback.HapticFeedbackType import androidx.compose.ui.input.pointer.pointerInput import androidx.compose.ui.platform.LocalHapticFeedback @@ -75,16 +78,6 @@ fun StationsScreen( ) Spacer(Modifier.height(12.dp)) - // Жанры — всегда видны - if (tags.isNotEmpty()) { - FilterChips( - tags = tags, - selectedTag = selectedTag, - onTagSelected = viewModel::onTagSelected - ) - Spacer(Modifier.height(8.dp)) - } - // Область результатов — единственная прокручиваемая зона. // Горизонтальный свайп листает фильтры-чипы (вертикаль остаётся у грида). Box( @@ -145,7 +138,9 @@ fun StationsScreen( else -> LazyVerticalGrid( columns = GridCells.Fixed(2), modifier = Modifier.fillMaxSize(), - contentPadding = PaddingValues(start = 20.dp, end = 20.dp, top = 4.dp, bottom = 20.dp), + // top = высота чипов: грид уходит ПОД них, свечение верхнего ряда + // не обрезается и проступает за чипами. + contentPadding = PaddingValues(start = 20.dp, end = 20.dp, top = 54.dp, bottom = 20.dp), horizontalArrangement = Arrangement.spacedBy(14.dp), verticalArrangement = Arrangement.spacedBy(14.dp) ) { @@ -163,6 +158,31 @@ fun StationsScreen( } } } + + // Чипы-фильтры поверх грида. Фон-градиент: вверху непрозрачный + // (маскирует прокручиваемые карточки), книзу прозрачный — свечение + // верхнего ряда станций проступает ИЗ-ПОД чипов. + if (tags.isNotEmpty()) { + Box( + modifier = Modifier + .align(Alignment.TopStart) + .fillMaxWidth() + .background( + Brush.verticalGradient( + 0f to colors.bgBase, + 0.55f to colors.bgBase, + 1f to Color.Transparent + ) + ) + .padding(top = 2.dp, bottom = 12.dp) + ) { + FilterChips( + tags = tags, + selectedTag = selectedTag, + onTagSelected = viewModel::onTagSelected + ) + } + } } } }