From 80af323972dafa6cb17004f1566258b8c5c94c15 Mon Sep 17 00:00:00 2001 From: AbronStudio Date: Wed, 30 Jul 2025 15:46:29 +0330 Subject: [PATCH 1/2] feat(auth): enhance login and registration screens - Update login screen to navigate to registration details on "Register" click. - Modify registration screen to navigate back to login and update image resource. - Revise onboarding strings for a more engaging user experience. --- .../chat/revolt/screens/login/LoginScreen.kt | 9 +- .../screens/register/RegisterDetailsScreen.kt | 22 +- .../main/res/drawable/register_happy_img.xml | 213 ++++++++++++++++++ .../drawable/set_username_character_img.xml | 165 ++++++++++++++ app/src/main/res/values/strings.xml | 4 +- 5 files changed, 405 insertions(+), 8 deletions(-) create mode 100644 app/src/main/res/drawable/register_happy_img.xml create mode 100644 app/src/main/res/drawable/set_username_character_img.xml diff --git a/app/src/main/java/chat/revolt/screens/login/LoginScreen.kt b/app/src/main/java/chat/revolt/screens/login/LoginScreen.kt index ebe969a6..c8f9b793 100644 --- a/app/src/main/java/chat/revolt/screens/login/LoginScreen.kt +++ b/app/src/main/java/chat/revolt/screens/login/LoginScreen.kt @@ -2,6 +2,7 @@ package chat.revolt.screens.login import android.util.Log import androidx.compose.foundation.Image +import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row @@ -212,7 +213,13 @@ fun LoginScreen(navController: NavController, viewModel: LoginViewModel = hiltVi }, onClick = { navController.popBackStack() } ) - Text(text = "Register") + Text( + modifier = Modifier.clickable { + navController.popBackStack() + navController.navigate("register/details") + }, + text = "Register" + ) } }, ) diff --git a/app/src/main/java/chat/revolt/screens/register/RegisterDetailsScreen.kt b/app/src/main/java/chat/revolt/screens/register/RegisterDetailsScreen.kt index bd0ab8d0..4af3b24b 100644 --- a/app/src/main/java/chat/revolt/screens/register/RegisterDetailsScreen.kt +++ b/app/src/main/java/chat/revolt/screens/register/RegisterDetailsScreen.kt @@ -2,6 +2,7 @@ package chat.revolt.screens.register import android.content.Context import androidx.compose.foundation.Image +import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row @@ -129,7 +130,8 @@ fun RegisterDetailsScreen( topBar = { Column { TopAppBar( - modifier = Modifier.fillMaxWidth() + modifier = Modifier + .fillMaxWidth() .padding(horizontal = 16.dp), title = {}, actions = { @@ -147,7 +149,13 @@ fun RegisterDetailsScreen( }, onClick = { navController.popBackStack() } ) - Text(text = stringResource(R.string.login)) + Text( + modifier = Modifier.clickable { + navController.popBackStack() + navController.navigate("login/login") + }, + text = stringResource(R.string.login) + ) } }, ) @@ -168,7 +176,7 @@ fun RegisterDetailsScreen( Image( modifier = Modifier .size(120.dp), - painter = painterResource(R.drawable.login_charachter_img), + painter = painterResource(R.drawable.register_happy_img), contentDescription = "Login character" ) Spacer(modifier = Modifier.height(4.dp)) @@ -212,7 +220,9 @@ fun RegisterDetailsScreen( label = stringResource(R.string.register_email), type = KeyboardType.Email, action = ImeAction.Next, - modifier = Modifier.fillMaxWidth().semantics { contentType = ContentType.EmailAddress } + modifier = Modifier + .fillMaxWidth() + .semantics { contentType = ContentType.EmailAddress } ) Spacer(modifier = Modifier.height(16.dp)) FormTextField( @@ -221,7 +231,9 @@ fun RegisterDetailsScreen( label = stringResource(R.string.register_password), type = KeyboardType.Email, action = ImeAction.Next, - modifier = Modifier.fillMaxWidth().semantics { contentType = ContentType.EmailAddress } + modifier = Modifier + .fillMaxWidth() + .semantics { contentType = ContentType.EmailAddress } ) Spacer(modifier = Modifier.height(32.dp)) diff --git a/app/src/main/res/drawable/register_happy_img.xml b/app/src/main/res/drawable/register_happy_img.xml new file mode 100644 index 00000000..9c39d4ba --- /dev/null +++ b/app/src/main/res/drawable/register_happy_img.xml @@ -0,0 +1,213 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/set_username_character_img.xml b/app/src/main/res/drawable/set_username_character_img.xml new file mode 100644 index 00000000..3061118c --- /dev/null +++ b/app/src/main/res/drawable/set_username_character_img.xml @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9bc0ef07..755735af 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -16,8 +16,8 @@ Privacy Policy Community Guidelines - Find your community, connect with the world. - Revolt is one of the best ways to stay connected with your friends and community, anywhere, anytime. + Welcome to PepChat! + Join endless chats and connections; PepChat is your place to vibe with friends! Email Password From 672ed0531b21affbdb3ab7f0e63a71e013effc97 Mon Sep 17 00:00:00 2001 From: AbronStudio Date: Thu, 31 Jul 2025 11:52:31 +0330 Subject: [PATCH 2/2] feat(ui): enhance button styles and update UI components - Add DefaultButtonStyle class for consistent button styling. - Update button shapes across various screens to improve UI consistency. - Modify string resources for better clarity and engagement. - Introduce new drawable resources for enhanced visual elements. --- .../chat/revolt/activities/MainActivity.kt | 2 +- .../composables/generic/DefaultButtonStyle.kt | 4 + .../chooseplatform/ChoosePlatformScreen.kt | 9 +- .../screens/login/LoginGreetingScreen.kt | 27 ++- .../chat/revolt/screens/login/LoginScreen.kt | 9 +- .../screens/register/OnboardingScreen.kt | 59 +++++-- .../screens/register/RegisterDetailsScreen.kt | 9 +- .../screens/register/RegisterVerifyScreen.kt | 111 ++++++++---- .../main/java/chat/revolt/ui/theme/Theme.kt | 11 ++ .../find_and_recognize_character_img.xml | 165 ++++++++++++++++++ app/src/main/res/drawable/main_img.xml | 25 +++ app/src/main/res/values/strings.xml | 16 +- 12 files changed, 387 insertions(+), 60 deletions(-) create mode 100644 app/src/main/java/chat/revolt/composables/generic/DefaultButtonStyle.kt create mode 100644 app/src/main/res/drawable/find_and_recognize_character_img.xml create mode 100644 app/src/main/res/drawable/main_img.xml diff --git a/app/src/main/java/chat/revolt/activities/MainActivity.kt b/app/src/main/java/chat/revolt/activities/MainActivity.kt index 7878fd26..37766434 100644 --- a/app/src/main/java/chat/revolt/activities/MainActivity.kt +++ b/app/src/main/java/chat/revolt/activities/MainActivity.kt @@ -482,7 +482,7 @@ fun AppEntrypoint( RevoltTheme( requestedTheme = LoadedSettings.theme, - colourOverrides = SyncedSettings.android.colourOverrides + colourOverrides = SyncedSettings.android.colourOverrides, ) { Box( Modifier diff --git a/app/src/main/java/chat/revolt/composables/generic/DefaultButtonStyle.kt b/app/src/main/java/chat/revolt/composables/generic/DefaultButtonStyle.kt new file mode 100644 index 00000000..f52b17ca --- /dev/null +++ b/app/src/main/java/chat/revolt/composables/generic/DefaultButtonStyle.kt @@ -0,0 +1,4 @@ +package chat.revolt.composables.generic + +class DefaultButtonStyle { +} \ No newline at end of file diff --git a/app/src/main/java/chat/revolt/screens/chooseplatform/ChoosePlatformScreen.kt b/app/src/main/java/chat/revolt/screens/chooseplatform/ChoosePlatformScreen.kt index ae77ecfd..833b89a5 100644 --- a/app/src/main/java/chat/revolt/screens/chooseplatform/ChoosePlatformScreen.kt +++ b/app/src/main/java/chat/revolt/screens/chooseplatform/ChoosePlatformScreen.kt @@ -13,6 +13,7 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.safeDrawingPadding import androidx.compose.foundation.layout.size import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.shape.CornerSize import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Button import androidx.compose.material3.Card @@ -193,7 +194,13 @@ fun ChoosePlatformScreen(navController: NavController) { modifier = Modifier .padding(top = 32.dp, bottom = 16.dp) .fillMaxWidth() - .testTag("confirm_platform_button") + .testTag("confirm_platform_button"), + shape = MaterialTheme.shapes.small.copy( + topStart = CornerSize(8.dp), + topEnd = CornerSize(8.dp), + bottomStart = CornerSize(8.dp), + bottomEnd = CornerSize(8.dp) + ) ) { Text(text = stringResource(R.string.confirm)) } diff --git a/app/src/main/java/chat/revolt/screens/login/LoginGreetingScreen.kt b/app/src/main/java/chat/revolt/screens/login/LoginGreetingScreen.kt index 1ffa83c0..7b81e693 100644 --- a/app/src/main/java/chat/revolt/screens/login/LoginGreetingScreen.kt +++ b/app/src/main/java/chat/revolt/screens/login/LoginGreetingScreen.kt @@ -14,6 +14,7 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.safeDrawingPadding +import androidx.compose.foundation.shape.CornerSize import androidx.compose.material3.Button import androidx.compose.material3.ElevatedButton import androidx.compose.material3.LocalContentColor @@ -37,8 +38,10 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import androidx.compose.ui.tooling.preview.Preview import androidx.navigation.NavController import chat.revolt.R +import androidx.navigation.compose.rememberNavController @OptIn(ExperimentalFoundationApi::class) @Composable @@ -130,7 +133,13 @@ fun LoginGreetingScreen(navController: NavController) { onClick = { navController.navigate("login/login") }, modifier = Modifier .fillMaxWidth() - .testTag("view_login_page_button") + .testTag("view_login_page_button"), + shape = MaterialTheme.shapes.small.copy( + topStart = CornerSize(8.dp), + topEnd = CornerSize(8.dp), + bottomStart = CornerSize(8.dp), + bottomEnd = CornerSize(8.dp) + ) ) { Text(text = stringResource(R.string.login)) } @@ -141,7 +150,13 @@ fun LoginGreetingScreen(navController: NavController) { onClick = { navController.navigate("register/details") }, modifier = Modifier .fillMaxWidth() - .testTag("view_signup_page_button") + .testTag("view_signup_page_button"), + shape = MaterialTheme.shapes.small.copy( + topStart = CornerSize(8.dp), + topEnd = CornerSize(8.dp), + bottomStart = CornerSize(8.dp), + bottomEnd = CornerSize(8.dp) + ) ) { Text(text = stringResource(R.string.signup)) } @@ -171,3 +186,11 @@ fun LoginGreetingScreen(navController: NavController) { } } } + +@Preview(showBackground = true) +@Composable +fun LoginGreetingScreenPreview() { + val navController = rememberNavController() + LoginGreetingScreen(navController) +} + diff --git a/app/src/main/java/chat/revolt/screens/login/LoginScreen.kt b/app/src/main/java/chat/revolt/screens/login/LoginScreen.kt index c8f9b793..8d2ff063 100644 --- a/app/src/main/java/chat/revolt/screens/login/LoginScreen.kt +++ b/app/src/main/java/chat/revolt/screens/login/LoginScreen.kt @@ -13,6 +13,7 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.imePadding import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size +import androidx.compose.foundation.shape.CornerSize import androidx.compose.foundation.text.input.TextObfuscationMode import androidx.compose.foundation.text.input.rememberTextFieldState import androidx.compose.material3.Button @@ -343,7 +344,13 @@ fun LoginScreen(navController: NavController, viewModel: LoginViewModel = hiltVi }, modifier = Modifier .fillMaxWidth() - .testTag("confirm_platform_button") + .testTag("confirm_platform_button"), + shape = MaterialTheme.shapes.small.copy( + topStart = CornerSize(8.dp), + topEnd = CornerSize(8.dp), + bottomStart = CornerSize(8.dp), + bottomEnd = CornerSize(8.dp) + ) ) { Text(text = stringResource(R.string.login)) } diff --git a/app/src/main/java/chat/revolt/screens/register/OnboardingScreen.kt b/app/src/main/java/chat/revolt/screens/register/OnboardingScreen.kt index 43fb5552..3e47e96a 100644 --- a/app/src/main/java/chat/revolt/screens/register/OnboardingScreen.kt +++ b/app/src/main/java/chat/revolt/screens/register/OnboardingScreen.kt @@ -1,14 +1,20 @@ package chat.revolt.screens.register +import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.ExperimentalLayoutApi 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.imeNestedScroll import androidx.compose.foundation.layout.safeDrawingPadding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.sizeIn import androidx.compose.material3.Button +import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -18,19 +24,24 @@ import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import androidx.compose.ui.tooling.preview.Preview import androidx.navigation.NavController +import androidx.navigation.compose.rememberNavController import chat.revolt.R import chat.revolt.api.routes.onboard.OnboardingCompletionBody import chat.revolt.api.routes.onboard.completeOnboarding +import chat.revolt.composables.generic.DefaultButtonStyle import chat.revolt.composables.generic.FormTextField import chat.revolt.persistence.KVStorage import kotlinx.coroutines.launch +@OptIn(ExperimentalLayoutApi::class) @Composable fun OnboardingScreen(navController: NavController, onOnboardingComplete: () -> Unit) { val coroutineScope = rememberCoroutineScope() @@ -67,7 +78,8 @@ fun OnboardingScreen(navController: NavController, onOnboardingComplete: () -> U modifier = Modifier .fillMaxSize() .padding(20.dp) - .safeDrawingPadding(), + .safeDrawingPadding() + .imeNestedScroll(), verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally ) { @@ -77,6 +89,13 @@ fun OnboardingScreen(navController: NavController, onOnboardingComplete: () -> U verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally ) { + Image( + modifier = Modifier + .size(width = 343.dp, height = 197.dp), + painter = painterResource(R.drawable.find_and_recognize_character_img), + contentDescription = "Finder and Recognizer Character" + ) + Spacer(modifier = Modifier.height(32.dp)) Text( text = stringResource(R.string.onboarding_welcome), style = MaterialTheme.typography.displaySmall.copy( @@ -146,11 +165,29 @@ fun OnboardingScreen(navController: NavController, onOnboardingComplete: () -> U horizontalAlignment = Alignment.CenterHorizontally ) { FormTextField( + modifier = Modifier.fillMaxWidth(), value = username.value, onChange = { username.value = it }, label = stringResource(R.string.onboarding_username) ) - + Spacer(modifier = Modifier.height(32.dp)) + Button( + modifier = Modifier.fillMaxWidth(), + onClick = { + coroutineScope.launch { + onboard() + } + }, + enabled = username.value.isNotBlank(), + shape = MaterialTheme.shapes.small.copy( + topStart = androidx.compose.foundation.shape.CornerSize(8.dp), + topEnd = androidx.compose.foundation.shape.CornerSize(8.dp), + bottomStart = androidx.compose.foundation.shape.CornerSize(8.dp), + bottomEnd = androidx.compose.foundation.shape.CornerSize(8.dp) + ) + ) { + Text(text = stringResource(R.string.complete_registration)) + } if (error.value.isNotBlank()) { Text( text = error.value, @@ -161,16 +198,12 @@ fun OnboardingScreen(navController: NavController, onOnboardingComplete: () -> U } } } - - Button( - onClick = { - coroutineScope.launch { - onboard() - } - }, - enabled = username.value.isNotBlank() - ) { - Text(text = stringResource(R.string.next)) - } } } + +@Preview(backgroundColor = 0xFFFFFFFF, showBackground = true) +@Composable +fun OnboardingScreenPreview() { + val navController = rememberNavController() + OnboardingScreen(navController = navController, onOnboardingComplete = {}) +} diff --git a/app/src/main/java/chat/revolt/screens/register/RegisterDetailsScreen.kt b/app/src/main/java/chat/revolt/screens/register/RegisterDetailsScreen.kt index 4af3b24b..eb3e00dc 100644 --- a/app/src/main/java/chat/revolt/screens/register/RegisterDetailsScreen.kt +++ b/app/src/main/java/chat/revolt/screens/register/RegisterDetailsScreen.kt @@ -13,6 +13,7 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.imePadding import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size +import androidx.compose.foundation.shape.CornerSize import androidx.compose.material3.Button import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.HorizontalDivider @@ -247,7 +248,13 @@ fun RegisterDetailsScreen( }, modifier = Modifier .fillMaxWidth() - .testTag("setup_continue_button") + .testTag("setup_continue_button"), + shape = MaterialTheme.shapes.small.copy( + topStart = CornerSize(8.dp), + topEnd = CornerSize(8.dp), + bottomStart = CornerSize(8.dp), + bottomEnd = CornerSize(8.dp) + ) ) { Text(text = stringResource(R.string.continue_)) } diff --git a/app/src/main/java/chat/revolt/screens/register/RegisterVerifyScreen.kt b/app/src/main/java/chat/revolt/screens/register/RegisterVerifyScreen.kt index 62a48e0e..ddc731d7 100644 --- a/app/src/main/java/chat/revolt/screens/register/RegisterVerifyScreen.kt +++ b/app/src/main/java/chat/revolt/screens/register/RegisterVerifyScreen.kt @@ -3,28 +3,42 @@ package chat.revolt.screens.register import android.content.Intent import androidx.activity.compose.rememberLauncherForActivityResult import androidx.activity.result.contract.ActivityResultContracts +import androidx.compose.foundation.Image +import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement 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.safeDrawingPadding +import androidx.compose.foundation.shape.CornerSize import androidx.compose.material3.Button +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.HorizontalDivider +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Scaffold import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBar import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import androidx.compose.ui.tooling.preview.Preview +import androidx.navigation.compose.rememberNavController import androidx.navigation.NavController import chat.revolt.R +@OptIn(ExperimentalMaterial3Api::class) @Composable fun RegisterVerifyScreen(navController: NavController, email: String) { val intentLauncher = @@ -32,20 +46,48 @@ fun RegisterVerifyScreen(navController: NavController, email: String) { contract = ActivityResultContracts.StartActivityForResult() ) {} - Column( - modifier = Modifier - .fillMaxSize() - .padding(20.dp) - .safeDrawingPadding(), - verticalArrangement = Arrangement.Center, - horizontalAlignment = Alignment.CenterHorizontally - ) { + Scaffold( + topBar = { + Column { + TopAppBar( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 16.dp), + title = {}, + actions = { + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.Start, + verticalAlignment = Alignment.CenterVertically, + ) { + IconButton( + content = { + Icon( + painter = painterResource(R.drawable.icn_arrow_back_24dp), + contentDescription = stringResource(R.string.back) + ) + }, + onClick = { navController.popBackStack() } + ) + } + }, + ) + HorizontalDivider() + } + }, + ) { innerPadding -> Column( - modifier = Modifier - .weight(1f), - verticalArrangement = Arrangement.Center, + modifier = Modifier.fillMaxSize() + .padding(innerPadding) + .padding(16.dp), + verticalArrangement = Arrangement.Top, horizontalAlignment = Alignment.CenterHorizontally ) { + Image( + painter = painterResource(R.drawable.main_img), + contentDescription = "Mail Image" + ) + Spacer(modifier = Modifier.height(4.dp)) Text( text = stringResource(R.string.check_mail), style = MaterialTheme.typography.displaySmall.copy( @@ -65,7 +107,8 @@ fun RegisterVerifyScreen(navController: NavController, email: String) { color = MaterialTheme.colorScheme.onBackground.copy( alpha = 0.5f ), - style = MaterialTheme.typography.titleMedium.copy( + style = MaterialTheme.typography.bodySmall.copy( + fontSize = 15.sp, textAlign = TextAlign.Center, fontWeight = FontWeight.Normal ), @@ -74,31 +117,33 @@ fun RegisterVerifyScreen(navController: NavController, email: String) { .fillMaxWidth() ) - Spacer(modifier = Modifier.height(10.dp)) + Spacer(modifier = Modifier.height(32.dp)) - Text( - text = stringResource(R.string.verify_then_choose_username), - color = MaterialTheme.colorScheme.onBackground.copy( - alpha = 0.5f - ), - style = MaterialTheme.typography.titleMedium.copy( - textAlign = TextAlign.Center, - fontWeight = FontWeight.Normal - ), + Button( modifier = Modifier - .padding(horizontal = 20.dp) - .fillMaxWidth() - ) - - Spacer(modifier = Modifier.height(40.dp)) - - Button(onClick = { - val intent = Intent(Intent.ACTION_MAIN) - intent.addCategory(Intent.CATEGORY_APP_EMAIL) - intentLauncher.launch(intent) - }) { + .fillMaxWidth(), + onClick = { + val intent = Intent(Intent.ACTION_MAIN) + intent.addCategory(Intent.CATEGORY_APP_EMAIL) + intentLauncher.launch(intent) + }, + shape = MaterialTheme.shapes.small.copy( + topStart = CornerSize(8.dp), + topEnd = CornerSize(8.dp), + bottomStart = CornerSize(8.dp), + bottomEnd = CornerSize(8.dp) + ) + ) { Text(text = stringResource(R.string.open_mail_app)) } } } } + +@Preview(backgroundColor = 0xffffffff, showBackground = true) +@Composable +fun RegisterVerifyScreenPreview() { + val navController = rememberNavController() + val email = "design@abron.co" + RegisterVerifyScreen(navController = navController, email = email) +} diff --git a/app/src/main/java/chat/revolt/ui/theme/Theme.kt b/app/src/main/java/chat/revolt/ui/theme/Theme.kt index a2e5391c..b8b0411c 100644 --- a/app/src/main/java/chat/revolt/ui/theme/Theme.kt +++ b/app/src/main/java/chat/revolt/ui/theme/Theme.kt @@ -4,6 +4,8 @@ import android.annotation.SuppressLint import android.app.Activity import android.os.Build import androidx.compose.foundation.isSystemInDarkTheme +import androidx.compose.foundation.shape.CornerBasedShape +import androidx.compose.foundation.shape.CornerSize import androidx.compose.material3.ColorScheme import androidx.compose.material3.MaterialTheme import androidx.compose.material3.darkColorScheme @@ -16,6 +18,7 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalView +import androidx.compose.ui.unit.dp import androidx.core.view.ViewCompat val LightColorScheme = lightColorScheme( @@ -178,6 +181,14 @@ fun RevoltTheme( val colorScheme = getColorScheme(requestedTheme, colourOverrides) MaterialTheme( + shapes = MaterialTheme.shapes.copy( + small = MaterialTheme.shapes.small.copy( + topStart = CornerSize(8.dp), + topEnd = CornerSize(8.dp), + bottomStart = CornerSize(8.dp), + bottomEnd = CornerSize(8.dp) + ) + ), colorScheme = colorScheme, typography = RevoltTypography, content = content diff --git a/app/src/main/res/drawable/find_and_recognize_character_img.xml b/app/src/main/res/drawable/find_and_recognize_character_img.xml new file mode 100644 index 00000000..7b6318ee --- /dev/null +++ b/app/src/main/res/drawable/find_and_recognize_character_img.xml @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/main_img.xml b/app/src/main/res/drawable/main_img.xml new file mode 100644 index 00000000..b36b549c --- /dev/null +++ b/app/src/main/res/drawable/main_img.xml @@ -0,0 +1,25 @@ + + + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 755735af..62223bbd 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -3,6 +3,7 @@ ← Back Next → + Complete Registration OK Cancel Share @@ -58,15 +59,14 @@ Password Eight or more, common ones are bad. Symbols and numbers recommended. - Check your mail! - We\'ve sent further instructions to %1$s. - Verify your email, and then we\'ll get on with choosing your username. - Open mail app + Check Your Email + We sent a verification mail to %1$s. + Verify in Your Inbox - Welcome! - It\'s time to choose a username! - Others will find, recognise and mention you with this name. - But if you change your mind, you can change your username at any time in your User Settings. + Name Yourself! + It\'s time to choose a username. + Others can find, recognize, and mention you with this name; choose wisely! + You can change it anytime in User Settings. You’ll get a unique number tag, visible in Settings. Username You have been logged out. Please log in again.