in Jetsnack/app/src/main/java/com/example/jetsnack/ui/components/Filters.kt [86:146]
fun FilterChip(
filter: Filter,
modifier: Modifier = Modifier,
shape: Shape = MaterialTheme.shapes.small
) {
val (selected, setSelected) = filter.enabled
val backgroundColor by animateColorAsState(
if (selected) JetsnackTheme.colors.brandSecondary else JetsnackTheme.colors.uiBackground
)
val border = Modifier.fadeInDiagonalGradientBorder(
showBorder = !selected,
colors = JetsnackTheme.colors.interactiveSecondary,
shape = shape
)
val textColor by animateColorAsState(
if (selected) Color.Black else JetsnackTheme.colors.textSecondary
)
JetsnackSurface(
modifier = modifier.height(28.dp),
color = backgroundColor,
contentColor = textColor,
shape = shape,
elevation = 2.dp
) {
val interactionSource = remember { MutableInteractionSource() }
val pressed by interactionSource.collectIsPressedAsState()
val backgroundPressed =
if (pressed) {
Modifier.offsetGradientBackground(
JetsnackTheme.colors.interactiveSecondary,
200f,
0f
)
} else {
Modifier.background(Color.Transparent)
}
Box(
modifier = Modifier
.toggleable(
value = selected,
onValueChange = setSelected,
interactionSource = interactionSource,
indication = null
)
.then(backgroundPressed)
.then(border),
) {
Text(
text = filter.name,
style = MaterialTheme.typography.caption,
maxLines = 1,
modifier = Modifier.padding(
horizontal = 20.dp,
vertical = 6.dp
)
)
}
}
}