diff --git a/app/app/build.gradle.kts b/app/app/build.gradle.kts index da9020b..4c19b97 100644 --- a/app/app/build.gradle.kts +++ b/app/app/build.gradle.kts @@ -109,6 +109,7 @@ dependencies { implementation(libs.hilt) kapt(libs.hilt.kapt) implementation(libs.hilt.compose) + implementation(libs.google.fonts) testImplementation(libs.junit) androidTestImplementation(libs.androidx.junit) diff --git a/app/app/src/main/java/ing/bikeshedengineer/debtpirate/app/host/MainActivity.kt b/app/app/src/main/java/ing/bikeshedengineer/debtpirate/app/host/MainActivity.kt index 7cc4d25..fcb286d 100644 --- a/app/app/src/main/java/ing/bikeshedengineer/debtpirate/app/host/MainActivity.kt +++ b/app/app/src/main/java/ing/bikeshedengineer/debtpirate/app/host/MainActivity.kt @@ -4,6 +4,10 @@ import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge +import androidx.compose.animation.AnimatedContentTransitionScope +import androidx.compose.animation.core.tween +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.lifecycle.Lifecycle @@ -14,8 +18,8 @@ import androidx.navigation.compose.composable import androidx.navigation.compose.navigation import androidx.navigation.compose.rememberNavController import dagger.hilt.android.AndroidEntryPoint -import ing.bikeshedengineer.debtpirate.auth.presentation.login.LoginScreen -import ing.bikeshedengineer.debtpirate.auth.presentation.register.RegistrationScreen +import ing.bikeshedengineer.debtpirate.app.screen.auth.presentation.login.LoginScreen +import ing.bikeshedengineer.debtpirate.app.screen.auth.presentation.register.RegistrationScreen import ing.bikeshedengineer.debtpirate.navigation.Destination import ing.bikeshedengineer.debtpirate.navigation.NavigationAction import ing.bikeshedengineer.debtpirate.navigation.Navigator @@ -51,8 +55,31 @@ class MainActivity : ComponentActivity() { } DebtPirateTheme { - NavHost(navController = navController, startDestination = Destination.AuthGraph) { - navigation(startDestination = Destination.LoginScreen) { + NavHost( + navController = navController, + startDestination = Destination.AuthGraph, + enterTransition = { + slideIntoContainer( + AnimatedContentTransitionScope.SlideDirection.Start, + animationSpec = tween(350) + ) + }, + exitTransition = { + fadeOut(tween(350)) + }, + popEnterTransition = { + fadeIn(tween(350)) + }, + popExitTransition = { + slideOutOfContainer( + AnimatedContentTransitionScope.SlideDirection.End, + animationSpec = tween(350) + ) + } + ) { + navigation( + startDestination = Destination.LoginScreen + ) { composable() { LoginScreen() } composable() { RegistrationScreen() } } diff --git a/app/app/src/main/java/ing/bikeshedengineer/debtpirate/auth/di/AuthScreensDiModule.kt b/app/app/src/main/java/ing/bikeshedengineer/debtpirate/app/screen/auth/di/AuthScreensDiModule.kt similarity index 70% rename from app/app/src/main/java/ing/bikeshedengineer/debtpirate/auth/di/AuthScreensDiModule.kt rename to app/app/src/main/java/ing/bikeshedengineer/debtpirate/app/screen/auth/di/AuthScreensDiModule.kt index 8ebba25..3a83878 100644 --- a/app/app/src/main/java/ing/bikeshedengineer/debtpirate/auth/di/AuthScreensDiModule.kt +++ b/app/app/src/main/java/ing/bikeshedengineer/debtpirate/app/screen/auth/di/AuthScreensDiModule.kt @@ -1,14 +1,14 @@ -package ing.bikeshedengineer.debtpirate.auth.di +package ing.bikeshedengineer.debtpirate.app.screen.auth.di import dagger.Module import dagger.Provides import dagger.hilt.InstallIn import dagger.hilt.android.components.ViewModelComponent import dagger.hilt.android.scopes.ViewModelScoped -import ing.bikeshedengineer.debtpirate.auth.usecase.SubmitAccountRegistrationRequestUseCase -import ing.bikeshedengineer.debtpirate.auth.usecase.SubmitLoginCredentialsUseCase -import ing.bikeshedengineer.debtpirate.auth.usecase.ValidateLoginCredentialsUseCase -import ing.bikeshedengineer.debtpirate.auth.usecase.ValidateNewAccountRegistrationUseCase +import ing.bikeshedengineer.debtpirate.app.screen.auth.usecase.SubmitAccountRegistrationRequestUseCase +import ing.bikeshedengineer.debtpirate.app.screen.auth.usecase.SubmitLoginCredentialsUseCase +import ing.bikeshedengineer.debtpirate.app.screen.auth.usecase.ValidateLoginCredentialsUseCase +import ing.bikeshedengineer.debtpirate.app.screen.auth.usecase.ValidateNewAccountRegistrationUseCase import ing.bikeshedengineer.debtpirate.data.repository.AuthRepository import ing.bikeshedengineer.debtpirate.data.repository.UserRepository diff --git a/app/app/src/main/java/ing/bikeshedengineer/debtpirate/auth/presentation/login/LoginScreen.kt b/app/app/src/main/java/ing/bikeshedengineer/debtpirate/app/screen/auth/presentation/login/LoginScreen.kt similarity index 97% rename from app/app/src/main/java/ing/bikeshedengineer/debtpirate/auth/presentation/login/LoginScreen.kt rename to app/app/src/main/java/ing/bikeshedengineer/debtpirate/app/screen/auth/presentation/login/LoginScreen.kt index ed26213..9bd0948 100644 --- a/app/app/src/main/java/ing/bikeshedengineer/debtpirate/auth/presentation/login/LoginScreen.kt +++ b/app/app/src/main/java/ing/bikeshedengineer/debtpirate/app/screen/auth/presentation/login/LoginScreen.kt @@ -1,4 +1,4 @@ -package ing.bikeshedengineer.debtpirate.auth.presentation.login +package ing.bikeshedengineer.debtpirate.app.screen.auth.presentation.login import android.annotation.SuppressLint import androidx.compose.foundation.background @@ -20,6 +20,7 @@ import androidx.compose.material.icons.outlined.Password import androidx.compose.material.icons.outlined.PersonAdd import androidx.compose.material3.Button import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedButton import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Scaffold @@ -82,7 +83,7 @@ fun LoginScreen( @Composable private fun LoginScreenTopAppBar(modifier: Modifier = Modifier) { - Box(modifier = modifier.background(Color.Green)) { + Box(modifier = modifier.background(MaterialTheme.colorScheme.primaryContainer)) { Text( text = "Hello from Login! I'm in a box!", modifier = Modifier.align(Alignment.Center) diff --git a/app/app/src/main/java/ing/bikeshedengineer/debtpirate/auth/presentation/login/LoginScreenViewModel.kt b/app/app/src/main/java/ing/bikeshedengineer/debtpirate/app/screen/auth/presentation/login/LoginScreenViewModel.kt similarity index 89% rename from app/app/src/main/java/ing/bikeshedengineer/debtpirate/auth/presentation/login/LoginScreenViewModel.kt rename to app/app/src/main/java/ing/bikeshedengineer/debtpirate/app/screen/auth/presentation/login/LoginScreenViewModel.kt index 922a17e..63dc0a3 100644 --- a/app/app/src/main/java/ing/bikeshedengineer/debtpirate/auth/presentation/login/LoginScreenViewModel.kt +++ b/app/app/src/main/java/ing/bikeshedengineer/debtpirate/app/screen/auth/presentation/login/LoginScreenViewModel.kt @@ -1,13 +1,13 @@ -package ing.bikeshedengineer.debtpirate.auth.presentation.login +package ing.bikeshedengineer.debtpirate.app.screen.auth.presentation.login import androidx.datastore.core.DataStore import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import ing.bikeshedengineer.debtpirate.PrefsDataStore -import ing.bikeshedengineer.debtpirate.auth.usecase.LoginCredentialsValidationResult -import ing.bikeshedengineer.debtpirate.auth.usecase.SubmitLoginCredentialsUseCase -import ing.bikeshedengineer.debtpirate.auth.usecase.ValidateLoginCredentialsUseCase +import ing.bikeshedengineer.debtpirate.app.screen.auth.usecase.LoginCredentialsValidationResult +import ing.bikeshedengineer.debtpirate.app.screen.auth.usecase.SubmitLoginCredentialsUseCase +import ing.bikeshedengineer.debtpirate.app.screen.auth.usecase.ValidateLoginCredentialsUseCase import ing.bikeshedengineer.debtpirate.domain.model.Token import ing.bikeshedengineer.debtpirate.navigation.Destination import ing.bikeshedengineer.debtpirate.navigation.Navigator diff --git a/app/app/src/main/java/ing/bikeshedengineer/debtpirate/auth/presentation/register/RegistrationScreen.kt b/app/app/src/main/java/ing/bikeshedengineer/debtpirate/app/screen/auth/presentation/register/RegistrationScreen.kt similarity index 98% rename from app/app/src/main/java/ing/bikeshedengineer/debtpirate/auth/presentation/register/RegistrationScreen.kt rename to app/app/src/main/java/ing/bikeshedengineer/debtpirate/app/screen/auth/presentation/register/RegistrationScreen.kt index 14665c5..ce2b619 100644 --- a/app/app/src/main/java/ing/bikeshedengineer/debtpirate/auth/presentation/register/RegistrationScreen.kt +++ b/app/app/src/main/java/ing/bikeshedengineer/debtpirate/app/screen/auth/presentation/register/RegistrationScreen.kt @@ -1,4 +1,4 @@ -package ing.bikeshedengineer.debtpirate.auth.presentation.register +package ing.bikeshedengineer.debtpirate.app.screen.auth.presentation.register import android.annotation.SuppressLint import androidx.compose.foundation.layout.Column @@ -19,10 +19,10 @@ import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.MediumTopAppBar import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Scaffold import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBarDefaults import androidx.compose.material3.rememberTopAppBarState import androidx.compose.runtime.Composable @@ -104,7 +104,7 @@ fun RegistrationScreen(viewModel: RegistrationScreenViewModel = hiltViewModel Unit, modifier: Modifier = Modifier) { - MediumTopAppBar( + TopAppBar( colors = TopAppBarDefaults.topAppBarColors( containerColor = MaterialTheme.colorScheme.primaryContainer, titleContentColor = MaterialTheme.colorScheme.primary, diff --git a/app/app/src/main/java/ing/bikeshedengineer/debtpirate/auth/presentation/register/RegistrationScreenViewModel.kt b/app/app/src/main/java/ing/bikeshedengineer/debtpirate/app/screen/auth/presentation/register/RegistrationScreenViewModel.kt similarity index 91% rename from app/app/src/main/java/ing/bikeshedengineer/debtpirate/auth/presentation/register/RegistrationScreenViewModel.kt rename to app/app/src/main/java/ing/bikeshedengineer/debtpirate/app/screen/auth/presentation/register/RegistrationScreenViewModel.kt index 5773069..f02c91e 100644 --- a/app/app/src/main/java/ing/bikeshedengineer/debtpirate/auth/presentation/register/RegistrationScreenViewModel.kt +++ b/app/app/src/main/java/ing/bikeshedengineer/debtpirate/app/screen/auth/presentation/register/RegistrationScreenViewModel.kt @@ -1,11 +1,11 @@ -package ing.bikeshedengineer.debtpirate.auth.presentation.register +package ing.bikeshedengineer.debtpirate.app.screen.auth.presentation.register import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel -import ing.bikeshedengineer.debtpirate.auth.usecase.NewAccountRegistrationValidationResult -import ing.bikeshedengineer.debtpirate.auth.usecase.SubmitAccountRegistrationRequestUseCase -import ing.bikeshedengineer.debtpirate.auth.usecase.ValidateNewAccountRegistrationUseCase +import ing.bikeshedengineer.debtpirate.app.screen.auth.usecase.NewAccountRegistrationValidationResult +import ing.bikeshedengineer.debtpirate.app.screen.auth.usecase.SubmitAccountRegistrationRequestUseCase +import ing.bikeshedengineer.debtpirate.app.screen.auth.usecase.ValidateNewAccountRegistrationUseCase import ing.bikeshedengineer.debtpirate.navigation.Destination import ing.bikeshedengineer.debtpirate.navigation.Navigator import kotlinx.coroutines.flow.MutableStateFlow @@ -81,7 +81,8 @@ class RegistrationScreenViewModel @Inject constructor( if (fieldsAreValid) { viewModelScope.launch { try { - val result = submitAccountRegistrationRequest(emailAddress, name, confirmPassword) + val result = + submitAccountRegistrationRequest(emailAddress, name, confirmPassword) navigator.navigate(Destination.LoginScreen) resetFields() diff --git a/app/app/src/main/java/ing/bikeshedengineer/debtpirate/auth/usecase/SubmitAccountRegistrationRequestUseCase.kt b/app/app/src/main/java/ing/bikeshedengineer/debtpirate/app/screen/auth/usecase/SubmitAccountRegistrationRequestUseCase.kt similarity index 93% rename from app/app/src/main/java/ing/bikeshedengineer/debtpirate/auth/usecase/SubmitAccountRegistrationRequestUseCase.kt rename to app/app/src/main/java/ing/bikeshedengineer/debtpirate/app/screen/auth/usecase/SubmitAccountRegistrationRequestUseCase.kt index 853ec9b..8481240 100644 --- a/app/app/src/main/java/ing/bikeshedengineer/debtpirate/auth/usecase/SubmitAccountRegistrationRequestUseCase.kt +++ b/app/app/src/main/java/ing/bikeshedengineer/debtpirate/app/screen/auth/usecase/SubmitAccountRegistrationRequestUseCase.kt @@ -1,4 +1,4 @@ -package ing.bikeshedengineer.debtpirate.auth.usecase +package ing.bikeshedengineer.debtpirate.app.screen.auth.usecase import android.util.Log import ing.bikeshedengineer.debtpirate.data.remote.model.user.UserCreatePostRequest diff --git a/app/app/src/main/java/ing/bikeshedengineer/debtpirate/auth/usecase/SubmitLoginCredentialsUseCase.kt b/app/app/src/main/java/ing/bikeshedengineer/debtpirate/app/screen/auth/usecase/SubmitLoginCredentialsUseCase.kt similarity index 92% rename from app/app/src/main/java/ing/bikeshedengineer/debtpirate/auth/usecase/SubmitLoginCredentialsUseCase.kt rename to app/app/src/main/java/ing/bikeshedengineer/debtpirate/app/screen/auth/usecase/SubmitLoginCredentialsUseCase.kt index 3c1058d..18d025a 100644 --- a/app/app/src/main/java/ing/bikeshedengineer/debtpirate/auth/usecase/SubmitLoginCredentialsUseCase.kt +++ b/app/app/src/main/java/ing/bikeshedengineer/debtpirate/app/screen/auth/usecase/SubmitLoginCredentialsUseCase.kt @@ -1,4 +1,4 @@ -package ing.bikeshedengineer.debtpirate.auth.usecase +package ing.bikeshedengineer.debtpirate.app.screen.auth.usecase import android.util.Log import ing.bikeshedengineer.debtpirate.data.remote.model.auth.AuthLoginPostRequest diff --git a/app/app/src/main/java/ing/bikeshedengineer/debtpirate/auth/usecase/ValidateLoginCredentialsUseCase.kt b/app/app/src/main/java/ing/bikeshedengineer/debtpirate/app/screen/auth/usecase/ValidateLoginCredentialsUseCase.kt similarity index 93% rename from app/app/src/main/java/ing/bikeshedengineer/debtpirate/auth/usecase/ValidateLoginCredentialsUseCase.kt rename to app/app/src/main/java/ing/bikeshedengineer/debtpirate/app/screen/auth/usecase/ValidateLoginCredentialsUseCase.kt index c28ca2b..467ce5b 100644 --- a/app/app/src/main/java/ing/bikeshedengineer/debtpirate/auth/usecase/ValidateLoginCredentialsUseCase.kt +++ b/app/app/src/main/java/ing/bikeshedengineer/debtpirate/app/screen/auth/usecase/ValidateLoginCredentialsUseCase.kt @@ -1,4 +1,4 @@ -package ing.bikeshedengineer.debtpirate.auth.usecase +package ing.bikeshedengineer.debtpirate.app.screen.auth.usecase sealed class LoginCredentialsValidationResult { object EmptyCredentials : LoginCredentialsValidationResult() diff --git a/app/app/src/main/java/ing/bikeshedengineer/debtpirate/auth/usecase/ValidateNewAccountRegistrationUseCase.kt b/app/app/src/main/java/ing/bikeshedengineer/debtpirate/app/screen/auth/usecase/ValidateNewAccountRegistrationUseCase.kt similarity index 96% rename from app/app/src/main/java/ing/bikeshedengineer/debtpirate/auth/usecase/ValidateNewAccountRegistrationUseCase.kt rename to app/app/src/main/java/ing/bikeshedengineer/debtpirate/app/screen/auth/usecase/ValidateNewAccountRegistrationUseCase.kt index ade178c..ce452fb 100644 --- a/app/app/src/main/java/ing/bikeshedengineer/debtpirate/auth/usecase/ValidateNewAccountRegistrationUseCase.kt +++ b/app/app/src/main/java/ing/bikeshedengineer/debtpirate/app/screen/auth/usecase/ValidateNewAccountRegistrationUseCase.kt @@ -1,4 +1,4 @@ -package ing.bikeshedengineer.debtpirate.auth.usecase +package ing.bikeshedengineer.debtpirate.app.screen.auth.usecase import android.util.Patterns diff --git a/app/app/src/main/java/ing/bikeshedengineer/debtpirate/theme/Color.kt b/app/app/src/main/java/ing/bikeshedengineer/debtpirate/theme/Color.kt index c0ad71f..8f537b6 100644 --- a/app/app/src/main/java/ing/bikeshedengineer/debtpirate/theme/Color.kt +++ b/app/app/src/main/java/ing/bikeshedengineer/debtpirate/theme/Color.kt @@ -2,10 +2,218 @@ package ing.bikeshedengineer.debtpirate.theme import androidx.compose.ui.graphics.Color -val Purple80 = Color(0xFFD0BCFF) -val PurpleGrey80 = Color(0xFFCCC2DC) -val Pink80 = Color(0xFFEFB8C8) +val primaryLight = Color(0xFF1E6A4F) +val onPrimaryLight = Color(0xFFFFFFFF) +val primaryContainerLight = Color(0xFFA8F2CF) +val onPrimaryContainerLight = Color(0xFF002115) +val secondaryLight = Color(0xFF37618E) +val onSecondaryLight = Color(0xFFFFFFFF) +val secondaryContainerLight = Color(0xFFD2E4FF) +val onSecondaryContainerLight = Color(0xFF001C37) +val tertiaryLight = Color(0xFF835414) +val onTertiaryLight = Color(0xFFFFFFFF) +val tertiaryContainerLight = Color(0xFFFFDDBA) +val onTertiaryContainerLight = Color(0xFF2B1700) +val errorLight = Color(0xFF8E4D30) +val onErrorLight = Color(0xFFFFFFFF) +val errorContainerLight = Color(0xFFFFDBCE) +val onErrorContainerLight = Color(0xFF370E00) +val backgroundLight = Color(0xFFF5FBF5) +val onBackgroundLight = Color(0xFF171D1A) +val surfaceLight = Color(0xFFF5FBF5) +val onSurfaceLight = Color(0xFF171D1A) +val surfaceVariantLight = Color(0xFFDBE5DD) +val onSurfaceVariantLight = Color(0xFF404944) +val outlineLight = Color(0xFF707973) +val outlineVariantLight = Color(0xFFBFC9C2) +val scrimLight = Color(0xFF000000) +val inverseSurfaceLight = Color(0xFF2C322E) +val inverseOnSurfaceLight = Color(0xFFECF2ED) +val inversePrimaryLight = Color(0xFF8CD5B4) +val surfaceDimLight = Color(0xFFD6DBD6) +val surfaceBrightLight = Color(0xFFF5FBF5) +val surfaceContainerLowestLight = Color(0xFFFFFFFF) +val surfaceContainerLowLight = Color(0xFFEFF5EF) +val surfaceContainerLight = Color(0xFFEAEFEA) +val surfaceContainerHighLight = Color(0xFFE4EAE4) +val surfaceContainerHighestLight = Color(0xFFDEE4DE) -val Purple40 = Color(0xFF6650a4) -val PurpleGrey40 = Color(0xFF625b71) -val Pink40 = Color(0xFF7D5260) \ No newline at end of file +val primaryLightMediumContrast = Color(0xFF004D36) +val onPrimaryLightMediumContrast = Color(0xFFFFFFFF) +val primaryContainerLightMediumContrast = Color(0xFF398164) +val onPrimaryContainerLightMediumContrast = Color(0xFFFFFFFF) +val secondaryLightMediumContrast = Color(0xFF164571) +val onSecondaryLightMediumContrast = Color(0xFFFFFFFF) +val secondaryContainerLightMediumContrast = Color(0xFF4F77A6) +val onSecondaryContainerLightMediumContrast = Color(0xFFFFFFFF) +val tertiaryLightMediumContrast = Color(0xFF613A00) +val onTertiaryLightMediumContrast = Color(0xFFFFFFFF) +val tertiaryContainerLightMediumContrast = Color(0xFF9D6A29) +val onTertiaryContainerLightMediumContrast = Color(0xFFFFFFFF) +val errorLightMediumContrast = Color(0xFF6C3218) +val onErrorLightMediumContrast = Color(0xFFFFFFFF) +val errorContainerLightMediumContrast = Color(0xFFA96244) +val onErrorContainerLightMediumContrast = Color(0xFFFFFFFF) +val backgroundLightMediumContrast = Color(0xFFF5FBF5) +val onBackgroundLightMediumContrast = Color(0xFF171D1A) +val surfaceLightMediumContrast = Color(0xFFF5FBF5) +val onSurfaceLightMediumContrast = Color(0xFF171D1A) +val surfaceVariantLightMediumContrast = Color(0xFFDBE5DD) +val onSurfaceVariantLightMediumContrast = Color(0xFF3C4540) +val outlineLightMediumContrast = Color(0xFF58615C) +val outlineVariantLightMediumContrast = Color(0xFF747D77) +val scrimLightMediumContrast = Color(0xFF000000) +val inverseSurfaceLightMediumContrast = Color(0xFF2C322E) +val inverseOnSurfaceLightMediumContrast = Color(0xFFECF2ED) +val inversePrimaryLightMediumContrast = Color(0xFF8CD5B4) +val surfaceDimLightMediumContrast = Color(0xFFD6DBD6) +val surfaceBrightLightMediumContrast = Color(0xFFF5FBF5) +val surfaceContainerLowestLightMediumContrast = Color(0xFFFFFFFF) +val surfaceContainerLowLightMediumContrast = Color(0xFFEFF5EF) +val surfaceContainerLightMediumContrast = Color(0xFFEAEFEA) +val surfaceContainerHighLightMediumContrast = Color(0xFFE4EAE4) +val surfaceContainerHighestLightMediumContrast = Color(0xFFDEE4DE) + +val primaryLightHighContrast = Color(0xFF00281B) +val onPrimaryLightHighContrast = Color(0xFFFFFFFF) +val primaryContainerLightHighContrast = Color(0xFF004D36) +val onPrimaryContainerLightHighContrast = Color(0xFFFFFFFF) +val secondaryLightHighContrast = Color(0xFF002342) +val onSecondaryLightHighContrast = Color(0xFFFFFFFF) +val secondaryContainerLightHighContrast = Color(0xFF164571) +val onSecondaryContainerLightHighContrast = Color(0xFFFFFFFF) +val tertiaryLightHighContrast = Color(0xFF341D00) +val onTertiaryLightHighContrast = Color(0xFFFFFFFF) +val tertiaryContainerLightHighContrast = Color(0xFF613A00) +val onTertiaryContainerLightHighContrast = Color(0xFFFFFFFF) +val errorLightHighContrast = Color(0xFF421300) +val onErrorLightHighContrast = Color(0xFFFFFFFF) +val errorContainerLightHighContrast = Color(0xFF6C3218) +val onErrorContainerLightHighContrast = Color(0xFFFFFFFF) +val backgroundLightHighContrast = Color(0xFFF5FBF5) +val onBackgroundLightHighContrast = Color(0xFF171D1A) +val surfaceLightHighContrast = Color(0xFFF5FBF5) +val onSurfaceLightHighContrast = Color(0xFF000000) +val surfaceVariantLightHighContrast = Color(0xFFDBE5DD) +val onSurfaceVariantLightHighContrast = Color(0xFF1D2621) +val outlineLightHighContrast = Color(0xFF3C4540) +val outlineVariantLightHighContrast = Color(0xFF3C4540) +val scrimLightHighContrast = Color(0xFF000000) +val inverseSurfaceLightHighContrast = Color(0xFF2C322E) +val inverseOnSurfaceLightHighContrast = Color(0xFFFFFFFF) +val inversePrimaryLightHighContrast = Color(0xFFB1FCD8) +val surfaceDimLightHighContrast = Color(0xFFD6DBD6) +val surfaceBrightLightHighContrast = Color(0xFFF5FBF5) +val surfaceContainerLowestLightHighContrast = Color(0xFFFFFFFF) +val surfaceContainerLowLightHighContrast = Color(0xFFEFF5EF) +val surfaceContainerLightHighContrast = Color(0xFFEAEFEA) +val surfaceContainerHighLightHighContrast = Color(0xFFE4EAE4) +val surfaceContainerHighestLightHighContrast = Color(0xFFDEE4DE) + +val primaryDark = Color(0xFF8CD5B4) +val onPrimaryDark = Color(0xFF003826) +val primaryContainerDark = Color(0xFF005139) +val onPrimaryContainerDark = Color(0xFFA8F2CF) +val secondaryDark = Color(0xFFA1C9FD) +val onSecondaryDark = Color(0xFF003259) +val secondaryContainerDark = Color(0xFF1B4975) +val onSecondaryContainerDark = Color(0xFFD2E4FF) +val tertiaryDark = Color(0xFFF9BA72) +val onTertiaryDark = Color(0xFF482A00) +val tertiaryContainerDark = Color(0xFF663E00) +val onTertiaryContainerDark = Color(0xFFFFDDBA) +val errorDark = Color(0xFFFFB598) +val onErrorDark = Color(0xFF552007) +val errorContainerDark = Color(0xFF71361C) +val onErrorContainerDark = Color(0xFFFFDBCE) +val backgroundDark = Color(0xFF0F1512) +val onBackgroundDark = Color(0xFFDEE4DE) +val surfaceDark = Color(0xFF0F1512) +val onSurfaceDark = Color(0xFFDEE4DE) +val surfaceVariantDark = Color(0xFF404944) +val onSurfaceVariantDark = Color(0xFFBFC9C2) +val outlineDark = Color(0xFF8A938D) +val outlineVariantDark = Color(0xFF404944) +val scrimDark = Color(0xFF000000) +val inverseSurfaceDark = Color(0xFFDEE4DE) +val inverseOnSurfaceDark = Color(0xFF2C322E) +val inversePrimaryDark = Color(0xFF1E6A4F) +val surfaceDimDark = Color(0xFF0F1512) +val surfaceBrightDark = Color(0xFF353B37) +val surfaceContainerLowestDark = Color(0xFF0A0F0C) +val surfaceContainerLowDark = Color(0xFF171D1A) +val surfaceContainerDark = Color(0xFF1B211E) +val surfaceContainerHighDark = Color(0xFF252B28) +val surfaceContainerHighestDark = Color(0xFF303632) + +val primaryDarkMediumContrast = Color(0xFF90DAB8) +val onPrimaryDarkMediumContrast = Color(0xFF001B10) +val primaryContainerDarkMediumContrast = Color(0xFF569E80) +val onPrimaryContainerDarkMediumContrast = Color(0xFF000000) +val secondaryDarkMediumContrast = Color(0xFFA8CEFF) +val onSecondaryDarkMediumContrast = Color(0xFF00172E) +val secondaryContainerDarkMediumContrast = Color(0xFF6B93C4) +val onSecondaryContainerDarkMediumContrast = Color(0xFF000000) +val tertiaryDarkMediumContrast = Color(0xFFFEBF76) +val onTertiaryDarkMediumContrast = Color(0xFF241200) +val tertiaryContainerDarkMediumContrast = Color(0xFFBD8642) +val onTertiaryContainerDarkMediumContrast = Color(0xFF000000) +val errorDarkMediumContrast = Color(0xFFFFBBA0) +val onErrorDarkMediumContrast = Color(0xFF2E0B00) +val errorContainerDarkMediumContrast = Color(0xFFCA7D5D) +val onErrorContainerDarkMediumContrast = Color(0xFF000000) +val backgroundDarkMediumContrast = Color(0xFF0F1512) +val onBackgroundDarkMediumContrast = Color(0xFFDEE4DE) +val surfaceDarkMediumContrast = Color(0xFF0F1512) +val onSurfaceDarkMediumContrast = Color(0xFFF7FCF6) +val surfaceVariantDarkMediumContrast = Color(0xFF404944) +val onSurfaceVariantDarkMediumContrast = Color(0xFFC4CDC6) +val outlineDarkMediumContrast = Color(0xFF9CA59F) +val outlineVariantDarkMediumContrast = Color(0xFF7C857F) +val scrimDarkMediumContrast = Color(0xFF000000) +val inverseSurfaceDarkMediumContrast = Color(0xFFDEE4DE) +val inverseOnSurfaceDarkMediumContrast = Color(0xFF252B28) +val inversePrimaryDarkMediumContrast = Color(0xFF00533A) +val surfaceDimDarkMediumContrast = Color(0xFF0F1512) +val surfaceBrightDarkMediumContrast = Color(0xFF353B37) +val surfaceContainerLowestDarkMediumContrast = Color(0xFF0A0F0C) +val surfaceContainerLowDarkMediumContrast = Color(0xFF171D1A) +val surfaceContainerDarkMediumContrast = Color(0xFF1B211E) +val surfaceContainerHighDarkMediumContrast = Color(0xFF252B28) +val surfaceContainerHighestDarkMediumContrast = Color(0xFF303632) + +val primaryDarkHighContrast = Color(0xFFEDFFF4) +val onPrimaryDarkHighContrast = Color(0xFF000000) +val primaryContainerDarkHighContrast = Color(0xFF90DAB8) +val onPrimaryContainerDarkHighContrast = Color(0xFF000000) +val secondaryDarkHighContrast = Color(0xFFFAFAFF) +val onSecondaryDarkHighContrast = Color(0xFF000000) +val secondaryContainerDarkHighContrast = Color(0xFFA8CEFF) +val onSecondaryContainerDarkHighContrast = Color(0xFF000000) +val tertiaryDarkHighContrast = Color(0xFFFFFAF8) +val onTertiaryDarkHighContrast = Color(0xFF000000) +val tertiaryContainerDarkHighContrast = Color(0xFFFEBF76) +val onTertiaryContainerDarkHighContrast = Color(0xFF000000) +val errorDarkHighContrast = Color(0xFFFFF9F8) +val onErrorDarkHighContrast = Color(0xFF000000) +val errorContainerDarkHighContrast = Color(0xFFFFBBA0) +val onErrorContainerDarkHighContrast = Color(0xFF000000) +val backgroundDarkHighContrast = Color(0xFF0F1512) +val onBackgroundDarkHighContrast = Color(0xFFDEE4DE) +val surfaceDarkHighContrast = Color(0xFF0F1512) +val onSurfaceDarkHighContrast = Color(0xFFFFFFFF) +val surfaceVariantDarkHighContrast = Color(0xFF404944) +val onSurfaceVariantDarkHighContrast = Color(0xFFF4FDF5) +val outlineDarkHighContrast = Color(0xFFC4CDC6) +val outlineVariantDarkHighContrast = Color(0xFFC4CDC6) +val scrimDarkHighContrast = Color(0xFF000000) +val inverseSurfaceDarkHighContrast = Color(0xFFDEE4DE) +val inverseOnSurfaceDarkHighContrast = Color(0xFF000000) +val inversePrimaryDarkHighContrast = Color(0xFF003121) +val surfaceDimDarkHighContrast = Color(0xFF0F1512) +val surfaceBrightDarkHighContrast = Color(0xFF353B37) +val surfaceContainerLowestDarkHighContrast = Color(0xFF0A0F0C) +val surfaceContainerLowDarkHighContrast = Color(0xFF171D1A) +val surfaceContainerDarkHighContrast = Color(0xFF1B211E) +val surfaceContainerHighDarkHighContrast = Color(0xFF252B28) +val surfaceContainerHighestDarkHighContrast = Color(0xFF303632) \ No newline at end of file diff --git a/app/app/src/main/java/ing/bikeshedengineer/debtpirate/theme/Theme.kt b/app/app/src/main/java/ing/bikeshedengineer/debtpirate/theme/Theme.kt index fe97f76..5597740 100644 --- a/app/app/src/main/java/ing/bikeshedengineer/debtpirate/theme/Theme.kt +++ b/app/app/src/main/java/ing/bikeshedengineer/debtpirate/theme/Theme.kt @@ -8,28 +8,84 @@ import androidx.compose.material3.dynamicDarkColorScheme import androidx.compose.material3.dynamicLightColorScheme import androidx.compose.material3.lightColorScheme import androidx.compose.runtime.Composable +import androidx.compose.runtime.Immutable +import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext -private val DarkColorScheme = darkColorScheme( - primary = Purple80, - secondary = PurpleGrey80, - tertiary = Pink80 +private val lightScheme = lightColorScheme( + primary = primaryLight, + onPrimary = onPrimaryLight, + primaryContainer = primaryContainerLight, + onPrimaryContainer = onPrimaryContainerLight, + secondary = secondaryLight, + onSecondary = onSecondaryLight, + secondaryContainer = secondaryContainerLight, + onSecondaryContainer = onSecondaryContainerLight, + tertiary = tertiaryLight, + onTertiary = onTertiaryLight, + tertiaryContainer = tertiaryContainerLight, + onTertiaryContainer = onTertiaryContainerLight, + error = errorLight, + onError = onErrorLight, + errorContainer = errorContainerLight, + onErrorContainer = onErrorContainerLight, + background = backgroundLight, + onBackground = onBackgroundLight, + surface = surfaceLight, + onSurface = onSurfaceLight, + surfaceVariant = surfaceVariantLight, + onSurfaceVariant = onSurfaceVariantLight, + outline = outlineLight, + outlineVariant = outlineVariantLight, + scrim = scrimLight, + inverseSurface = inverseSurfaceLight, + inverseOnSurface = inverseOnSurfaceLight, + inversePrimary = inversePrimaryLight, + surfaceDim = surfaceDimLight, + surfaceBright = surfaceBrightLight, + surfaceContainerLowest = surfaceContainerLowestLight, + surfaceContainerLow = surfaceContainerLowLight, + surfaceContainer = surfaceContainerLight, + surfaceContainerHigh = surfaceContainerHighLight, + surfaceContainerHighest = surfaceContainerHighestLight, ) -private val LightColorScheme = lightColorScheme( - primary = Purple40, - secondary = PurpleGrey40, - tertiary = Pink40 - - /* Other default colors to override - background = Color(0xFFFFFBFE), - surface = Color(0xFFFFFBFE), - onPrimary = Color.White, - onSecondary = Color.White, - onTertiary = Color.White, - onBackground = Color(0xFF1C1B1F), - onSurface = Color(0xFF1C1B1F), - */ +private val darkScheme = darkColorScheme( + primary = primaryDark, + onPrimary = onPrimaryDark, + primaryContainer = primaryContainerDark, + onPrimaryContainer = onPrimaryContainerDark, + secondary = secondaryDark, + onSecondary = onSecondaryDark, + secondaryContainer = secondaryContainerDark, + onSecondaryContainer = onSecondaryContainerDark, + tertiary = tertiaryDark, + onTertiary = onTertiaryDark, + tertiaryContainer = tertiaryContainerDark, + onTertiaryContainer = onTertiaryContainerDark, + error = errorDark, + onError = onErrorDark, + errorContainer = errorContainerDark, + onErrorContainer = onErrorContainerDark, + background = backgroundDark, + onBackground = onBackgroundDark, + surface = surfaceDark, + onSurface = onSurfaceDark, + surfaceVariant = surfaceVariantDark, + onSurfaceVariant = onSurfaceVariantDark, + outline = outlineDark, + outlineVariant = outlineVariantDark, + scrim = scrimDark, + inverseSurface = inverseSurfaceDark, + inverseOnSurface = inverseOnSurfaceDark, + inversePrimary = inversePrimaryDark, + surfaceDim = surfaceDimDark, + surfaceBright = surfaceBrightDark, + surfaceContainerLowest = surfaceContainerLowestDark, + surfaceContainerLow = surfaceContainerLowDark, + surfaceContainer = surfaceContainerDark, + surfaceContainerHigh = surfaceContainerHighDark, + surfaceContainerHighest = surfaceContainerHighestDark, ) @Composable @@ -37,17 +93,18 @@ fun DebtPirateTheme( darkTheme: Boolean = isSystemInDarkTheme(), // Dynamic color is available on Android 12+ dynamicColor: Boolean = true, - content: @Composable () -> Unit + content: @Composable() () -> Unit ) { - val colorScheme = when { - dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> { - val context = LocalContext.current - if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context) - } +// val colorScheme = when { +// dynamicColor -> { +// val context = LocalContext.current +// if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context) +// } +// darkTheme -> darkScheme +// else -> lightScheme +// } - darkTheme -> DarkColorScheme - else -> LightColorScheme - } + val colorScheme = darkScheme MaterialTheme( colorScheme = colorScheme, diff --git a/app/app/src/main/java/ing/bikeshedengineer/debtpirate/theme/Type.kt b/app/app/src/main/java/ing/bikeshedengineer/debtpirate/theme/Type.kt index 854987c..0896715 100644 --- a/app/app/src/main/java/ing/bikeshedengineer/debtpirate/theme/Type.kt +++ b/app/app/src/main/java/ing/bikeshedengineer/debtpirate/theme/Type.kt @@ -1,34 +1,123 @@ package ing.bikeshedengineer.debtpirate.theme import androidx.compose.material3.Typography -import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.font.FontStyle import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.googlefonts.Font +import androidx.compose.ui.text.googlefonts.GoogleFont +import androidx.compose.ui.unit.TextUnit +import androidx.compose.ui.unit.TextUnitType import androidx.compose.ui.unit.sp +import ing.bikeshedengineer.debtpirate.R + +val googleFontsProvider = GoogleFont.Provider( + providerAuthority = "com.google.android.gms.fonts", + providerPackage = "com.google.android.gms", + certificates = R.array.com_google_android_gms_fonts_certs +) + +val robotoCondensedFontName = GoogleFont("Roboto Condensed") +val robotoCondensedFontFamily = FontFamily( + Font( + googleFont = robotoCondensedFontName, + fontProvider = googleFontsProvider, + weight = FontWeight.Light, + style = FontStyle.Normal + ), + Font( + googleFont = robotoCondensedFontName, + fontProvider = googleFontsProvider, + weight = FontWeight.Normal, + style = FontStyle.Normal + ), + Font( + googleFont = robotoCondensedFontName, + fontProvider = googleFontsProvider, + weight = FontWeight.Medium, + style = FontStyle.Normal + ), + Font( + googleFont = robotoCondensedFontName, + fontProvider = googleFontsProvider, + weight = FontWeight.Bold, + style = FontStyle.Normal + ) +) + +val eczarFontName = GoogleFont("Eczar") +val eczarFontFamily = FontFamily( + Font( + googleFont = eczarFontName, + fontProvider = googleFontsProvider, + weight = FontWeight.Normal, + style = FontStyle.Normal + ) +) + +val baseline = Typography() // Set of Material typography styles to start with val Typography = Typography( - bodyLarge = TextStyle( - fontFamily = FontFamily.Default, - fontWeight = FontWeight.Normal, - fontSize = 16.sp, - lineHeight = 24.sp, - letterSpacing = 0.5.sp - ) - /* Other default text styles to override - titleLarge = TextStyle( - fontFamily = FontFamily.Default, - fontWeight = FontWeight.Normal, - fontSize = 22.sp, - lineHeight = 28.sp, - letterSpacing = 0.sp + displayLarge = baseline.displayLarge.copy( + fontFamily = robotoCondensedFontFamily, + fontWeight = FontWeight.Light + ), + displayMedium = baseline.displayMedium.copy( + fontFamily = robotoCondensedFontFamily, + fontWeight = FontWeight.Light + ), + displaySmall = baseline.displaySmall.copy( + fontFamily = robotoCondensedFontFamily, + fontWeight = FontWeight.Light + ), + headlineLarge = baseline.headlineLarge.copy( + fontFamily = eczarFontFamily, + fontWeight = FontWeight.Bold + ), + headlineMedium = baseline.headlineMedium.copy( + fontFamily = eczarFontFamily, + fontWeight = FontWeight.Bold + ), + headlineSmall = baseline.headlineSmall.copy( + fontFamily = eczarFontFamily, + fontWeight = FontWeight.Bold + ), + titleLarge = baseline.titleLarge.copy( + fontFamily = robotoCondensedFontFamily, + fontWeight = FontWeight.Normal, + letterSpacing = 0.8F.sp + ), + titleMedium = baseline.titleMedium.copy( + fontFamily = robotoCondensedFontFamily, + fontWeight = FontWeight.Normal + ), + titleSmall = baseline.titleSmall.copy( + fontFamily = robotoCondensedFontFamily, + fontWeight = FontWeight.Normal + ), + bodyLarge = baseline.bodyLarge.copy( + fontFamily = robotoCondensedFontFamily, + fontWeight = FontWeight.Normal + ), + bodyMedium = baseline.bodyMedium.copy( + fontFamily = eczarFontFamily, + fontWeight = FontWeight.Normal + ), + bodySmall = baseline.bodySmall.copy( + fontFamily = robotoCondensedFontFamily, + fontWeight = FontWeight.Light + ), + labelLarge = baseline.labelLarge.copy( + fontFamily = robotoCondensedFontFamily, + fontWeight = FontWeight.Bold + ), + labelMedium = baseline.labelMedium.copy( + fontFamily = robotoCondensedFontFamily, + fontWeight = FontWeight.Normal + ), + labelSmall = baseline.labelSmall.copy( + fontFamily = robotoCondensedFontFamily, + fontWeight = FontWeight.Normal ), - labelSmall = TextStyle( - fontFamily = FontFamily.Default, - fontWeight = FontWeight.Medium, - fontSize = 11.sp, - lineHeight = 16.sp, - letterSpacing = 0.5.sp - ) - */ ) \ No newline at end of file diff --git a/app/app/src/main/res/values/font_certs.xml b/app/app/src/main/res/values/font_certs.xml new file mode 100644 index 0000000..5ece3f5 --- /dev/null +++ b/app/app/src/main/res/values/font_certs.xml @@ -0,0 +1,32 @@ + + + + + @array/com_google_android_gms_fonts_certs_dev + @array/com_google_android_gms_fonts_certs_prod + + + + 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 + + + \ No newline at end of file diff --git a/app/gradle/libs.versions.toml b/app/gradle/libs.versions.toml index 9dbf424..d98ea1d 100644 --- a/app/gradle/libs.versions.toml +++ b/app/gradle/libs.versions.toml @@ -24,6 +24,7 @@ protoLite = "3.21.11" okhttp = "4.10.0" retrofit = "2.9.0" hiltNavigationCompose = "1.2.0" +fonts = "1.7.5" [libraries] androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "activityCompose" } @@ -44,6 +45,7 @@ androidx-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit androidx-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" } androidx-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" } androidx-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" } +google-fonts = { group = "androidx.compose.ui", name = "ui-text-google-fonts", version.ref = "fonts" } junit = { group = "junit", name = "junit", version.ref = "junit" } kotlinx-serialization = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-json", version.ref = "kotlinxSerializationJson" } lifecycle-runtime-compose = { group = "androidx.lifecycle", name = "lifecycle-runtime-compose", version.ref = "lifecycleRuntimeCompose" }