Composable private fun AttachmentPickerOptions( hasPickedAttachments: Boolean, tabFactories: List<AttachmentsPickerTabFactory>, tabIndex: Int, onTabClick: (Int, AttachmentsPickerMode) -> Unit, onSendAttachmentsClick: () -> Unit, ) { Row( Modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically ) { Row(horizontalArrangement = Arrangement.SpaceEvenly) { tabFactories.forEachIndexed { index, tabFactory -> val isSelected = index == tabIndex val isEnabled = isSelected || (!isSelected && !hasPickedAttachments) IconButton( enabled = isEnabled, content = { tabFactory.pickerTabIcon( isEnabled = isEnabled, isSelected = isSelected ) }, onClick = { onTabClick(index, tabFactory.attachmentsPickerMode) } ) } }  Spacer(modifier = Modifier.weight(1f))  IconButton( enabled = hasPickedAttachments, onClick = onSendAttachmentsClick, content = { val layoutDirection = LocalLayoutDirection.current  Icon( modifier = Modifier .weight(1f).mirrorRtl(layoutDirection = layoutDirection),painter = painterResource(id = R.drawable.stream_compose_ic_circle_left),contentDescription = stringResource(id = R.string.stream_compose_send_attachment),tint = if (hasPickedAttachments){ChatTheme.colors.primaryAccent} else {ChatTheme.colors.textLowEmphasis})})}}
The options for the Attachment picker. Shows tabs based on the provided list of [tabFactories] and a button to submit the selected attachments.