diff --git a/composeApp/src/commonMain/composeResources/files/ic_back.svg b/composeApp/src/commonMain/composeResources/files/ic_back.svg index 978de15..9d016fd 100644 --- a/composeApp/src/commonMain/composeResources/files/ic_back.svg +++ b/composeApp/src/commonMain/composeResources/files/ic_back.svg @@ -1,11 +1,13 @@ - - - - - - - - - + + + + + + + + + diff --git a/composeApp/src/commonMain/kotlin/org/whosin/client/presentation/auth/clubcode/ClubCodeInputScreen.kt b/composeApp/src/commonMain/kotlin/org/whosin/client/presentation/auth/clubcode/ClubCodeInputScreen.kt index 65ffc7f..0cdec61 100644 --- a/composeApp/src/commonMain/kotlin/org/whosin/client/presentation/auth/clubcode/ClubCodeInputScreen.kt +++ b/composeApp/src/commonMain/kotlin/org/whosin/client/presentation/auth/clubcode/ClubCodeInputScreen.kt @@ -12,7 +12,6 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -33,7 +32,7 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import kotlinx.coroutines.delay -import org.jetbrains.compose.resources.painterResource +import coil3.compose.AsyncImage import org.jetbrains.compose.resources.stringResource import org.jetbrains.compose.ui.tooling.preview.Preview import org.whosin.client.presentation.auth.login.component.CommonLoginButton @@ -45,7 +44,6 @@ import whosinclient.composeapp.generated.resources.club_code_error_message import whosinclient.composeapp.generated.resources.club_code_title_1 import whosinclient.composeapp.generated.resources.club_code_title_2 import whosinclient.composeapp.generated.resources.confirm_button -import whosinclient.composeapp.generated.resources.ic_back @Composable @@ -108,10 +106,9 @@ fun ClubCodeInputScreen( .padding(bottom = 32.dp) .size(24.dp) ) { - Icon( - painter = painterResource(Res.drawable.ic_back), + AsyncImage( + model = Res.getUri("files/ic_back.svg"), contentDescription = stringResource(Res.string.back_button), - tint = Color.Black, modifier = Modifier.size(18.dp) ) } diff --git a/composeApp/src/commonMain/kotlin/org/whosin/client/presentation/auth/login/EmailVerificationScreen.kt b/composeApp/src/commonMain/kotlin/org/whosin/client/presentation/auth/login/EmailVerificationScreen.kt index 4f5380e..812e382 100644 --- a/composeApp/src/commonMain/kotlin/org/whosin/client/presentation/auth/login/EmailVerificationScreen.kt +++ b/composeApp/src/commonMain/kotlin/org/whosin/client/presentation/auth/login/EmailVerificationScreen.kt @@ -9,7 +9,6 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size -import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -29,7 +28,7 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import kotlinx.coroutines.delay -import org.jetbrains.compose.resources.painterResource +import coil3.compose.AsyncImage import org.jetbrains.compose.resources.stringResource import org.jetbrains.compose.ui.tooling.preview.Preview import org.whosin.client.presentation.auth.login.component.CommonLoginButton @@ -38,7 +37,6 @@ import whosinclient.composeapp.generated.resources.Res import whosinclient.composeapp.generated.resources.back_button import whosinclient.composeapp.generated.resources.confirm_button import whosinclient.composeapp.generated.resources.email_verification_title -import whosinclient.composeapp.generated.resources.ic_back @Composable fun EmailVerificationScreen( @@ -86,10 +84,9 @@ fun EmailVerificationScreen( .padding(bottom = 32.dp) .size(24.dp) ) { - Icon( - painter = painterResource(Res.drawable.ic_back), + AsyncImage( + model = Res.getUri("files/ic_back.svg"), contentDescription = stringResource(Res.string.back_button), - tint = Color.Black, modifier = Modifier.size(18.dp) ) } @@ -123,6 +120,8 @@ fun EmailVerificationScreen( } else if (input.isEmpty() && !wasEmpty && index > 0) { currentFocusIndex = index - 1 focusRequesters[index - 1].requestFocus() + } else if (input.isNotEmpty()) { + currentFocusIndex = index } } }, diff --git a/composeApp/src/commonMain/kotlin/org/whosin/client/presentation/auth/login/FindPasswordScreen.kt b/composeApp/src/commonMain/kotlin/org/whosin/client/presentation/auth/login/FindPasswordScreen.kt index c8d3766..73146bd 100644 --- a/composeApp/src/commonMain/kotlin/org/whosin/client/presentation/auth/login/FindPasswordScreen.kt +++ b/composeApp/src/commonMain/kotlin/org/whosin/client/presentation/auth/login/FindPasswordScreen.kt @@ -7,7 +7,6 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size -import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -21,7 +20,7 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import org.jetbrains.compose.resources.painterResource +import coil3.compose.AsyncImage import org.jetbrains.compose.resources.stringResource import org.jetbrains.compose.ui.tooling.preview.Preview import org.whosin.client.presentation.auth.login.component.CommonLoginButton @@ -29,7 +28,6 @@ import org.whosin.client.presentation.auth.login.component.CommonLoginInputField import whosinclient.composeapp.generated.resources.Res import whosinclient.composeapp.generated.resources.back_button import whosinclient.composeapp.generated.resources.email_placeholder -import whosinclient.composeapp.generated.resources.ic_back import whosinclient.composeapp.generated.resources.password_reset_title import whosinclient.composeapp.generated.resources.send_email_button @@ -59,12 +57,10 @@ fun FindPasswordScreen( .padding(bottom = 32.dp) .size(24.dp) ) { - Icon( - painter = painterResource(Res.drawable.ic_back), + AsyncImage( + model = Res.getUri("files/ic_back.svg"), contentDescription = stringResource(Res.string.back_button), - tint = Color.Black, - modifier = Modifier - .size(18.dp) + modifier = Modifier.size(18.dp) ) } diff --git a/composeApp/src/commonMain/kotlin/org/whosin/client/presentation/auth/login/NicknameInputScreen.kt b/composeApp/src/commonMain/kotlin/org/whosin/client/presentation/auth/login/NicknameInputScreen.kt index e023f9c..17b11d6 100644 --- a/composeApp/src/commonMain/kotlin/org/whosin/client/presentation/auth/login/NicknameInputScreen.kt +++ b/composeApp/src/commonMain/kotlin/org/whosin/client/presentation/auth/login/NicknameInputScreen.kt @@ -7,7 +7,6 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size -import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -21,14 +20,13 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import org.jetbrains.compose.resources.painterResource +import coil3.compose.AsyncImage import org.jetbrains.compose.resources.stringResource import org.jetbrains.compose.ui.tooling.preview.Preview import org.whosin.client.presentation.auth.login.component.CommonLoginButton import org.whosin.client.presentation.auth.login.component.CommonLoginInputField import whosinclient.composeapp.generated.resources.Res import whosinclient.composeapp.generated.resources.back_button -import whosinclient.composeapp.generated.resources.ic_back import whosinclient.composeapp.generated.resources.next_button import whosinclient.composeapp.generated.resources.nickname_input_placeholder import whosinclient.composeapp.generated.resources.nickname_input_title @@ -60,10 +58,9 @@ fun NicknameInputScreen( .padding(bottom = 32.dp) .size(24.dp) ) { - Icon( - painter = painterResource(Res.drawable.ic_back), + AsyncImage( + model = Res.getUri("files/ic_back.svg"), contentDescription = stringResource(Res.string.back_button), - tint = Color.Black, modifier = Modifier.size(18.dp) ) } diff --git a/composeApp/src/commonMain/kotlin/org/whosin/client/presentation/auth/login/PasswordInputScreen.kt b/composeApp/src/commonMain/kotlin/org/whosin/client/presentation/auth/login/PasswordInputScreen.kt index 4aa1c5a..821483b 100644 --- a/composeApp/src/commonMain/kotlin/org/whosin/client/presentation/auth/login/PasswordInputScreen.kt +++ b/composeApp/src/commonMain/kotlin/org/whosin/client/presentation/auth/login/PasswordInputScreen.kt @@ -7,7 +7,6 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size -import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -21,14 +20,13 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import org.jetbrains.compose.resources.painterResource +import coil3.compose.AsyncImage import org.jetbrains.compose.resources.stringResource import org.jetbrains.compose.ui.tooling.preview.Preview import org.whosin.client.presentation.auth.login.component.CommonLoginButton import org.whosin.client.presentation.auth.login.component.CommonLoginInputField import whosinclient.composeapp.generated.resources.Res import whosinclient.composeapp.generated.resources.back_button -import whosinclient.composeapp.generated.resources.ic_back import whosinclient.composeapp.generated.resources.next_button import whosinclient.composeapp.generated.resources.password_confirm_label import whosinclient.composeapp.generated.resources.password_confirm_placeholder @@ -65,10 +63,9 @@ fun PasswordInputScreen( .padding(bottom = 32.dp) .size(24.dp) ) { - Icon( - painter = painterResource(Res.drawable.ic_back), + AsyncImage( + model = Res.getUri("files/ic_back.svg"), contentDescription = stringResource(Res.string.back_button), - tint = Color.Black, modifier = Modifier.size(18.dp) ) } diff --git a/composeApp/src/commonMain/kotlin/org/whosin/client/presentation/auth/login/SignupEmailInputScreen.kt b/composeApp/src/commonMain/kotlin/org/whosin/client/presentation/auth/login/SignupEmailInputScreen.kt index e0bdc43..5d988a4 100644 --- a/composeApp/src/commonMain/kotlin/org/whosin/client/presentation/auth/login/SignupEmailInputScreen.kt +++ b/composeApp/src/commonMain/kotlin/org/whosin/client/presentation/auth/login/SignupEmailInputScreen.kt @@ -7,7 +7,6 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size -import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -21,7 +20,7 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import org.jetbrains.compose.resources.painterResource +import coil3.compose.AsyncImage import org.jetbrains.compose.resources.stringResource import org.jetbrains.compose.ui.tooling.preview.Preview import org.whosin.client.presentation.auth.login.component.CommonLoginButton @@ -29,7 +28,6 @@ import org.whosin.client.presentation.auth.login.component.CommonLoginInputField import whosinclient.composeapp.generated.resources.Res import whosinclient.composeapp.generated.resources.back_button import whosinclient.composeapp.generated.resources.email_placeholder -import whosinclient.composeapp.generated.resources.ic_back import whosinclient.composeapp.generated.resources.next_button import whosinclient.composeapp.generated.resources.signup_title @@ -59,12 +57,10 @@ fun SignupScreen( .padding(bottom = 32.dp) .size(24.dp) ) { - Icon( - painter = painterResource(Res.drawable.ic_back), + AsyncImage( + model = Res.getUri("files/ic_back.svg"), contentDescription = stringResource(Res.string.back_button), - tint = Color.Black, - modifier = Modifier - .size(18.dp) + modifier = Modifier.size(18.dp) ) } diff --git a/composeApp/src/commonMain/kotlin/org/whosin/client/presentation/auth/login/component/NumberInputBox.kt b/composeApp/src/commonMain/kotlin/org/whosin/client/presentation/auth/login/component/NumberInputBox.kt index 105a791..76a8b36 100644 --- a/composeApp/src/commonMain/kotlin/org/whosin/client/presentation/auth/login/component/NumberInputBox.kt +++ b/composeApp/src/commonMain/kotlin/org/whosin/client/presentation/auth/login/component/NumberInputBox.kt @@ -70,14 +70,17 @@ fun NumberInputBox( value = textFieldValue, onValueChange = { newValue -> val cleaned = newValue.text.replace("\u200B", "") - val filtered = cleaned.filter { it.isDigit() }.take(1) - + val filtered = cleaned.filter { it.isDigit() } if (newValue.text.isEmpty() && value.isEmpty()) { onBackspace?.invoke() return@BasicTextField } - - onValueChange(filtered) + + if (filtered.isNotEmpty()) { + onValueChange(filtered.last().toString()) + } else { + onValueChange("") + } }, textStyle = textStyle.copy( color = if (value.isEmpty()) Color.Transparent else Color.Black