package com.suno.android.common_ui.components import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.material3.Card import androidx.compose.material3.CardColors import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.suno.android.common_ui.R import com.suno.android.common_ui.theme.HeaderLibraryBlue import com.suno.android.common_ui.theme.HeaderLibraryOrange @Composable fun LibraryHeaderIsosurface( modifier: Modifier = Modifier, stepSize: Int = 10, colors: List = listOf(Color.Black, Color.White), playCount: Int = 0, displayText: String = "Songs", onClick: (() -> Unit)? = null, ) { Card( modifier = Modifier.size(150.dp), colors = CardColors( contentColor = Color.Transparent, containerColor = Color.Transparent, disabledContentColor = Color.Transparent, disabledContainerColor = Color.Transparent, ), onClick = { onClick?.invoke() }, ) { Box { BouncyIsosurfaceMetaballAnimation( modifier = Modifier.fillMaxSize(), widthInt = 200, heightInt = 200, stepSize = stepSize, colors = colors, ) Text( text = displayText, ) IconCounter( modifier = Modifier .align(Alignment.BottomStart) .padding(8.dp), iconRes = R.drawable.music, count = playCount, ) } } } @Preview(showBackground = true) @Composable private fun LibraryHeaderIsosurface_Preview() { LibraryHeaderIsosurface( colors = listOf( HeaderLibraryBlue, HeaderLibraryOrange, HeaderLibraryBlue, HeaderLibraryOrange, ), ) }