package xyz.magicalbits.smsremote.device import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.systemBarsPadding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.input.nestedscroll.NestedScrollConnection import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.platform.rememberNestedScrollInteropConnection import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import xyz.magicalbits.smsremote.R import xyz.magicalbits.smsremote.components.baselineHeight @Composable fun DeviceScreen( deviceData: DeviceScreenState, nestedScrollInteropConnection: NestedScrollConnection = rememberNestedScrollInteropConnection(), onPhoneNumberClicked: (String) -> Unit, ) { val scrollState = rememberScrollState() Box( modifier = Modifier .fillMaxSize() .nestedScroll(nestedScrollInteropConnection), ) { Surface { Column(modifier = Modifier.fillMaxSize().verticalScroll(scrollState).padding(horizontal = 16.dp)) { Name(deviceData, Modifier.baselineHeight(32.dp)) Spacer(modifier = Modifier.height(8.dp)) HorizontalDivider() Spacer(modifier = Modifier.height(8.dp)) deviceData.phoneNumbers.forEach { PhoneNumber( value = it, modifier = Modifier .baselineHeight(24.dp) .clickable(onClick = { onPhoneNumberClicked(it) }), style = MaterialTheme.typography.bodyLarge.copy(color = MaterialTheme.colorScheme.primary, fontWeight = FontWeight.Bold, fontFamily = FontFamily.Monospace) ) Spacer(modifier = Modifier.height(8.dp)) } } } } } @Composable private fun Name( deviceData: DeviceScreenState, modifier: Modifier ) { Text( text = deviceData.name, modifier = modifier, style = MaterialTheme.typography.headlineSmall ) } @Composable private fun PhoneNumber( value: String, modifier: Modifier, style: TextStyle ) { Text( text = value, modifier = modifier, style = style ) } @Composable fun DeviceError() { Text(stringResource(R.string.device_error)) }