Alphabet rail page-chasing + Songs Like fix + scrubber polish #70

Merged
bvandeusen merged 6 commits from dev into main 2026-06-01 23:36:08 -04:00
Showing only changes of commit b77a7121ca - Show all commits
@@ -18,6 +18,7 @@ import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.widthIn import androidx.compose.foundation.layout.widthIn
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton import androidx.compose.material3.IconButton
@@ -31,7 +32,6 @@ import androidx.compose.material3.Scaffold
import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Slider import androidx.compose.material3.Slider
import androidx.compose.ui.unit.DpSize
import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBar
import androidx.compose.material3.TopAppBarDefaults import androidx.compose.material3.TopAppBarDefaults
import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Brush
@@ -458,16 +458,17 @@ private fun ScrubberRow(positionMs: Long, durationMs: Long, onSeek: (Long) -> Un
modifier = Modifier.fillMaxWidth(), modifier = Modifier.fillMaxWidth(),
colors = sliderColors, colors = sliderColors,
interactionSource = interactionSource, interactionSource = interactionSource,
// Slim 10dp thumb shrinks the scrubber's visual weight. M3 // Plain filled circle to match the web client's `<input
// default is 20dp; halving keeps it tappable (Slider's own // type="range" accent-color>` thumb — flat, no state-layer
// 48dp hit slop is unchanged) but lets it recede into the UI. // ring, no border. M3's SliderDefaults.Thumb paints a state
// Track left at default — the colour pin alone already // layer halo on press; we drop it for visual parity. Slider's
// matches Flutter's slate look. // 48dp hit slop still applies, so tapability is unchanged.
thumb = { thumb = {
SliderDefaults.Thumb( Box(
interactionSource = interactionSource, modifier = Modifier
colors = sliderColors, .size(14.dp)
thumbSize = DpSize(10.dp, 10.dp), .clip(CircleShape)
.background(accent),
) )
}, },
) )