package com.suno.android.ui.screens.songdetails import androidx.annotation.DrawableRes import androidx.compose.animation.animateColorAsState import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.material3.Icon import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.painterResource import androidx.compose.ui.semantics.semantics import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.suno.android.common_ui.theme.ExtendedTheme import com.suno.android.common_ui.theme.SunoTheme import com.suno.android.common_ui.R as CommonUiR @Composable fun SongDetailsOptionRow( text: String, @DrawableRes iconRes: Int, rightContent: (@Composable () -> Unit)? = null, onClick: () -> Unit, enabled: Boolean = true, ) { val color by animateColorAsState( if (enabled) { ExtendedTheme.colors.textPrimary } else { ExtendedTheme.colors.textPrimary.copy(alpha = 0.5f) }, ) Row( modifier = Modifier .fillMaxWidth() .semantics(mergeDescendants = true) {} .clickable( enabled = enabled, ) { onClick() } .padding(vertical = 16.dp), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(12.dp), ) { Icon( painter = painterResource(iconRes), contentDescription = null, tint = color, modifier = Modifier.size(24.dp), ) Text( text = text, style = ExtendedTheme.typography.button, color = color, modifier = Modifier.weight(1f), ) if (rightContent != null) { rightContent() } else { Icon( painterResource(CommonUiR.drawable.chevron_right), contentDescription = null, tint = color, modifier = Modifier.size(24.dp), ) } } } @Preview @Composable private fun SongDetailsOptionRow_Preview() { SunoTheme { SongDetailsOptionRow( text = "Click me", iconRes = CommonUiR.drawable.plus, onClick = {}, ) } }