package com.suno.android.common_ui.components.dialogs import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.Icon import androidx.compose.material3.Text import androidx.compose.material3.TextButton 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.draw.paint import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.vectorResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextDecoration 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.components.omni.CircleIconButton import com.suno.android.common_ui.theme.ExtendedTheme import com.suno.android.common_ui.theme.SunoTheme import com.suno.android.common_res.R as CommonResR @Composable fun CommercialRightsDialog( modifier: Modifier = Modifier, onUpgradeClick: () -> Unit, onDownloadClick: () -> Unit, onFAQClick: () -> Unit, onDismiss: () -> Unit, ) { Box( modifier = Modifier .clip(RoundedCornerShape(32.dp)) .background(ExtendedTheme.colors.backgroundSecondary) .width(400.dp) .padding(16.dp), ) { Column( modifier = Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally, ) { Row( modifier = Modifier .fillMaxWidth() .padding(bottom = 24.dp), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.SpaceBetween, ) { Spacer(modifier = Modifier.size(40.dp)) Box( modifier = Modifier .size(40.dp) .background( ExtendedTheme.colors.backgroundInvert, CircleShape, ), contentAlignment = Alignment.Center, ) { Icon( modifier = Modifier.size(24.dp), imageVector = ImageVector.vectorResource( id = R.drawable.news, ), contentDescription = "news", tint = ExtendedTheme.colors.backgroundPrimary, ) } CircleIconButton( vectorDrawableResId = R.drawable.close, contentDescription = stringResource(CommonResR.string.close), iconColor = ExtendedTheme.colors.textPrimary, bgColor = Color.Transparent, onClick = { onDismiss.invoke() }, ) } Text( modifier = Modifier.padding(bottom = 8.dp), text = stringResource(CommonResR.string.need_commercial_rights), style = ExtendedTheme.typography.mediumHeadline.copy(textAlign = TextAlign.Center), ) Text( modifier = Modifier.padding(vertical = 8.dp), text = stringResource(CommonResR.string.only_pro_premier_commercial_use), style = ExtendedTheme.typography.body.copy(textAlign = TextAlign.Center), color = ExtendedTheme.colors.textSecondary, ) Text( modifier = Modifier.padding(top = 8.dp), text = stringResource(CommonResR.string.upgrade_now_song_upgrade_too), style = ExtendedTheme.typography.smallBody.copy(textAlign = TextAlign.Center), color = ExtendedTheme.colors.textSecondary, ) Text( modifier = Modifier.clickable { onFAQClick.invoke() }, text = stringResource(CommonResR.string.rights_ownership_faqs), style = ExtendedTheme.typography.smallBody.copy( textAlign = TextAlign.Center, textDecoration = TextDecoration.Underline, ), color = ExtendedTheme.colors.textSecondary, ) Box( modifier = Modifier .padding(top = 24.dp) .clip(RoundedCornerShape(32.dp)) .fillMaxWidth() .height(54.dp) .paint( painter = painterResource(R.drawable.full_width_button_bg), contentScale = ContentScale.Crop, ) .clickable { onUpgradeClick.invoke() }, contentAlignment = Alignment.Center, ) { Text( text = "Upgrade", color = Color.White, style = ExtendedTheme.typography.introCopy, ) } TextButton( onClick = { onDownloadClick.invoke() }, ) { Text( text = stringResource(CommonResR.string.download_anyway), color = ExtendedTheme.colors.textTertiary, style = ExtendedTheme.typography.body, ) } } } } @Preview @Composable private fun CommercialRightsDialog_Preview() { SunoTheme { CommercialRightsDialog( onUpgradeClick = {}, onDownloadClick = {}, onFAQClick = {}, onDismiss = {}, ) } }