package com.suno.android.common_ui.components.player import androidx.annotation.OptIn import androidx.compose.animation.Crossfade import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.defaultMinSize import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Shape import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.media3.common.util.UnstableApi import androidx.media3.ui.compose.state.PlayPauseButtonState import com.suno.android.common_ui.theme.ExtendedTheme import com.suno.android.common_res.R as CommonResR import com.suno.android.common_ui.R as CommonUiR @OptIn(UnstableApi::class) @Composable fun PlayPauseButton( playPauseButtonState: PlayPauseButtonState, onPlayClick: () -> Unit, onPauseClick: () -> Unit, modifier: Modifier = Modifier, iconModifier: Modifier = Modifier, shape: Shape = MaterialTheme.shapes.medium, ) { Box( contentAlignment = Alignment.Center, modifier = modifier .defaultMinSize(40.dp) .clip(shape) .background(ExtendedTheme.colors.backgroundTertiary) .clickable( enabled = playPauseButtonState.isEnabled, onClick = { if (playPauseButtonState.showPlay) { onPlayClick() } else { onPauseClick() } }, ), ) { Crossfade(playPauseButtonState.showPlay) { showPlay -> Icon( painter = if (showPlay) { painterResource(CommonUiR.drawable.play) } else { painterResource(CommonUiR.drawable.pause) }, contentDescription = if (showPlay) { stringResource(CommonResR.string.play) } else { stringResource(CommonResR.string.pause) }, tint = ExtendedTheme.colors.textPrimary, modifier = iconModifier.defaultMinSize(16.dp, 16.dp), ) } } }