package com.suno.android.common_ui.animations import androidx.compose.animation.core.FastOutSlowInEasing import androidx.compose.animation.core.animateFloat import androidx.compose.animation.core.infiniteRepeatable import androidx.compose.animation.core.rememberInfiniteTransition import androidx.compose.animation.core.tween import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Color @Composable @Suppress("MagicNumber") fun shimmerBrush( baseColor: Color, ): Brush { val shimmerColor = baseColor.copy( red = (baseColor.red + 0.3f).coerceAtMost(1f), green = (baseColor.green + 0.3f).coerceAtMost(1f), blue = (baseColor.blue + 0.3f).coerceAtMost(1f), ) val shimmerColors = listOf(baseColor, shimmerColor, baseColor) val transition = rememberInfiniteTransition(label = "Shimmer") val translateAnim by transition.animateFloat( initialValue = -400f, targetValue = 1200f, animationSpec = infiniteRepeatable( animation = tween( durationMillis = 2000, easing = FastOutSlowInEasing, ), ), label = "Translate", ) return Brush.linearGradient( colors = shimmerColors, start = Offset(translateAnim, 0f), end = Offset(translateAnim + 200, 0f), ) }