package com.suno.android.ui.screens.create.audio import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import com.suno.android.common_res.R import com.suno.android.common_ui.components.preview.SunoPreview import com.suno.android.ui.bottom_sheets.option_picker.OptionPickerContent import com.suno.android.ui.bottom_sheets.option_picker.OptionPickerUi import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.toPersistentList import com.suno.android.common_ui.R as CommonUiR @Composable fun AudioCreateSourceSelectContent( availableAudioSourceOptions: ImmutableList, onSourceClick: (CreateAudioState.AudioSourceOption) -> Unit, modifier: Modifier = Modifier, ) { OptionPickerContent( options = availableAudioSourceOptions, getUiForOption = { option -> OptionPickerUi( painter = option.icon(), text = option.name(), ) }, onOptionClick = onSourceClick, modifier = modifier, ) } @Preview @Composable private fun AudioSourceOptionSelectContent_Preview() { SunoPreview { AudioCreateSourceSelectContent( availableAudioSourceOptions = CreateAudioState.AudioSourceOption.entries.toPersistentList(), onSourceClick = {}, ) } } @Composable fun CreateAudioState.AudioSourceOption.name() = when (this) { CreateAudioState.AudioSourceOption.Record -> stringResource(R.string.record) CreateAudioState.AudioSourceOption.Upload -> stringResource(R.string.audio_create_source_upload) CreateAudioState.AudioSourceOption.Library -> stringResource(R.string.library) } @Composable internal fun CreateAudioState.AudioSourceOption.icon() = when (this) { CreateAudioState.AudioSourceOption.Record -> painterResource(CommonUiR.drawable.microphone) CreateAudioState.AudioSourceOption.Upload -> painterResource(CommonUiR.drawable.upload) CreateAudioState.AudioSourceOption.Library -> painterResource(CommonUiR.drawable.library) }