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.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.widthIn
import androidx.compose.foundation.text.KeyboardActions
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.ArrowDropDown
import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.OutlinedButton
import androidx.compose.material3.OutlinedTextField
import androidx.compose.material3.OutlinedTextFieldDefaults
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.platform.LocalSoftwareKeyboardController
import androidx.compose.ui.text.input.ImeAction
import androidx.compose.ui.text.input.KeyboardType
import androidx.compose.ui.unit.dp
@Composable
fun ScreenSignIn() {
var phoneNumber by remember { mutableStateOf("5554311394") }
val countryCode by remember { mutableStateOf("+44") }
val onSubmit: () -> Unit = {
}
val focus = LocalFocusManager.current
val keyboardController = LocalSoftwareKeyboardController.current
Scaffold { padding ->
Box(modifier = Modifier.fillMaxSize().padding(padding), contentAlignment = Alignment.TopCenter) {
Column(
modifier = Modifier
.widthIn(max = 400.dp)
.fillMaxSize()
.padding(horizontal = 16.dp)
.padding(vertical = 32.dp),
) {
Text("What's your number?", style = MaterialTheme.typography.headlineLarge)
Spacer(Modifier.height(12.dp))
Text("We verify the phone number of all our members", style = MaterialTheme.typography.bodyMedium)
Spacer(Modifier.height(48.dp))
Row(
horizontalArrangement = Arrangement.spacedBy(8.dp),
verticalAlignment = Alignment.CenterVertically
) {
OutlinedButton(
onClick = { },
shape = OutlinedTextFieldDefaults.shape,
colors = ButtonDefaults.outlinedButtonColors(contentColor = MaterialTheme.colorScheme.onSurface),
modifier = Modifier
.padding(top = 8.dp)
) {
Row(
verticalAlignment = Alignment.CenterVertically,
modifier = Modifier.padding(vertical = 8.dp)
) {
Text(countryCode)
Icon(Icons.Filled.ArrowDropDown, contentDescription = "Select")
}
}
OutlinedTextField(
modifier = Modifier.fillMaxWidth(),
value = phoneNumber,
label = { Text("Phone number") },
keyboardOptions = KeyboardOptions(
keyboardType = KeyboardType.Phone,
imeAction = ImeAction.Send
),
keyboardActions = KeyboardActions(
onSend = {
focus.clearFocus(force = true)
keyboardController?.hide()
if (phoneNumber.isNotBlank()) {
onSubmit()
}
}
),
onValueChange = {
phoneNumber = it
},
maxLines = 1
)
}
Spacer(Modifier.height(24.dp))
Text(
text = "We will send you an SMS verification. Data charges might apply.",
style = MaterialTheme.typography.bodyMedium
)
Spacer(Modifier.height(8.dp))
Spacer(Modifier.weight(1f))
Column(Modifier.padding(horizontal = 16.dp)) {
Button(enabled = phoneNumber.isNotBlank(), onClick = onSubmit, modifier = Modifier.fillMaxWidth()) {
Text("Continue")
}
}
}
}
}
}