app/src/main/java/com/studhub/app/presentation/ui/common/input/PasswordTextField.kt
package com.studhub.app.presentation.ui.common.input
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Check
import androidx.compose.material.icons.filled.CheckCircle
import androidx.compose.material3.*
import androidx.compose.runtime.*
import androidx.compose.ui.text.input.KeyboardType
import androidx.compose.ui.text.input.PasswordVisualTransformation
import androidx.compose.ui.text.input.TextFieldValue
import androidx.compose.ui.text.input.VisualTransformation
@Composable
fun PasswordTextField(
label: String = "Password",
password: TextFieldValue,
onPasswordValueChange: (newValue: TextFieldValue) -> Unit
) {
var passwordIsVisible by remember { mutableStateOf(false) }
OutlinedTextField(
value = password,
onValueChange = { newValue ->
onPasswordValueChange(newValue)
},
label = {
Text(
text = label
)
},
singleLine = true,
visualTransformation = if (passwordIsVisible) {
VisualTransformation.None
} else {
PasswordVisualTransformation()
},
keyboardOptions = KeyboardOptions(
keyboardType = KeyboardType.Password
),
trailingIcon = {
val icon = if (passwordIsVisible) {
Icons.Filled.CheckCircle
} else {
Icons.Filled.Check
}
IconButton(
onClick = {
passwordIsVisible = !passwordIsVisible
}
) {
Icon(
imageVector = icon,
contentDescription = null
)
}
},
colors = OutlinedTextFieldDefaults.colors(
unfocusedTextColor = MaterialTheme.colorScheme.onBackground,
focusedTextColor = MaterialTheme.colorScheme.onBackground
)
)
}