package com.suno.android.ui.screens.create.text import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.expandHorizontally import androidx.compose.animation.fadeIn import androidx.compose.animation.fadeOut import androidx.compose.animation.shrinkHorizontally import androidx.compose.foundation.background import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.ime import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.windowInsetsBottomHeight import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import com.suno.android.common_ui.components.buttons.AuraButton import com.suno.android.common_ui.components.omni.CircleIconButton 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 @Composable internal fun BottomBar( viewState: CreateTextState?, vm: CreateTextScreenVM?, modifier: Modifier = Modifier, onCreateClicked: (() -> Unit)? = null, ) { val backgroundColor = ExtendedTheme.colors.backgroundPrimary Column( modifier = modifier.padding(top = 16.dp), ) { Row( verticalAlignment = Alignment.CenterVertically, modifier = Modifier .fillMaxWidth() .background( Brush.verticalGradient( colors = listOf(Color(0x000E0808), backgroundColor), ), ), ) { AnimatedVisibility( visible = viewState?.isFormPristine == false, enter = fadeIn() + expandHorizontally(), exit = fadeOut() + shrinkHorizontally(), ) { Row { Spacer(Modifier.width(16.dp)) CircleIconButton( modifier = Modifier.size(64.dp), vectorDrawableResId = CommonUIR.drawable.trash, contentDescription = stringResource(com.suno.android.common_res.R.string.clear), onClick = { vm?.sendEvent(CreateTextEvent.OnAttemptToResetCreate) }, ) Spacer(Modifier.width(8.dp)) } } AnimatedVisibility( visible = viewState?.isFormPristine != false, enter = expandHorizontally(), exit = shrinkHorizontally(), ) { Spacer(Modifier.width(16.dp)) } AuraButton( text = if (viewState?.isRemix == true) { stringResource(CommonResR.string.remix) } else { stringResource(CommonResR.string.create) }, onClick = { vm?.sendEvent(CreateTextEvent.OnGenerateClicked) onCreateClicked?.invoke() }, disabled = viewState?.isCreateButtonEnabled != true, loading = viewState?.isCreateSubmitLoading ?: false, modifier = Modifier.weight(1f), ) Spacer(Modifier.width(16.dp)) } Column( modifier = Modifier .fillMaxWidth() .background(backgroundColor), ) { // for some reason adding this height as padding after background doesn't draw the background over it Spacer(Modifier.height(8.dp)) Spacer(Modifier.windowInsetsBottomHeight(WindowInsets.ime)) } } }