From 5333a8c776d88d27bb8f764af3af8c01d124378b Mon Sep 17 00:00:00 2001 From: Juan Gaines Date: Tue, 15 Oct 2024 19:04:08 -0500 Subject: [PATCH 1/3] feat: Material Theme --- app/build.gradle.kts | 1 + .../com/juandgaines/todoapp/MainActivity.kt | 4 +- .../com/juandgaines/todoapp/ui/theme/Color.kt | 228 +++++++- .../com/juandgaines/todoapp/ui/theme/Theme.kt | 506 ++++++++++++++++-- .../com/juandgaines/todoapp/ui/theme/Type.kt | 72 ++- app/src/main/res/values/font_certs.xml | 32 ++ gradle/libs.versions.toml | 4 +- 7 files changed, 770 insertions(+), 77 deletions(-) create mode 100644 app/src/main/res/values/font_certs.xml diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 7770790..ebf49d2 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -69,6 +69,7 @@ dependencies { implementation(libs.androidx.ui.graphics) implementation(libs.androidx.ui.tooling.preview) implementation(libs.androidx.material3) + implementation(libs.androidx.ui.text.google.fonts) debugImplementation(libs.androidx.ui.tooling) debugImplementation(libs.androidx.ui.test.manifest) diff --git a/app/src/main/java/com/juandgaines/todoapp/MainActivity.kt b/app/src/main/java/com/juandgaines/todoapp/MainActivity.kt index 12cbf57..2a2f5af 100644 --- a/app/src/main/java/com/juandgaines/todoapp/MainActivity.kt +++ b/app/src/main/java/com/juandgaines/todoapp/MainActivity.kt @@ -10,7 +10,7 @@ import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import com.juandgaines.todoapp.ui.theme.TodoAppTheme +import com.example.compose.TodoAppTheme import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint @@ -19,7 +19,7 @@ class MainActivity : ComponentActivity() { super.onCreate(savedInstanceState) enableEdgeToEdge() setContent { - TodoAppTheme { + TodoAppTheme() { Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding -> HelloWorld( modifier = Modifier.fillMaxSize() diff --git a/app/src/main/java/com/juandgaines/todoapp/ui/theme/Color.kt b/app/src/main/java/com/juandgaines/todoapp/ui/theme/Color.kt index a579d36..22398de 100644 --- a/app/src/main/java/com/juandgaines/todoapp/ui/theme/Color.kt +++ b/app/src/main/java/com/juandgaines/todoapp/ui/theme/Color.kt @@ -1,13 +1,225 @@ package com.juandgaines.todoapp.ui.theme - import androidx.compose.ui.graphics.Color -val Purple80 = Color(0xFFD0BCFF) -val PurpleGrey80 = Color(0xFFCCC2DC) -val Pink80 = Color(0xFFEFB8C8) +val primaryLight = Color(0xFF6A5F11) +val onPrimaryLight = Color(0xFFFFFFFF) +val primaryContainerLight = Color(0xFFF4E389) +val onPrimaryContainerLight = Color(0xFF201C00) +val secondaryLight = Color(0xFF655F41) +val onSecondaryLight = Color(0xFFFFFFFF) +val secondaryContainerLight = Color(0xFFECE3BD) +val onSecondaryContainerLight = Color(0xFF201C05) +val tertiaryLight = Color(0xFF426651) +val onTertiaryLight = Color(0xFFFFFFFF) +val tertiaryContainerLight = Color(0xFFC3ECD1) +val onTertiaryContainerLight = Color(0xFF002112) +val errorLight = Color(0xFFBA1A1A) +val onErrorLight = Color(0xFFFFFFFF) +val errorContainerLight = Color(0xFFFFDAD6) +val onErrorContainerLight = Color(0xFF410002) +val backgroundLight = Color(0xFFFFF9EB) +val onBackgroundLight = Color(0xFF1D1C13) +val surfaceLight = Color(0xFFFFF9EB) +val onSurfaceLight = Color(0xFF1D1C13) +val surfaceVariantLight = Color(0xFFE9E2D0) +val onSurfaceVariantLight = Color(0xFF4A4739) +val outlineLight = Color(0xFF7B7768) +val outlineVariantLight = Color(0xFFCCC6B5) +val scrimLight = Color(0xFF000000) +val inverseSurfaceLight = Color(0xFF333027) +val inverseOnSurfaceLight = Color(0xFFF6F0E2) +val inversePrimaryLight = Color(0xFFD7C770) +val surfaceDimLight = Color(0xFFDFDACC) +val surfaceBrightLight = Color(0xFFFFF9EB) +val surfaceContainerLowestLight = Color(0xFFFFFFFF) +val surfaceContainerLowLight = Color(0xFFF9F3E5) +val surfaceContainerLight = Color(0xFFF3EDE0) +val surfaceContainerHighLight = Color(0xFFEEE8DA) +val surfaceContainerHighestLight = Color(0xFFE8E2D4) + +val primaryLightMediumContrast = Color(0xFF4C4300) +val onPrimaryLightMediumContrast = Color(0xFFFFFFFF) +val primaryContainerLightMediumContrast = Color(0xFF827527) +val onPrimaryContainerLightMediumContrast = Color(0xFFFFFFFF) +val secondaryLightMediumContrast = Color(0xFF484327) +val onSecondaryLightMediumContrast = Color(0xFFFFFFFF) +val secondaryContainerLightMediumContrast = Color(0xFF7B7555) +val onSecondaryContainerLightMediumContrast = Color(0xFFFFFFFF) +val tertiaryLightMediumContrast = Color(0xFF264A36) +val onTertiaryLightMediumContrast = Color(0xFFFFFFFF) +val tertiaryContainerLightMediumContrast = Color(0xFF577D66) +val onTertiaryContainerLightMediumContrast = Color(0xFFFFFFFF) +val errorLightMediumContrast = Color(0xFF8C0009) +val onErrorLightMediumContrast = Color(0xFFFFFFFF) +val errorContainerLightMediumContrast = Color(0xFFDA342E) +val onErrorContainerLightMediumContrast = Color(0xFFFFFFFF) +val backgroundLightMediumContrast = Color(0xFFFFF9EB) +val onBackgroundLightMediumContrast = Color(0xFF1D1C13) +val surfaceLightMediumContrast = Color(0xFFFFF9EB) +val onSurfaceLightMediumContrast = Color(0xFF1D1C13) +val surfaceVariantLightMediumContrast = Color(0xFFE9E2D0) +val onSurfaceVariantLightMediumContrast = Color(0xFF464336) +val outlineLightMediumContrast = Color(0xFF635F51) +val outlineVariantLightMediumContrast = Color(0xFF7F7B6B) +val scrimLightMediumContrast = Color(0xFF000000) +val inverseSurfaceLightMediumContrast = Color(0xFF333027) +val inverseOnSurfaceLightMediumContrast = Color(0xFFF6F0E2) +val inversePrimaryLightMediumContrast = Color(0xFFD7C770) +val surfaceDimLightMediumContrast = Color(0xFFDFDACC) +val surfaceBrightLightMediumContrast = Color(0xFFFFF9EB) +val surfaceContainerLowestLightMediumContrast = Color(0xFFFFFFFF) +val surfaceContainerLowLightMediumContrast = Color(0xFFF9F3E5) +val surfaceContainerLightMediumContrast = Color(0xFFF3EDE0) +val surfaceContainerHighLightMediumContrast = Color(0xFFEEE8DA) +val surfaceContainerHighestLightMediumContrast = Color(0xFFE8E2D4) + +val primaryLightHighContrast = Color(0xFF282200) +val onPrimaryLightHighContrast = Color(0xFFFFFFFF) +val primaryContainerLightHighContrast = Color(0xFF4C4300) +val onPrimaryContainerLightHighContrast = Color(0xFFFFFFFF) +val secondaryLightHighContrast = Color(0xFF27220A) +val onSecondaryLightHighContrast = Color(0xFFFFFFFF) +val secondaryContainerLightHighContrast = Color(0xFF484327) +val onSecondaryContainerLightHighContrast = Color(0xFFFFFFFF) +val tertiaryLightHighContrast = Color(0xFF022817) +val onTertiaryLightHighContrast = Color(0xFFFFFFFF) +val tertiaryContainerLightHighContrast = Color(0xFF264A36) +val onTertiaryContainerLightHighContrast = Color(0xFFFFFFFF) +val errorLightHighContrast = Color(0xFF4E0002) +val onErrorLightHighContrast = Color(0xFFFFFFFF) +val errorContainerLightHighContrast = Color(0xFF8C0009) +val onErrorContainerLightHighContrast = Color(0xFFFFFFFF) +val backgroundLightHighContrast = Color(0xFFFFF9EB) +val onBackgroundLightHighContrast = Color(0xFF1D1C13) +val surfaceLightHighContrast = Color(0xFFFFF9EB) +val onSurfaceLightHighContrast = Color(0xFF000000) +val surfaceVariantLightHighContrast = Color(0xFFE9E2D0) +val onSurfaceVariantLightHighContrast = Color(0xFF262418) +val outlineLightHighContrast = Color(0xFF464336) +val outlineVariantLightHighContrast = Color(0xFF464336) +val scrimLightHighContrast = Color(0xFF000000) +val inverseSurfaceLightHighContrast = Color(0xFF333027) +val inverseOnSurfaceLightHighContrast = Color(0xFFFFFFFF) +val inversePrimaryLightHighContrast = Color(0xFFFEED91) +val surfaceDimLightHighContrast = Color(0xFFDFDACC) +val surfaceBrightLightHighContrast = Color(0xFFFFF9EB) +val surfaceContainerLowestLightHighContrast = Color(0xFFFFFFFF) +val surfaceContainerLowLightHighContrast = Color(0xFFF9F3E5) +val surfaceContainerLightHighContrast = Color(0xFFF3EDE0) +val surfaceContainerHighLightHighContrast = Color(0xFFEEE8DA) +val surfaceContainerHighestLightHighContrast = Color(0xFFE8E2D4) + +val primaryDark = Color(0xFFD7C770) +val onPrimaryDark = Color(0xFF383000) +val primaryContainerDark = Color(0xFF514700) +val onPrimaryContainerDark = Color(0xFFF4E389) +val secondaryDark = Color(0xFFCFC7A2) +val onSecondaryDark = Color(0xFF353117) +val secondaryContainerDark = Color(0xFF4C472B) +val onSecondaryContainerDark = Color(0xFFECE3BD) +val tertiaryDark = Color(0xFFA8D0B5) +val onTertiaryDark = Color(0xFF123724) +val tertiaryContainerDark = Color(0xFF2A4E3A) +val onTertiaryContainerDark = Color(0xFFC3ECD1) +val errorDark = Color(0xFFFFB4AB) +val onErrorDark = Color(0xFF690005) +val errorContainerDark = Color(0xFF93000A) +val onErrorContainerDark = Color(0xFFFFDAD6) +val backgroundDark = Color(0xFF15130C) +val onBackgroundDark = Color(0xFFE8E2D4) +val surfaceDark = Color(0xFF15130C) +val onSurfaceDark = Color(0xFFE8E2D4) +val surfaceVariantDark = Color(0xFF4A4739) +val onSurfaceVariantDark = Color(0xFFCCC6B5) +val outlineDark = Color(0xFF959180) +val outlineVariantDark = Color(0xFF4A4739) +val scrimDark = Color(0xFF000000) +val inverseSurfaceDark = Color(0xFFE8E2D4) +val inverseOnSurfaceDark = Color(0xFF333027) +val inversePrimaryDark = Color(0xFF6A5F11) +val surfaceDimDark = Color(0xFF15130C) +val surfaceBrightDark = Color(0xFF3C3930) +val surfaceContainerLowestDark = Color(0xFF100E07) +val surfaceContainerLowDark = Color(0xFF1D1C13) +val surfaceContainerDark = Color(0xFF222017) +val surfaceContainerHighDark = Color(0xFF2C2A21) +val surfaceContainerHighestDark = Color(0xFF37352B) + +val primaryDarkMediumContrast = Color(0xFFDCCC74) +val onPrimaryDarkMediumContrast = Color(0xFF1B1600) +val primaryContainerDarkMediumContrast = Color(0xFF9F9140) +val onPrimaryContainerDarkMediumContrast = Color(0xFF000000) +val secondaryDarkMediumContrast = Color(0xFFD4CBA6) +val onSecondaryDarkMediumContrast = Color(0xFF1A1602) +val secondaryContainerDarkMediumContrast = Color(0xFF98916F) +val onSecondaryContainerDarkMediumContrast = Color(0xFF000000) +val tertiaryDarkMediumContrast = Color(0xFFACD4BA) +val onTertiaryDarkMediumContrast = Color(0xFF001B0E) +val tertiaryContainerDarkMediumContrast = Color(0xFF739981) +val onTertiaryContainerDarkMediumContrast = Color(0xFF000000) +val errorDarkMediumContrast = Color(0xFFFFBAB1) +val onErrorDarkMediumContrast = Color(0xFF370001) +val errorContainerDarkMediumContrast = Color(0xFFFF5449) +val onErrorContainerDarkMediumContrast = Color(0xFF000000) +val backgroundDarkMediumContrast = Color(0xFF15130C) +val onBackgroundDarkMediumContrast = Color(0xFFE8E2D4) +val surfaceDarkMediumContrast = Color(0xFF15130C) +val onSurfaceDarkMediumContrast = Color(0xFFFFFAF4) +val surfaceVariantDarkMediumContrast = Color(0xFF4A4739) +val onSurfaceVariantDarkMediumContrast = Color(0xFFD0CAB9) +val outlineDarkMediumContrast = Color(0xFFA8A392) +val outlineVariantDarkMediumContrast = Color(0xFF888373) +val scrimDarkMediumContrast = Color(0xFF000000) +val inverseSurfaceDarkMediumContrast = Color(0xFFE8E2D4) +val inverseOnSurfaceDarkMediumContrast = Color(0xFF2C2A21) +val inversePrimaryDarkMediumContrast = Color(0xFF524800) +val surfaceDimDarkMediumContrast = Color(0xFF15130C) +val surfaceBrightDarkMediumContrast = Color(0xFF3C3930) +val surfaceContainerLowestDarkMediumContrast = Color(0xFF100E07) +val surfaceContainerLowDarkMediumContrast = Color(0xFF1D1C13) +val surfaceContainerDarkMediumContrast = Color(0xFF222017) +val surfaceContainerHighDarkMediumContrast = Color(0xFF2C2A21) +val surfaceContainerHighestDarkMediumContrast = Color(0xFF37352B) + +val primaryDarkHighContrast = Color(0xFFFFFAF4) +val onPrimaryDarkHighContrast = Color(0xFF000000) +val primaryContainerDarkHighContrast = Color(0xFFDCCC74) +val onPrimaryContainerDarkHighContrast = Color(0xFF000000) +val secondaryDarkHighContrast = Color(0xFFFFFAF4) +val onSecondaryDarkHighContrast = Color(0xFF000000) +val secondaryContainerDarkHighContrast = Color(0xFFD4CBA6) +val onSecondaryContainerDarkHighContrast = Color(0xFF000000) +val tertiaryDarkHighContrast = Color(0xFFEEFFF1) +val onTertiaryDarkHighContrast = Color(0xFF000000) +val tertiaryContainerDarkHighContrast = Color(0xFFACD4BA) +val onTertiaryContainerDarkHighContrast = Color(0xFF000000) +val errorDarkHighContrast = Color(0xFFFFF9F9) +val onErrorDarkHighContrast = Color(0xFF000000) +val errorContainerDarkHighContrast = Color(0xFFFFBAB1) +val onErrorContainerDarkHighContrast = Color(0xFF000000) +val backgroundDarkHighContrast = Color(0xFF15130C) +val onBackgroundDarkHighContrast = Color(0xFFE8E2D4) +val surfaceDarkHighContrast = Color(0xFF15130C) +val onSurfaceDarkHighContrast = Color(0xFFFFFFFF) +val surfaceVariantDarkHighContrast = Color(0xFF4A4739) +val onSurfaceVariantDarkHighContrast = Color(0xFFFFFAF4) +val outlineDarkHighContrast = Color(0xFFD0CAB9) +val outlineVariantDarkHighContrast = Color(0xFFD0CAB9) +val scrimDarkHighContrast = Color(0xFF000000) +val inverseSurfaceDarkHighContrast = Color(0xFFE8E2D4) +val inverseOnSurfaceDarkHighContrast = Color(0xFF000000) +val inversePrimaryDarkHighContrast = Color(0xFF312A00) +val surfaceDimDarkHighContrast = Color(0xFF15130C) +val surfaceBrightDarkHighContrast = Color(0xFF3C3930) +val surfaceContainerLowestDarkHighContrast = Color(0xFF100E07) +val surfaceContainerLowDarkHighContrast = Color(0xFF1D1C13) +val surfaceContainerDarkHighContrast = Color(0xFF222017) +val surfaceContainerHighDarkHighContrast = Color(0xFF2C2A21) +val surfaceContainerHighestDarkHighContrast = Color(0xFF37352B) + + + + + -val Purple40 = Color(0xFF6650a4) -val PurpleGrey40 = Color(0xFF625b71) -val Pink40 = Color(0xFF7D5260) -val ToDoPurple = Color(0xFF9395D3) \ No newline at end of file diff --git a/app/src/main/java/com/juandgaines/todoapp/ui/theme/Theme.kt b/app/src/main/java/com/juandgaines/todoapp/ui/theme/Theme.kt index abf88f3..d7855cb 100644 --- a/app/src/main/java/com/juandgaines/todoapp/ui/theme/Theme.kt +++ b/app/src/main/java/com/juandgaines/todoapp/ui/theme/Theme.kt @@ -1,36 +1,465 @@ -package com.juandgaines.todoapp.ui.theme - -import android.app.Activity +package com.example.compose import android.os.Build import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.lightColorScheme import androidx.compose.material3.darkColorScheme 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 +import com.juandgaines.todoapp.ui.theme.AppTypography +import com.juandgaines.todoapp.ui.theme.backgroundDark +import com.juandgaines.todoapp.ui.theme.backgroundDarkHighContrast +import com.juandgaines.todoapp.ui.theme.backgroundDarkMediumContrast +import com.juandgaines.todoapp.ui.theme.backgroundLight +import com.juandgaines.todoapp.ui.theme.backgroundLightHighContrast +import com.juandgaines.todoapp.ui.theme.backgroundLightMediumContrast +import com.juandgaines.todoapp.ui.theme.errorContainerDark +import com.juandgaines.todoapp.ui.theme.errorContainerDarkHighContrast +import com.juandgaines.todoapp.ui.theme.errorContainerDarkMediumContrast +import com.juandgaines.todoapp.ui.theme.errorContainerLight +import com.juandgaines.todoapp.ui.theme.errorContainerLightHighContrast +import com.juandgaines.todoapp.ui.theme.errorContainerLightMediumContrast +import com.juandgaines.todoapp.ui.theme.errorDark +import com.juandgaines.todoapp.ui.theme.errorDarkHighContrast +import com.juandgaines.todoapp.ui.theme.errorDarkMediumContrast +import com.juandgaines.todoapp.ui.theme.errorLight +import com.juandgaines.todoapp.ui.theme.errorLightHighContrast +import com.juandgaines.todoapp.ui.theme.errorLightMediumContrast +import com.juandgaines.todoapp.ui.theme.inverseOnSurfaceDark +import com.juandgaines.todoapp.ui.theme.inverseOnSurfaceDarkHighContrast +import com.juandgaines.todoapp.ui.theme.inverseOnSurfaceDarkMediumContrast +import com.juandgaines.todoapp.ui.theme.inverseOnSurfaceLight +import com.juandgaines.todoapp.ui.theme.inverseOnSurfaceLightHighContrast +import com.juandgaines.todoapp.ui.theme.inverseOnSurfaceLightMediumContrast +import com.juandgaines.todoapp.ui.theme.inversePrimaryDark +import com.juandgaines.todoapp.ui.theme.inversePrimaryDarkHighContrast +import com.juandgaines.todoapp.ui.theme.inversePrimaryDarkMediumContrast +import com.juandgaines.todoapp.ui.theme.inversePrimaryLight +import com.juandgaines.todoapp.ui.theme.inversePrimaryLightHighContrast +import com.juandgaines.todoapp.ui.theme.inversePrimaryLightMediumContrast +import com.juandgaines.todoapp.ui.theme.inverseSurfaceDark +import com.juandgaines.todoapp.ui.theme.inverseSurfaceDarkHighContrast +import com.juandgaines.todoapp.ui.theme.inverseSurfaceDarkMediumContrast +import com.juandgaines.todoapp.ui.theme.inverseSurfaceLight +import com.juandgaines.todoapp.ui.theme.inverseSurfaceLightHighContrast +import com.juandgaines.todoapp.ui.theme.inverseSurfaceLightMediumContrast +import com.juandgaines.todoapp.ui.theme.onBackgroundDark +import com.juandgaines.todoapp.ui.theme.onBackgroundDarkHighContrast +import com.juandgaines.todoapp.ui.theme.onBackgroundDarkMediumContrast +import com.juandgaines.todoapp.ui.theme.onBackgroundLight +import com.juandgaines.todoapp.ui.theme.onBackgroundLightHighContrast +import com.juandgaines.todoapp.ui.theme.onBackgroundLightMediumContrast +import com.juandgaines.todoapp.ui.theme.onErrorContainerDark +import com.juandgaines.todoapp.ui.theme.onErrorContainerDarkHighContrast +import com.juandgaines.todoapp.ui.theme.onErrorContainerDarkMediumContrast +import com.juandgaines.todoapp.ui.theme.onErrorContainerLight +import com.juandgaines.todoapp.ui.theme.onErrorContainerLightHighContrast +import com.juandgaines.todoapp.ui.theme.onErrorContainerLightMediumContrast +import com.juandgaines.todoapp.ui.theme.onErrorDark +import com.juandgaines.todoapp.ui.theme.onErrorDarkHighContrast +import com.juandgaines.todoapp.ui.theme.onErrorDarkMediumContrast +import com.juandgaines.todoapp.ui.theme.onErrorLight +import com.juandgaines.todoapp.ui.theme.onErrorLightHighContrast +import com.juandgaines.todoapp.ui.theme.onErrorLightMediumContrast +import com.juandgaines.todoapp.ui.theme.onPrimaryContainerDark +import com.juandgaines.todoapp.ui.theme.onPrimaryContainerDarkHighContrast +import com.juandgaines.todoapp.ui.theme.onPrimaryContainerDarkMediumContrast +import com.juandgaines.todoapp.ui.theme.onPrimaryContainerLight +import com.juandgaines.todoapp.ui.theme.onPrimaryContainerLightHighContrast +import com.juandgaines.todoapp.ui.theme.onPrimaryContainerLightMediumContrast +import com.juandgaines.todoapp.ui.theme.onPrimaryDark +import com.juandgaines.todoapp.ui.theme.onPrimaryDarkHighContrast +import com.juandgaines.todoapp.ui.theme.onPrimaryDarkMediumContrast +import com.juandgaines.todoapp.ui.theme.onPrimaryLight +import com.juandgaines.todoapp.ui.theme.onPrimaryLightHighContrast +import com.juandgaines.todoapp.ui.theme.onPrimaryLightMediumContrast +import com.juandgaines.todoapp.ui.theme.onSecondaryContainerDark +import com.juandgaines.todoapp.ui.theme.onSecondaryContainerDarkHighContrast +import com.juandgaines.todoapp.ui.theme.onSecondaryContainerDarkMediumContrast +import com.juandgaines.todoapp.ui.theme.onSecondaryContainerLight +import com.juandgaines.todoapp.ui.theme.onSecondaryContainerLightHighContrast +import com.juandgaines.todoapp.ui.theme.onSecondaryContainerLightMediumContrast +import com.juandgaines.todoapp.ui.theme.onSecondaryDark +import com.juandgaines.todoapp.ui.theme.onSecondaryDarkHighContrast +import com.juandgaines.todoapp.ui.theme.onSecondaryDarkMediumContrast +import com.juandgaines.todoapp.ui.theme.onSecondaryLight +import com.juandgaines.todoapp.ui.theme.onSecondaryLightHighContrast +import com.juandgaines.todoapp.ui.theme.onSecondaryLightMediumContrast +import com.juandgaines.todoapp.ui.theme.onSurfaceDark +import com.juandgaines.todoapp.ui.theme.onSurfaceDarkHighContrast +import com.juandgaines.todoapp.ui.theme.onSurfaceDarkMediumContrast +import com.juandgaines.todoapp.ui.theme.onSurfaceLight +import com.juandgaines.todoapp.ui.theme.onSurfaceLightHighContrast +import com.juandgaines.todoapp.ui.theme.onSurfaceLightMediumContrast +import com.juandgaines.todoapp.ui.theme.onSurfaceVariantDark +import com.juandgaines.todoapp.ui.theme.onSurfaceVariantDarkHighContrast +import com.juandgaines.todoapp.ui.theme.onSurfaceVariantDarkMediumContrast +import com.juandgaines.todoapp.ui.theme.onSurfaceVariantLight +import com.juandgaines.todoapp.ui.theme.onSurfaceVariantLightHighContrast +import com.juandgaines.todoapp.ui.theme.onSurfaceVariantLightMediumContrast +import com.juandgaines.todoapp.ui.theme.onTertiaryContainerDark +import com.juandgaines.todoapp.ui.theme.onTertiaryContainerDarkHighContrast +import com.juandgaines.todoapp.ui.theme.onTertiaryContainerDarkMediumContrast +import com.juandgaines.todoapp.ui.theme.onTertiaryContainerLight +import com.juandgaines.todoapp.ui.theme.onTertiaryContainerLightHighContrast +import com.juandgaines.todoapp.ui.theme.onTertiaryContainerLightMediumContrast +import com.juandgaines.todoapp.ui.theme.onTertiaryDark +import com.juandgaines.todoapp.ui.theme.onTertiaryDarkHighContrast +import com.juandgaines.todoapp.ui.theme.onTertiaryDarkMediumContrast +import com.juandgaines.todoapp.ui.theme.onTertiaryLight +import com.juandgaines.todoapp.ui.theme.onTertiaryLightHighContrast +import com.juandgaines.todoapp.ui.theme.onTertiaryLightMediumContrast +import com.juandgaines.todoapp.ui.theme.outlineDark +import com.juandgaines.todoapp.ui.theme.outlineDarkHighContrast +import com.juandgaines.todoapp.ui.theme.outlineDarkMediumContrast +import com.juandgaines.todoapp.ui.theme.outlineLight +import com.juandgaines.todoapp.ui.theme.outlineLightHighContrast +import com.juandgaines.todoapp.ui.theme.outlineLightMediumContrast +import com.juandgaines.todoapp.ui.theme.outlineVariantDark +import com.juandgaines.todoapp.ui.theme.outlineVariantDarkHighContrast +import com.juandgaines.todoapp.ui.theme.outlineVariantDarkMediumContrast +import com.juandgaines.todoapp.ui.theme.outlineVariantLight +import com.juandgaines.todoapp.ui.theme.outlineVariantLightHighContrast +import com.juandgaines.todoapp.ui.theme.outlineVariantLightMediumContrast +import com.juandgaines.todoapp.ui.theme.primaryContainerDark +import com.juandgaines.todoapp.ui.theme.primaryContainerDarkHighContrast +import com.juandgaines.todoapp.ui.theme.primaryContainerDarkMediumContrast +import com.juandgaines.todoapp.ui.theme.primaryContainerLight +import com.juandgaines.todoapp.ui.theme.primaryContainerLightHighContrast +import com.juandgaines.todoapp.ui.theme.primaryContainerLightMediumContrast +import com.juandgaines.todoapp.ui.theme.primaryDark +import com.juandgaines.todoapp.ui.theme.primaryDarkHighContrast +import com.juandgaines.todoapp.ui.theme.primaryDarkMediumContrast +import com.juandgaines.todoapp.ui.theme.primaryLight +import com.juandgaines.todoapp.ui.theme.primaryLightHighContrast +import com.juandgaines.todoapp.ui.theme.primaryLightMediumContrast +import com.juandgaines.todoapp.ui.theme.scrimDark +import com.juandgaines.todoapp.ui.theme.scrimDarkHighContrast +import com.juandgaines.todoapp.ui.theme.scrimDarkMediumContrast +import com.juandgaines.todoapp.ui.theme.scrimLight +import com.juandgaines.todoapp.ui.theme.scrimLightHighContrast +import com.juandgaines.todoapp.ui.theme.scrimLightMediumContrast +import com.juandgaines.todoapp.ui.theme.secondaryContainerDark +import com.juandgaines.todoapp.ui.theme.secondaryContainerDarkHighContrast +import com.juandgaines.todoapp.ui.theme.secondaryContainerDarkMediumContrast +import com.juandgaines.todoapp.ui.theme.secondaryContainerLight +import com.juandgaines.todoapp.ui.theme.secondaryContainerLightHighContrast +import com.juandgaines.todoapp.ui.theme.secondaryContainerLightMediumContrast +import com.juandgaines.todoapp.ui.theme.secondaryDark +import com.juandgaines.todoapp.ui.theme.secondaryDarkHighContrast +import com.juandgaines.todoapp.ui.theme.secondaryDarkMediumContrast +import com.juandgaines.todoapp.ui.theme.secondaryLight +import com.juandgaines.todoapp.ui.theme.secondaryLightHighContrast +import com.juandgaines.todoapp.ui.theme.secondaryLightMediumContrast +import com.juandgaines.todoapp.ui.theme.surfaceBrightDark +import com.juandgaines.todoapp.ui.theme.surfaceBrightDarkHighContrast +import com.juandgaines.todoapp.ui.theme.surfaceBrightDarkMediumContrast +import com.juandgaines.todoapp.ui.theme.surfaceBrightLight +import com.juandgaines.todoapp.ui.theme.surfaceBrightLightHighContrast +import com.juandgaines.todoapp.ui.theme.surfaceBrightLightMediumContrast +import com.juandgaines.todoapp.ui.theme.surfaceContainerDark +import com.juandgaines.todoapp.ui.theme.surfaceContainerDarkHighContrast +import com.juandgaines.todoapp.ui.theme.surfaceContainerDarkMediumContrast +import com.juandgaines.todoapp.ui.theme.surfaceContainerHighDark +import com.juandgaines.todoapp.ui.theme.surfaceContainerHighDarkHighContrast +import com.juandgaines.todoapp.ui.theme.surfaceContainerHighDarkMediumContrast +import com.juandgaines.todoapp.ui.theme.surfaceContainerHighLight +import com.juandgaines.todoapp.ui.theme.surfaceContainerHighLightHighContrast +import com.juandgaines.todoapp.ui.theme.surfaceContainerHighLightMediumContrast +import com.juandgaines.todoapp.ui.theme.surfaceContainerHighestDark +import com.juandgaines.todoapp.ui.theme.surfaceContainerHighestDarkHighContrast +import com.juandgaines.todoapp.ui.theme.surfaceContainerHighestDarkMediumContrast +import com.juandgaines.todoapp.ui.theme.surfaceContainerHighestLight +import com.juandgaines.todoapp.ui.theme.surfaceContainerHighestLightHighContrast +import com.juandgaines.todoapp.ui.theme.surfaceContainerHighestLightMediumContrast +import com.juandgaines.todoapp.ui.theme.surfaceContainerLight +import com.juandgaines.todoapp.ui.theme.surfaceContainerLightHighContrast +import com.juandgaines.todoapp.ui.theme.surfaceContainerLightMediumContrast +import com.juandgaines.todoapp.ui.theme.surfaceContainerLowDark +import com.juandgaines.todoapp.ui.theme.surfaceContainerLowDarkHighContrast +import com.juandgaines.todoapp.ui.theme.surfaceContainerLowDarkMediumContrast +import com.juandgaines.todoapp.ui.theme.surfaceContainerLowLight +import com.juandgaines.todoapp.ui.theme.surfaceContainerLowLightHighContrast +import com.juandgaines.todoapp.ui.theme.surfaceContainerLowLightMediumContrast +import com.juandgaines.todoapp.ui.theme.surfaceContainerLowestDark +import com.juandgaines.todoapp.ui.theme.surfaceContainerLowestDarkHighContrast +import com.juandgaines.todoapp.ui.theme.surfaceContainerLowestDarkMediumContrast +import com.juandgaines.todoapp.ui.theme.surfaceContainerLowestLight +import com.juandgaines.todoapp.ui.theme.surfaceContainerLowestLightHighContrast +import com.juandgaines.todoapp.ui.theme.surfaceContainerLowestLightMediumContrast +import com.juandgaines.todoapp.ui.theme.surfaceDark +import com.juandgaines.todoapp.ui.theme.surfaceDarkHighContrast +import com.juandgaines.todoapp.ui.theme.surfaceDarkMediumContrast +import com.juandgaines.todoapp.ui.theme.surfaceDimDark +import com.juandgaines.todoapp.ui.theme.surfaceDimDarkHighContrast +import com.juandgaines.todoapp.ui.theme.surfaceDimDarkMediumContrast +import com.juandgaines.todoapp.ui.theme.surfaceDimLight +import com.juandgaines.todoapp.ui.theme.surfaceDimLightHighContrast +import com.juandgaines.todoapp.ui.theme.surfaceDimLightMediumContrast +import com.juandgaines.todoapp.ui.theme.surfaceLight +import com.juandgaines.todoapp.ui.theme.surfaceLightHighContrast +import com.juandgaines.todoapp.ui.theme.surfaceLightMediumContrast +import com.juandgaines.todoapp.ui.theme.surfaceVariantDark +import com.juandgaines.todoapp.ui.theme.surfaceVariantDarkHighContrast +import com.juandgaines.todoapp.ui.theme.surfaceVariantDarkMediumContrast +import com.juandgaines.todoapp.ui.theme.surfaceVariantLight +import com.juandgaines.todoapp.ui.theme.surfaceVariantLightHighContrast +import com.juandgaines.todoapp.ui.theme.surfaceVariantLightMediumContrast +import com.juandgaines.todoapp.ui.theme.tertiaryContainerDark +import com.juandgaines.todoapp.ui.theme.tertiaryContainerDarkHighContrast +import com.juandgaines.todoapp.ui.theme.tertiaryContainerDarkMediumContrast +import com.juandgaines.todoapp.ui.theme.tertiaryContainerLight +import com.juandgaines.todoapp.ui.theme.tertiaryContainerLightHighContrast +import com.juandgaines.todoapp.ui.theme.tertiaryContainerLightMediumContrast +import com.juandgaines.todoapp.ui.theme.tertiaryDark +import com.juandgaines.todoapp.ui.theme.tertiaryDarkHighContrast +import com.juandgaines.todoapp.ui.theme.tertiaryDarkMediumContrast +import com.juandgaines.todoapp.ui.theme.tertiaryLight +import com.juandgaines.todoapp.ui.theme.tertiaryLightHighContrast +import com.juandgaines.todoapp.ui.theme.tertiaryLightMediumContrast + +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 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, +) + +private val mediumContrastLightColorScheme = lightColorScheme( + primary = primaryLightMediumContrast, + onPrimary = onPrimaryLightMediumContrast, + primaryContainer = primaryContainerLightMediumContrast, + onPrimaryContainer = onPrimaryContainerLightMediumContrast, + secondary = secondaryLightMediumContrast, + onSecondary = onSecondaryLightMediumContrast, + secondaryContainer = secondaryContainerLightMediumContrast, + onSecondaryContainer = onSecondaryContainerLightMediumContrast, + tertiary = tertiaryLightMediumContrast, + onTertiary = onTertiaryLightMediumContrast, + tertiaryContainer = tertiaryContainerLightMediumContrast, + onTertiaryContainer = onTertiaryContainerLightMediumContrast, + error = errorLightMediumContrast, + onError = onErrorLightMediumContrast, + errorContainer = errorContainerLightMediumContrast, + onErrorContainer = onErrorContainerLightMediumContrast, + background = backgroundLightMediumContrast, + onBackground = onBackgroundLightMediumContrast, + surface = surfaceLightMediumContrast, + onSurface = onSurfaceLightMediumContrast, + surfaceVariant = surfaceVariantLightMediumContrast, + onSurfaceVariant = onSurfaceVariantLightMediumContrast, + outline = outlineLightMediumContrast, + outlineVariant = outlineVariantLightMediumContrast, + scrim = scrimLightMediumContrast, + inverseSurface = inverseSurfaceLightMediumContrast, + inverseOnSurface = inverseOnSurfaceLightMediumContrast, + inversePrimary = inversePrimaryLightMediumContrast, + surfaceDim = surfaceDimLightMediumContrast, + surfaceBright = surfaceBrightLightMediumContrast, + surfaceContainerLowest = surfaceContainerLowestLightMediumContrast, + surfaceContainerLow = surfaceContainerLowLightMediumContrast, + surfaceContainer = surfaceContainerLightMediumContrast, + surfaceContainerHigh = surfaceContainerHighLightMediumContrast, + surfaceContainerHighest = surfaceContainerHighestLightMediumContrast, +) + +private val highContrastLightColorScheme = lightColorScheme( + primary = primaryLightHighContrast, + onPrimary = onPrimaryLightHighContrast, + primaryContainer = primaryContainerLightHighContrast, + onPrimaryContainer = onPrimaryContainerLightHighContrast, + secondary = secondaryLightHighContrast, + onSecondary = onSecondaryLightHighContrast, + secondaryContainer = secondaryContainerLightHighContrast, + onSecondaryContainer = onSecondaryContainerLightHighContrast, + tertiary = tertiaryLightHighContrast, + onTertiary = onTertiaryLightHighContrast, + tertiaryContainer = tertiaryContainerLightHighContrast, + onTertiaryContainer = onTertiaryContainerLightHighContrast, + error = errorLightHighContrast, + onError = onErrorLightHighContrast, + errorContainer = errorContainerLightHighContrast, + onErrorContainer = onErrorContainerLightHighContrast, + background = backgroundLightHighContrast, + onBackground = onBackgroundLightHighContrast, + surface = surfaceLightHighContrast, + onSurface = onSurfaceLightHighContrast, + surfaceVariant = surfaceVariantLightHighContrast, + onSurfaceVariant = onSurfaceVariantLightHighContrast, + outline = outlineLightHighContrast, + outlineVariant = outlineVariantLightHighContrast, + scrim = scrimLightHighContrast, + inverseSurface = inverseSurfaceLightHighContrast, + inverseOnSurface = inverseOnSurfaceLightHighContrast, + inversePrimary = inversePrimaryLightHighContrast, + surfaceDim = surfaceDimLightHighContrast, + surfaceBright = surfaceBrightLightHighContrast, + surfaceContainerLowest = surfaceContainerLowestLightHighContrast, + surfaceContainerLow = surfaceContainerLowLightHighContrast, + surfaceContainer = surfaceContainerLightHighContrast, + surfaceContainerHigh = surfaceContainerHighLightHighContrast, + surfaceContainerHighest = surfaceContainerHighestLightHighContrast, +) + +private val mediumContrastDarkColorScheme = darkColorScheme( + primary = primaryDarkMediumContrast, + onPrimary = onPrimaryDarkMediumContrast, + primaryContainer = primaryContainerDarkMediumContrast, + onPrimaryContainer = onPrimaryContainerDarkMediumContrast, + secondary = secondaryDarkMediumContrast, + onSecondary = onSecondaryDarkMediumContrast, + secondaryContainer = secondaryContainerDarkMediumContrast, + onSecondaryContainer = onSecondaryContainerDarkMediumContrast, + tertiary = tertiaryDarkMediumContrast, + onTertiary = onTertiaryDarkMediumContrast, + tertiaryContainer = tertiaryContainerDarkMediumContrast, + onTertiaryContainer = onTertiaryContainerDarkMediumContrast, + error = errorDarkMediumContrast, + onError = onErrorDarkMediumContrast, + errorContainer = errorContainerDarkMediumContrast, + onErrorContainer = onErrorContainerDarkMediumContrast, + background = backgroundDarkMediumContrast, + onBackground = onBackgroundDarkMediumContrast, + surface = surfaceDarkMediumContrast, + onSurface = onSurfaceDarkMediumContrast, + surfaceVariant = surfaceVariantDarkMediumContrast, + onSurfaceVariant = onSurfaceVariantDarkMediumContrast, + outline = outlineDarkMediumContrast, + outlineVariant = outlineVariantDarkMediumContrast, + scrim = scrimDarkMediumContrast, + inverseSurface = inverseSurfaceDarkMediumContrast, + inverseOnSurface = inverseOnSurfaceDarkMediumContrast, + inversePrimary = inversePrimaryDarkMediumContrast, + surfaceDim = surfaceDimDarkMediumContrast, + surfaceBright = surfaceBrightDarkMediumContrast, + surfaceContainerLowest = surfaceContainerLowestDarkMediumContrast, + surfaceContainerLow = surfaceContainerLowDarkMediumContrast, + surfaceContainer = surfaceContainerDarkMediumContrast, + surfaceContainerHigh = surfaceContainerHighDarkMediumContrast, + surfaceContainerHighest = surfaceContainerHighestDarkMediumContrast, +) -private val DarkColorScheme = darkColorScheme( - primary = Purple80, - secondary = PurpleGrey80, - tertiary = Pink80 +private val highContrastDarkColorScheme = darkColorScheme( + primary = primaryDarkHighContrast, + onPrimary = onPrimaryDarkHighContrast, + primaryContainer = primaryContainerDarkHighContrast, + onPrimaryContainer = onPrimaryContainerDarkHighContrast, + secondary = secondaryDarkHighContrast, + onSecondary = onSecondaryDarkHighContrast, + secondaryContainer = secondaryContainerDarkHighContrast, + onSecondaryContainer = onSecondaryContainerDarkHighContrast, + tertiary = tertiaryDarkHighContrast, + onTertiary = onTertiaryDarkHighContrast, + tertiaryContainer = tertiaryContainerDarkHighContrast, + onTertiaryContainer = onTertiaryContainerDarkHighContrast, + error = errorDarkHighContrast, + onError = onErrorDarkHighContrast, + errorContainer = errorContainerDarkHighContrast, + onErrorContainer = onErrorContainerDarkHighContrast, + background = backgroundDarkHighContrast, + onBackground = onBackgroundDarkHighContrast, + surface = surfaceDarkHighContrast, + onSurface = onSurfaceDarkHighContrast, + surfaceVariant = surfaceVariantDarkHighContrast, + onSurfaceVariant = onSurfaceVariantDarkHighContrast, + outline = outlineDarkHighContrast, + outlineVariant = outlineVariantDarkHighContrast, + scrim = scrimDarkHighContrast, + inverseSurface = inverseSurfaceDarkHighContrast, + inverseOnSurface = inverseOnSurfaceDarkHighContrast, + inversePrimary = inversePrimaryDarkHighContrast, + surfaceDim = surfaceDimDarkHighContrast, + surfaceBright = surfaceBrightDarkHighContrast, + surfaceContainerLowest = surfaceContainerLowestDarkHighContrast, + surfaceContainerLow = surfaceContainerLowDarkHighContrast, + surfaceContainer = surfaceContainerDarkHighContrast, + surfaceContainerHigh = surfaceContainerHighDarkHighContrast, + surfaceContainerHighest = surfaceContainerHighestDarkHighContrast, ) -private val LightColorScheme = lightColorScheme( - primary = Purple40, - secondary = PurpleGrey40, - tertiary = Pink40 +@Immutable +data class ColorFamily( + val color: Color, + val onColor: Color, + val colorContainer: Color, + val onColorContainer: Color +) - /* 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), - */ +val unspecified_scheme = ColorFamily( + Color.Unspecified, Color.Unspecified, Color.Unspecified, Color.Unspecified ) @Composable @@ -38,21 +467,22 @@ fun TodoAppTheme( 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) - } - - darkTheme -> DarkColorScheme - else -> LightColorScheme - } - - MaterialTheme( - colorScheme = colorScheme, - typography = Typography, - content = content - ) -} \ No newline at end of file + val colorScheme = when { + dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> { + val context = LocalContext.current + if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context) + } + + darkTheme -> darkScheme + else -> lightScheme + } + + MaterialTheme( + colorScheme = colorScheme, + typography = AppTypography, + content = content + ) +} + diff --git a/app/src/main/java/com/juandgaines/todoapp/ui/theme/Type.kt b/app/src/main/java/com/juandgaines/todoapp/ui/theme/Type.kt index 413c875..0e261de 100644 --- a/app/src/main/java/com/juandgaines/todoapp/ui/theme/Type.kt +++ b/app/src/main/java/com/juandgaines/todoapp/ui/theme/Type.kt @@ -1,34 +1,50 @@ package com.juandgaines.todoapp.ui.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.FontWeight -import androidx.compose.ui.unit.sp - -// 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 + +import androidx.compose.ui.text.googlefonts.GoogleFont +import androidx.compose.ui.text.googlefonts.Font +import com.juandgaines.todoapp.R + +val provider = GoogleFont.Provider( + providerAuthority = "com.google.android.gms.fonts", + providerPackage = "com.google.android.gms", + certificates = R.array.com_google_android_gms_fonts_certs +) + +val bodyFontFamily = FontFamily( + Font( + googleFont = GoogleFont("Poppins"), + fontProvider = provider, ) - /* Other default text styles to override - titleLarge = TextStyle( - fontFamily = FontFamily.Default, - fontWeight = FontWeight.Normal, - fontSize = 22.sp, - lineHeight = 28.sp, - letterSpacing = 0.sp - ), - labelSmall = TextStyle( - fontFamily = FontFamily.Default, - fontWeight = FontWeight.Medium, - fontSize = 11.sp, - lineHeight = 16.sp, - letterSpacing = 0.5.sp +) + +val displayFontFamily = FontFamily( + Font( + googleFont = GoogleFont("Poppins"), + fontProvider = provider, ) - */ -) \ No newline at end of file +) + +// Default Material 3 typography values +val baseline = Typography() + +val AppTypography = Typography( + displayLarge = baseline.displayLarge.copy(fontFamily = displayFontFamily), + displayMedium = baseline.displayMedium.copy(fontFamily = displayFontFamily), + displaySmall = baseline.displaySmall.copy(fontFamily = displayFontFamily), + headlineLarge = baseline.headlineLarge.copy(fontFamily = displayFontFamily), + headlineMedium = baseline.headlineMedium.copy(fontFamily = displayFontFamily), + headlineSmall = baseline.headlineSmall.copy(fontFamily = displayFontFamily), + titleLarge = baseline.titleLarge.copy(fontFamily = displayFontFamily), + titleMedium = baseline.titleMedium.copy(fontFamily = displayFontFamily), + titleSmall = baseline.titleSmall.copy(fontFamily = displayFontFamily), + bodyLarge = baseline.bodyLarge.copy(fontFamily = bodyFontFamily), + bodyMedium = baseline.bodyMedium.copy(fontFamily = bodyFontFamily), + bodySmall = baseline.bodySmall.copy(fontFamily = bodyFontFamily), + labelLarge = baseline.labelLarge.copy(fontFamily = bodyFontFamily), + labelMedium = baseline.labelMedium.copy(fontFamily = bodyFontFamily), + labelSmall = baseline.labelSmall.copy(fontFamily = bodyFontFamily), +) + diff --git a/app/src/main/res/values/font_certs.xml b/app/src/main/res/values/font_certs.xml new file mode 100644 index 0000000..207b62f --- /dev/null +++ b/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 + + + + MIIEqDCCA5CgAwIBAgIJANWFuGx90071MA0GCSqGSIb3DQEBBAUAMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTAeFw0wODA0MTUyMzM2NTZaFw0zNTA5MDEyMzM2NTZaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgCggEBANbOLggKv+IxTdGNs8/TGFy0PTP6DHThvbbR24kT9ixcOd9W+EaBPWW+wPPKQmsHxajtWjmQwWfna8mZuSeJS48LIgAZlKkpFeVyxW0qMBujb8X8ETrWy550NaFtI6t9+u7hZeTfHwqNvacKhp1RbE6dBRGWynwMVX8XW8N1+UjFaq6GCJukT4qmpN2afb8sCjUigq0GuMwYXrFVee74bQgLHWGJwPmvmLHC69EH6kWr22ijx4OKXlSIx2xT1AsSHee70w5iDBiK4aph27yH3TxkXy9V89TDdexAcKk/cVHYNnDBapcavl7y0RiQ4biu8ymM8Ga/nmzhRKya6G0cGw8CAQOjgfwwgfkwHQYDVR0OBBYEFI0cxb6VTEM8YYY6FbBMvAPyT+CyMIHJBgNVHSMEgcEwgb6AFI0cxb6VTEM8YYY6FbBMvAPyT+CyoYGapIGXMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbYIJANWFuGx90071MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEEBQADggEBABnTDPEF+3iSP0wNfdIjIz1AlnrPzgAIHVvXxunW7SBrDhEglQZBbKJEk5kT0mtKoOD1JMrSu1xuTKEBahWRbqHsXclaXjoBADb0kkjVEJu/Lh5hgYZnOjvlba8Ld7HCKePCVePoTJBdI4fvugnL8TsgK05aIskyY0hKI9L8KfqfGTl1lzOv2KoWD0KWwtAWPoGChZxmQ+nBli+gwYMzM1vAkP+aayLe0a1EQimlOalO762r0GXO0ks+UeXde2Z4e+8S/pf7pITEI/tP+MxJTALw9QUWEv9lKTk+jkbqxbsh8nfBUapfKqYn0eidpwq2AzVp3juYl7//fKnaPhJD9gs= + + + + + MIIEQzCCAyugAwIBAgIJAMLgh0ZkSjCNMA0GCSqGSIb3DQEBBAUAMHQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtHb29nbGUgSW5jLjEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDAeFw0wODA4MjEyMzEzMzRaFw0zNjAxMDcyMzEzMzRaMHQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtHb29nbGUgSW5jLjEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgCggEBAKtWLgDYO6IIrgqWbxJOKdoR8qtW0I9Y4sypEwPpt1TTcvZApxsdyxMJZ2JORland2qSGT2y5b+3JKkedxiLDmpHpDsz2WCbdxgxRczfey5YZnTJ4VZbH0xqWVW/8lGmPav5xVwnIiJS6HXk+BVKZF+JcWjAsb/GEuq/eFdpuzSqeYTcfi6idkyugwfYwXFU1+5fZKUaRKYCwkkFQVfcAs1fXA5V+++FGfvjJ/CxURaSxaBvGdGDhfXE28LWuT9ozCl5xw4Yq5OGazvV24mZVSoOO0yZ31j7kYvtwYK6NeADwbSxDdJEqO4k//0zOHKrUiGYXtqw/A0LFFtqoZKFjnkCAQOjgdkwgdYwHQYDVR0OBBYEFMd9jMIhF1Ylmn/Tgt9r45jk14alMIGmBgNVHSMEgZ4wgZuAFMd9jMIhF1Ylmn/Tgt9r45jk14aloXikdjB0MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLR29vZ2xlIEluYy4xEDAOBgNVBAsTB0FuZHJvaWQxEDAOBgNVBAMTB0FuZHJvaWSCCQDC4IdGZEowjTAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBAUAA4IBAQBt0lLO74UwLDYKqs6Tm8/yzKkEu116FmH4rkaymUIE0P9KaMftGlMexFlaYjzmB2OxZyl6euNXEsQH8gjwyxCUKRJNexBiGcCEyj6z+a1fuHHvkiaai+KL8W1EyNmgjmyy8AW7P+LLlkR+ho5zEHatRbM/YAnqGcFh5iZBqpknHf1SKMXFh4dd239FJ1jWYfbMDMy3NS5CTMQ2XFI1MvcyUTdZPErjQfTbQe3aDQsQcafEQPD+nqActifKZ0Np0IS9L9kR/wbNvyz6ENwPiTrjV2KRkEjH78ZMcUQXg0L3BYHJ3lc69Vs5Ddf9uUGGMYldX3WfMBEmh/9iFBDAaTCK + + + diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index db529bb..2bc2dcd 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -16,6 +16,8 @@ composeBom = "2024.04.01" navigationCompose = "2.8.1" navigationComposeHilt = "1.2.0" room = "2.6.1" +uiTextGoogleFonts = "1.7.3" +googleFonts = "1.3.2" [libraries] @@ -32,7 +34,7 @@ androidx-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-toolin androidx-material3 = { group = "androidx.compose.material3", name = "material3" } androidx-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" } androidx-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" } - +androidx-ui-text-google-fonts = { group = "androidx.compose.ui", name = "ui-text-google-fonts", version.ref = "uiTextGoogleFonts" } #Navigation androidx-navigation-compose = { module = "androidx.navigation:navigation-compose", version.ref = "navigationCompose" } From f5f63e47a8ff2fdd84a74cfd4a79031d37832c3f Mon Sep 17 00:00:00 2001 From: Juan Gaines Date: Tue, 15 Oct 2024 19:06:25 -0500 Subject: [PATCH 2/3] feat: Material Theme --- .../com/juandgaines/todoapp/MainActivity.kt | 2 +- .../com/juandgaines/todoapp/ui/theme/Theme.kt | 213 +----------------- 2 files changed, 2 insertions(+), 213 deletions(-) diff --git a/app/src/main/java/com/juandgaines/todoapp/MainActivity.kt b/app/src/main/java/com/juandgaines/todoapp/MainActivity.kt index 2a2f5af..4360805 100644 --- a/app/src/main/java/com/juandgaines/todoapp/MainActivity.kt +++ b/app/src/main/java/com/juandgaines/todoapp/MainActivity.kt @@ -10,7 +10,7 @@ import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import com.example.compose.TodoAppTheme +import com.juandgaines.todoapp.ui.theme.TodoAppTheme import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint diff --git a/app/src/main/java/com/juandgaines/todoapp/ui/theme/Theme.kt b/app/src/main/java/com/juandgaines/todoapp/ui/theme/Theme.kt index d7855cb..5b06eea 100644 --- a/app/src/main/java/com/juandgaines/todoapp/ui/theme/Theme.kt +++ b/app/src/main/java/com/juandgaines/todoapp/ui/theme/Theme.kt @@ -1,4 +1,4 @@ -package com.example.compose +package com.juandgaines.todoapp.ui.theme import android.os.Build import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.material3.MaterialTheme @@ -10,217 +10,6 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.Immutable import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext -import com.juandgaines.todoapp.ui.theme.AppTypography -import com.juandgaines.todoapp.ui.theme.backgroundDark -import com.juandgaines.todoapp.ui.theme.backgroundDarkHighContrast -import com.juandgaines.todoapp.ui.theme.backgroundDarkMediumContrast -import com.juandgaines.todoapp.ui.theme.backgroundLight -import com.juandgaines.todoapp.ui.theme.backgroundLightHighContrast -import com.juandgaines.todoapp.ui.theme.backgroundLightMediumContrast -import com.juandgaines.todoapp.ui.theme.errorContainerDark -import com.juandgaines.todoapp.ui.theme.errorContainerDarkHighContrast -import com.juandgaines.todoapp.ui.theme.errorContainerDarkMediumContrast -import com.juandgaines.todoapp.ui.theme.errorContainerLight -import com.juandgaines.todoapp.ui.theme.errorContainerLightHighContrast -import com.juandgaines.todoapp.ui.theme.errorContainerLightMediumContrast -import com.juandgaines.todoapp.ui.theme.errorDark -import com.juandgaines.todoapp.ui.theme.errorDarkHighContrast -import com.juandgaines.todoapp.ui.theme.errorDarkMediumContrast -import com.juandgaines.todoapp.ui.theme.errorLight -import com.juandgaines.todoapp.ui.theme.errorLightHighContrast -import com.juandgaines.todoapp.ui.theme.errorLightMediumContrast -import com.juandgaines.todoapp.ui.theme.inverseOnSurfaceDark -import com.juandgaines.todoapp.ui.theme.inverseOnSurfaceDarkHighContrast -import com.juandgaines.todoapp.ui.theme.inverseOnSurfaceDarkMediumContrast -import com.juandgaines.todoapp.ui.theme.inverseOnSurfaceLight -import com.juandgaines.todoapp.ui.theme.inverseOnSurfaceLightHighContrast -import com.juandgaines.todoapp.ui.theme.inverseOnSurfaceLightMediumContrast -import com.juandgaines.todoapp.ui.theme.inversePrimaryDark -import com.juandgaines.todoapp.ui.theme.inversePrimaryDarkHighContrast -import com.juandgaines.todoapp.ui.theme.inversePrimaryDarkMediumContrast -import com.juandgaines.todoapp.ui.theme.inversePrimaryLight -import com.juandgaines.todoapp.ui.theme.inversePrimaryLightHighContrast -import com.juandgaines.todoapp.ui.theme.inversePrimaryLightMediumContrast -import com.juandgaines.todoapp.ui.theme.inverseSurfaceDark -import com.juandgaines.todoapp.ui.theme.inverseSurfaceDarkHighContrast -import com.juandgaines.todoapp.ui.theme.inverseSurfaceDarkMediumContrast -import com.juandgaines.todoapp.ui.theme.inverseSurfaceLight -import com.juandgaines.todoapp.ui.theme.inverseSurfaceLightHighContrast -import com.juandgaines.todoapp.ui.theme.inverseSurfaceLightMediumContrast -import com.juandgaines.todoapp.ui.theme.onBackgroundDark -import com.juandgaines.todoapp.ui.theme.onBackgroundDarkHighContrast -import com.juandgaines.todoapp.ui.theme.onBackgroundDarkMediumContrast -import com.juandgaines.todoapp.ui.theme.onBackgroundLight -import com.juandgaines.todoapp.ui.theme.onBackgroundLightHighContrast -import com.juandgaines.todoapp.ui.theme.onBackgroundLightMediumContrast -import com.juandgaines.todoapp.ui.theme.onErrorContainerDark -import com.juandgaines.todoapp.ui.theme.onErrorContainerDarkHighContrast -import com.juandgaines.todoapp.ui.theme.onErrorContainerDarkMediumContrast -import com.juandgaines.todoapp.ui.theme.onErrorContainerLight -import com.juandgaines.todoapp.ui.theme.onErrorContainerLightHighContrast -import com.juandgaines.todoapp.ui.theme.onErrorContainerLightMediumContrast -import com.juandgaines.todoapp.ui.theme.onErrorDark -import com.juandgaines.todoapp.ui.theme.onErrorDarkHighContrast -import com.juandgaines.todoapp.ui.theme.onErrorDarkMediumContrast -import com.juandgaines.todoapp.ui.theme.onErrorLight -import com.juandgaines.todoapp.ui.theme.onErrorLightHighContrast -import com.juandgaines.todoapp.ui.theme.onErrorLightMediumContrast -import com.juandgaines.todoapp.ui.theme.onPrimaryContainerDark -import com.juandgaines.todoapp.ui.theme.onPrimaryContainerDarkHighContrast -import com.juandgaines.todoapp.ui.theme.onPrimaryContainerDarkMediumContrast -import com.juandgaines.todoapp.ui.theme.onPrimaryContainerLight -import com.juandgaines.todoapp.ui.theme.onPrimaryContainerLightHighContrast -import com.juandgaines.todoapp.ui.theme.onPrimaryContainerLightMediumContrast -import com.juandgaines.todoapp.ui.theme.onPrimaryDark -import com.juandgaines.todoapp.ui.theme.onPrimaryDarkHighContrast -import com.juandgaines.todoapp.ui.theme.onPrimaryDarkMediumContrast -import com.juandgaines.todoapp.ui.theme.onPrimaryLight -import com.juandgaines.todoapp.ui.theme.onPrimaryLightHighContrast -import com.juandgaines.todoapp.ui.theme.onPrimaryLightMediumContrast -import com.juandgaines.todoapp.ui.theme.onSecondaryContainerDark -import com.juandgaines.todoapp.ui.theme.onSecondaryContainerDarkHighContrast -import com.juandgaines.todoapp.ui.theme.onSecondaryContainerDarkMediumContrast -import com.juandgaines.todoapp.ui.theme.onSecondaryContainerLight -import com.juandgaines.todoapp.ui.theme.onSecondaryContainerLightHighContrast -import com.juandgaines.todoapp.ui.theme.onSecondaryContainerLightMediumContrast -import com.juandgaines.todoapp.ui.theme.onSecondaryDark -import com.juandgaines.todoapp.ui.theme.onSecondaryDarkHighContrast -import com.juandgaines.todoapp.ui.theme.onSecondaryDarkMediumContrast -import com.juandgaines.todoapp.ui.theme.onSecondaryLight -import com.juandgaines.todoapp.ui.theme.onSecondaryLightHighContrast -import com.juandgaines.todoapp.ui.theme.onSecondaryLightMediumContrast -import com.juandgaines.todoapp.ui.theme.onSurfaceDark -import com.juandgaines.todoapp.ui.theme.onSurfaceDarkHighContrast -import com.juandgaines.todoapp.ui.theme.onSurfaceDarkMediumContrast -import com.juandgaines.todoapp.ui.theme.onSurfaceLight -import com.juandgaines.todoapp.ui.theme.onSurfaceLightHighContrast -import com.juandgaines.todoapp.ui.theme.onSurfaceLightMediumContrast -import com.juandgaines.todoapp.ui.theme.onSurfaceVariantDark -import com.juandgaines.todoapp.ui.theme.onSurfaceVariantDarkHighContrast -import com.juandgaines.todoapp.ui.theme.onSurfaceVariantDarkMediumContrast -import com.juandgaines.todoapp.ui.theme.onSurfaceVariantLight -import com.juandgaines.todoapp.ui.theme.onSurfaceVariantLightHighContrast -import com.juandgaines.todoapp.ui.theme.onSurfaceVariantLightMediumContrast -import com.juandgaines.todoapp.ui.theme.onTertiaryContainerDark -import com.juandgaines.todoapp.ui.theme.onTertiaryContainerDarkHighContrast -import com.juandgaines.todoapp.ui.theme.onTertiaryContainerDarkMediumContrast -import com.juandgaines.todoapp.ui.theme.onTertiaryContainerLight -import com.juandgaines.todoapp.ui.theme.onTertiaryContainerLightHighContrast -import com.juandgaines.todoapp.ui.theme.onTertiaryContainerLightMediumContrast -import com.juandgaines.todoapp.ui.theme.onTertiaryDark -import com.juandgaines.todoapp.ui.theme.onTertiaryDarkHighContrast -import com.juandgaines.todoapp.ui.theme.onTertiaryDarkMediumContrast -import com.juandgaines.todoapp.ui.theme.onTertiaryLight -import com.juandgaines.todoapp.ui.theme.onTertiaryLightHighContrast -import com.juandgaines.todoapp.ui.theme.onTertiaryLightMediumContrast -import com.juandgaines.todoapp.ui.theme.outlineDark -import com.juandgaines.todoapp.ui.theme.outlineDarkHighContrast -import com.juandgaines.todoapp.ui.theme.outlineDarkMediumContrast -import com.juandgaines.todoapp.ui.theme.outlineLight -import com.juandgaines.todoapp.ui.theme.outlineLightHighContrast -import com.juandgaines.todoapp.ui.theme.outlineLightMediumContrast -import com.juandgaines.todoapp.ui.theme.outlineVariantDark -import com.juandgaines.todoapp.ui.theme.outlineVariantDarkHighContrast -import com.juandgaines.todoapp.ui.theme.outlineVariantDarkMediumContrast -import com.juandgaines.todoapp.ui.theme.outlineVariantLight -import com.juandgaines.todoapp.ui.theme.outlineVariantLightHighContrast -import com.juandgaines.todoapp.ui.theme.outlineVariantLightMediumContrast -import com.juandgaines.todoapp.ui.theme.primaryContainerDark -import com.juandgaines.todoapp.ui.theme.primaryContainerDarkHighContrast -import com.juandgaines.todoapp.ui.theme.primaryContainerDarkMediumContrast -import com.juandgaines.todoapp.ui.theme.primaryContainerLight -import com.juandgaines.todoapp.ui.theme.primaryContainerLightHighContrast -import com.juandgaines.todoapp.ui.theme.primaryContainerLightMediumContrast -import com.juandgaines.todoapp.ui.theme.primaryDark -import com.juandgaines.todoapp.ui.theme.primaryDarkHighContrast -import com.juandgaines.todoapp.ui.theme.primaryDarkMediumContrast -import com.juandgaines.todoapp.ui.theme.primaryLight -import com.juandgaines.todoapp.ui.theme.primaryLightHighContrast -import com.juandgaines.todoapp.ui.theme.primaryLightMediumContrast -import com.juandgaines.todoapp.ui.theme.scrimDark -import com.juandgaines.todoapp.ui.theme.scrimDarkHighContrast -import com.juandgaines.todoapp.ui.theme.scrimDarkMediumContrast -import com.juandgaines.todoapp.ui.theme.scrimLight -import com.juandgaines.todoapp.ui.theme.scrimLightHighContrast -import com.juandgaines.todoapp.ui.theme.scrimLightMediumContrast -import com.juandgaines.todoapp.ui.theme.secondaryContainerDark -import com.juandgaines.todoapp.ui.theme.secondaryContainerDarkHighContrast -import com.juandgaines.todoapp.ui.theme.secondaryContainerDarkMediumContrast -import com.juandgaines.todoapp.ui.theme.secondaryContainerLight -import com.juandgaines.todoapp.ui.theme.secondaryContainerLightHighContrast -import com.juandgaines.todoapp.ui.theme.secondaryContainerLightMediumContrast -import com.juandgaines.todoapp.ui.theme.secondaryDark -import com.juandgaines.todoapp.ui.theme.secondaryDarkHighContrast -import com.juandgaines.todoapp.ui.theme.secondaryDarkMediumContrast -import com.juandgaines.todoapp.ui.theme.secondaryLight -import com.juandgaines.todoapp.ui.theme.secondaryLightHighContrast -import com.juandgaines.todoapp.ui.theme.secondaryLightMediumContrast -import com.juandgaines.todoapp.ui.theme.surfaceBrightDark -import com.juandgaines.todoapp.ui.theme.surfaceBrightDarkHighContrast -import com.juandgaines.todoapp.ui.theme.surfaceBrightDarkMediumContrast -import com.juandgaines.todoapp.ui.theme.surfaceBrightLight -import com.juandgaines.todoapp.ui.theme.surfaceBrightLightHighContrast -import com.juandgaines.todoapp.ui.theme.surfaceBrightLightMediumContrast -import com.juandgaines.todoapp.ui.theme.surfaceContainerDark -import com.juandgaines.todoapp.ui.theme.surfaceContainerDarkHighContrast -import com.juandgaines.todoapp.ui.theme.surfaceContainerDarkMediumContrast -import com.juandgaines.todoapp.ui.theme.surfaceContainerHighDark -import com.juandgaines.todoapp.ui.theme.surfaceContainerHighDarkHighContrast -import com.juandgaines.todoapp.ui.theme.surfaceContainerHighDarkMediumContrast -import com.juandgaines.todoapp.ui.theme.surfaceContainerHighLight -import com.juandgaines.todoapp.ui.theme.surfaceContainerHighLightHighContrast -import com.juandgaines.todoapp.ui.theme.surfaceContainerHighLightMediumContrast -import com.juandgaines.todoapp.ui.theme.surfaceContainerHighestDark -import com.juandgaines.todoapp.ui.theme.surfaceContainerHighestDarkHighContrast -import com.juandgaines.todoapp.ui.theme.surfaceContainerHighestDarkMediumContrast -import com.juandgaines.todoapp.ui.theme.surfaceContainerHighestLight -import com.juandgaines.todoapp.ui.theme.surfaceContainerHighestLightHighContrast -import com.juandgaines.todoapp.ui.theme.surfaceContainerHighestLightMediumContrast -import com.juandgaines.todoapp.ui.theme.surfaceContainerLight -import com.juandgaines.todoapp.ui.theme.surfaceContainerLightHighContrast -import com.juandgaines.todoapp.ui.theme.surfaceContainerLightMediumContrast -import com.juandgaines.todoapp.ui.theme.surfaceContainerLowDark -import com.juandgaines.todoapp.ui.theme.surfaceContainerLowDarkHighContrast -import com.juandgaines.todoapp.ui.theme.surfaceContainerLowDarkMediumContrast -import com.juandgaines.todoapp.ui.theme.surfaceContainerLowLight -import com.juandgaines.todoapp.ui.theme.surfaceContainerLowLightHighContrast -import com.juandgaines.todoapp.ui.theme.surfaceContainerLowLightMediumContrast -import com.juandgaines.todoapp.ui.theme.surfaceContainerLowestDark -import com.juandgaines.todoapp.ui.theme.surfaceContainerLowestDarkHighContrast -import com.juandgaines.todoapp.ui.theme.surfaceContainerLowestDarkMediumContrast -import com.juandgaines.todoapp.ui.theme.surfaceContainerLowestLight -import com.juandgaines.todoapp.ui.theme.surfaceContainerLowestLightHighContrast -import com.juandgaines.todoapp.ui.theme.surfaceContainerLowestLightMediumContrast -import com.juandgaines.todoapp.ui.theme.surfaceDark -import com.juandgaines.todoapp.ui.theme.surfaceDarkHighContrast -import com.juandgaines.todoapp.ui.theme.surfaceDarkMediumContrast -import com.juandgaines.todoapp.ui.theme.surfaceDimDark -import com.juandgaines.todoapp.ui.theme.surfaceDimDarkHighContrast -import com.juandgaines.todoapp.ui.theme.surfaceDimDarkMediumContrast -import com.juandgaines.todoapp.ui.theme.surfaceDimLight -import com.juandgaines.todoapp.ui.theme.surfaceDimLightHighContrast -import com.juandgaines.todoapp.ui.theme.surfaceDimLightMediumContrast -import com.juandgaines.todoapp.ui.theme.surfaceLight -import com.juandgaines.todoapp.ui.theme.surfaceLightHighContrast -import com.juandgaines.todoapp.ui.theme.surfaceLightMediumContrast -import com.juandgaines.todoapp.ui.theme.surfaceVariantDark -import com.juandgaines.todoapp.ui.theme.surfaceVariantDarkHighContrast -import com.juandgaines.todoapp.ui.theme.surfaceVariantDarkMediumContrast -import com.juandgaines.todoapp.ui.theme.surfaceVariantLight -import com.juandgaines.todoapp.ui.theme.surfaceVariantLightHighContrast -import com.juandgaines.todoapp.ui.theme.surfaceVariantLightMediumContrast -import com.juandgaines.todoapp.ui.theme.tertiaryContainerDark -import com.juandgaines.todoapp.ui.theme.tertiaryContainerDarkHighContrast -import com.juandgaines.todoapp.ui.theme.tertiaryContainerDarkMediumContrast -import com.juandgaines.todoapp.ui.theme.tertiaryContainerLight -import com.juandgaines.todoapp.ui.theme.tertiaryContainerLightHighContrast -import com.juandgaines.todoapp.ui.theme.tertiaryContainerLightMediumContrast -import com.juandgaines.todoapp.ui.theme.tertiaryDark -import com.juandgaines.todoapp.ui.theme.tertiaryDarkHighContrast -import com.juandgaines.todoapp.ui.theme.tertiaryDarkMediumContrast -import com.juandgaines.todoapp.ui.theme.tertiaryLight -import com.juandgaines.todoapp.ui.theme.tertiaryLightHighContrast -import com.juandgaines.todoapp.ui.theme.tertiaryLightMediumContrast private val lightScheme = lightColorScheme( primary = primaryLight, From 758d9a5faddf9dce7acae137749119ccc41873d6 Mon Sep 17 00:00:00 2001 From: Juan Gaines Date: Tue, 15 Oct 2024 21:34:03 -0500 Subject: [PATCH 3/3] feat: Material Theme --- app/build.gradle.kts | 1 + .../com/juandgaines/todoapp/ui/theme/Color.kt | 1 + .../com/juandgaines/todoapp/ui/theme/Theme.kt | 191 +----------------- .../com/juandgaines/todoapp/ui/theme/Type.kt | 1 + gradle/libs.versions.toml | 1 + 5 files changed, 14 insertions(+), 181 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index ebf49d2..7cb3f32 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -69,6 +69,7 @@ dependencies { implementation(libs.androidx.ui.graphics) implementation(libs.androidx.ui.tooling.preview) implementation(libs.androidx.material3) + //TODO: 3.5 Agregar libreria fuentes google implementation(libs.androidx.ui.text.google.fonts) debugImplementation(libs.androidx.ui.tooling) debugImplementation(libs.androidx.ui.test.manifest) diff --git a/app/src/main/java/com/juandgaines/todoapp/ui/theme/Color.kt b/app/src/main/java/com/juandgaines/todoapp/ui/theme/Color.kt index 22398de..c8849b4 100644 --- a/app/src/main/java/com/juandgaines/todoapp/ui/theme/Color.kt +++ b/app/src/main/java/com/juandgaines/todoapp/ui/theme/Color.kt @@ -1,5 +1,6 @@ package com.juandgaines.todoapp.ui.theme import androidx.compose.ui.graphics.Color +//TODO: 3.1 Mirgrar archivos de tema y arreglar imports. val primaryLight = Color(0xFF6A5F11) val onPrimaryLight = Color(0xFFFFFFFF) diff --git a/app/src/main/java/com/juandgaines/todoapp/ui/theme/Theme.kt b/app/src/main/java/com/juandgaines/todoapp/ui/theme/Theme.kt index 5b06eea..a1b683a 100644 --- a/app/src/main/java/com/juandgaines/todoapp/ui/theme/Theme.kt +++ b/app/src/main/java/com/juandgaines/todoapp/ui/theme/Theme.kt @@ -1,16 +1,11 @@ package com.juandgaines.todoapp.ui.theme -import android.os.Build import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.lightColorScheme import androidx.compose.material3.darkColorScheme -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 +//TODO: 3.1 Mirgrar archivos de tema y arreglar imports private val lightScheme = lightColorScheme( primary = primaryLight, onPrimary = onPrimaryLight, @@ -86,187 +81,21 @@ private val darkScheme = darkColorScheme( surfaceContainerHigh = surfaceContainerHighDark, surfaceContainerHighest = surfaceContainerHighestDark, ) +// TODO: 3.3 Remover temas sin usar -private val mediumContrastLightColorScheme = lightColorScheme( - primary = primaryLightMediumContrast, - onPrimary = onPrimaryLightMediumContrast, - primaryContainer = primaryContainerLightMediumContrast, - onPrimaryContainer = onPrimaryContainerLightMediumContrast, - secondary = secondaryLightMediumContrast, - onSecondary = onSecondaryLightMediumContrast, - secondaryContainer = secondaryContainerLightMediumContrast, - onSecondaryContainer = onSecondaryContainerLightMediumContrast, - tertiary = tertiaryLightMediumContrast, - onTertiary = onTertiaryLightMediumContrast, - tertiaryContainer = tertiaryContainerLightMediumContrast, - onTertiaryContainer = onTertiaryContainerLightMediumContrast, - error = errorLightMediumContrast, - onError = onErrorLightMediumContrast, - errorContainer = errorContainerLightMediumContrast, - onErrorContainer = onErrorContainerLightMediumContrast, - background = backgroundLightMediumContrast, - onBackground = onBackgroundLightMediumContrast, - surface = surfaceLightMediumContrast, - onSurface = onSurfaceLightMediumContrast, - surfaceVariant = surfaceVariantLightMediumContrast, - onSurfaceVariant = onSurfaceVariantLightMediumContrast, - outline = outlineLightMediumContrast, - outlineVariant = outlineVariantLightMediumContrast, - scrim = scrimLightMediumContrast, - inverseSurface = inverseSurfaceLightMediumContrast, - inverseOnSurface = inverseOnSurfaceLightMediumContrast, - inversePrimary = inversePrimaryLightMediumContrast, - surfaceDim = surfaceDimLightMediumContrast, - surfaceBright = surfaceBrightLightMediumContrast, - surfaceContainerLowest = surfaceContainerLowestLightMediumContrast, - surfaceContainerLow = surfaceContainerLowLightMediumContrast, - surfaceContainer = surfaceContainerLightMediumContrast, - surfaceContainerHigh = surfaceContainerHighLightMediumContrast, - surfaceContainerHighest = surfaceContainerHighestLightMediumContrast, -) - -private val highContrastLightColorScheme = lightColorScheme( - primary = primaryLightHighContrast, - onPrimary = onPrimaryLightHighContrast, - primaryContainer = primaryContainerLightHighContrast, - onPrimaryContainer = onPrimaryContainerLightHighContrast, - secondary = secondaryLightHighContrast, - onSecondary = onSecondaryLightHighContrast, - secondaryContainer = secondaryContainerLightHighContrast, - onSecondaryContainer = onSecondaryContainerLightHighContrast, - tertiary = tertiaryLightHighContrast, - onTertiary = onTertiaryLightHighContrast, - tertiaryContainer = tertiaryContainerLightHighContrast, - onTertiaryContainer = onTertiaryContainerLightHighContrast, - error = errorLightHighContrast, - onError = onErrorLightHighContrast, - errorContainer = errorContainerLightHighContrast, - onErrorContainer = onErrorContainerLightHighContrast, - background = backgroundLightHighContrast, - onBackground = onBackgroundLightHighContrast, - surface = surfaceLightHighContrast, - onSurface = onSurfaceLightHighContrast, - surfaceVariant = surfaceVariantLightHighContrast, - onSurfaceVariant = onSurfaceVariantLightHighContrast, - outline = outlineLightHighContrast, - outlineVariant = outlineVariantLightHighContrast, - scrim = scrimLightHighContrast, - inverseSurface = inverseSurfaceLightHighContrast, - inverseOnSurface = inverseOnSurfaceLightHighContrast, - inversePrimary = inversePrimaryLightHighContrast, - surfaceDim = surfaceDimLightHighContrast, - surfaceBright = surfaceBrightLightHighContrast, - surfaceContainerLowest = surfaceContainerLowestLightHighContrast, - surfaceContainerLow = surfaceContainerLowLightHighContrast, - surfaceContainer = surfaceContainerLightHighContrast, - surfaceContainerHigh = surfaceContainerHighLightHighContrast, - surfaceContainerHighest = surfaceContainerHighestLightHighContrast, -) - -private val mediumContrastDarkColorScheme = darkColorScheme( - primary = primaryDarkMediumContrast, - onPrimary = onPrimaryDarkMediumContrast, - primaryContainer = primaryContainerDarkMediumContrast, - onPrimaryContainer = onPrimaryContainerDarkMediumContrast, - secondary = secondaryDarkMediumContrast, - onSecondary = onSecondaryDarkMediumContrast, - secondaryContainer = secondaryContainerDarkMediumContrast, - onSecondaryContainer = onSecondaryContainerDarkMediumContrast, - tertiary = tertiaryDarkMediumContrast, - onTertiary = onTertiaryDarkMediumContrast, - tertiaryContainer = tertiaryContainerDarkMediumContrast, - onTertiaryContainer = onTertiaryContainerDarkMediumContrast, - error = errorDarkMediumContrast, - onError = onErrorDarkMediumContrast, - errorContainer = errorContainerDarkMediumContrast, - onErrorContainer = onErrorContainerDarkMediumContrast, - background = backgroundDarkMediumContrast, - onBackground = onBackgroundDarkMediumContrast, - surface = surfaceDarkMediumContrast, - onSurface = onSurfaceDarkMediumContrast, - surfaceVariant = surfaceVariantDarkMediumContrast, - onSurfaceVariant = onSurfaceVariantDarkMediumContrast, - outline = outlineDarkMediumContrast, - outlineVariant = outlineVariantDarkMediumContrast, - scrim = scrimDarkMediumContrast, - inverseSurface = inverseSurfaceDarkMediumContrast, - inverseOnSurface = inverseOnSurfaceDarkMediumContrast, - inversePrimary = inversePrimaryDarkMediumContrast, - surfaceDim = surfaceDimDarkMediumContrast, - surfaceBright = surfaceBrightDarkMediumContrast, - surfaceContainerLowest = surfaceContainerLowestDarkMediumContrast, - surfaceContainerLow = surfaceContainerLowDarkMediumContrast, - surfaceContainer = surfaceContainerDarkMediumContrast, - surfaceContainerHigh = surfaceContainerHighDarkMediumContrast, - surfaceContainerHighest = surfaceContainerHighestDarkMediumContrast, -) - -private val highContrastDarkColorScheme = darkColorScheme( - primary = primaryDarkHighContrast, - onPrimary = onPrimaryDarkHighContrast, - primaryContainer = primaryContainerDarkHighContrast, - onPrimaryContainer = onPrimaryContainerDarkHighContrast, - secondary = secondaryDarkHighContrast, - onSecondary = onSecondaryDarkHighContrast, - secondaryContainer = secondaryContainerDarkHighContrast, - onSecondaryContainer = onSecondaryContainerDarkHighContrast, - tertiary = tertiaryDarkHighContrast, - onTertiary = onTertiaryDarkHighContrast, - tertiaryContainer = tertiaryContainerDarkHighContrast, - onTertiaryContainer = onTertiaryContainerDarkHighContrast, - error = errorDarkHighContrast, - onError = onErrorDarkHighContrast, - errorContainer = errorContainerDarkHighContrast, - onErrorContainer = onErrorContainerDarkHighContrast, - background = backgroundDarkHighContrast, - onBackground = onBackgroundDarkHighContrast, - surface = surfaceDarkHighContrast, - onSurface = onSurfaceDarkHighContrast, - surfaceVariant = surfaceVariantDarkHighContrast, - onSurfaceVariant = onSurfaceVariantDarkHighContrast, - outline = outlineDarkHighContrast, - outlineVariant = outlineVariantDarkHighContrast, - scrim = scrimDarkHighContrast, - inverseSurface = inverseSurfaceDarkHighContrast, - inverseOnSurface = inverseOnSurfaceDarkHighContrast, - inversePrimary = inversePrimaryDarkHighContrast, - surfaceDim = surfaceDimDarkHighContrast, - surfaceBright = surfaceBrightDarkHighContrast, - surfaceContainerLowest = surfaceContainerLowestDarkHighContrast, - surfaceContainerLow = surfaceContainerLowDarkHighContrast, - surfaceContainer = surfaceContainerDarkHighContrast, - surfaceContainerHigh = surfaceContainerHighDarkHighContrast, - surfaceContainerHighest = surfaceContainerHighestDarkHighContrast, -) - -@Immutable -data class ColorFamily( - val color: Color, - val onColor: Color, - val colorContainer: Color, - val onColorContainer: Color -) - -val unspecified_scheme = ColorFamily( - Color.Unspecified, Color.Unspecified, Color.Unspecified, Color.Unspecified -) +//TODO: 3.2 Cambiar nombre de tema @Composable fun TodoAppTheme( darkTheme: Boolean = isSystemInDarkTheme(), - // Dynamic color is available on Android 12+ - dynamicColor: Boolean = true, + // TODO: 3.4 Remover dynamicColor 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) - } - - darkTheme -> darkScheme - else -> lightScheme - } + // TODO: 3.4 Remover dynamicColor + val colorScheme = if (darkTheme) + darkScheme + else + lightScheme MaterialTheme( colorScheme = colorScheme, diff --git a/app/src/main/java/com/juandgaines/todoapp/ui/theme/Type.kt b/app/src/main/java/com/juandgaines/todoapp/ui/theme/Type.kt index 0e261de..00b4706 100644 --- a/app/src/main/java/com/juandgaines/todoapp/ui/theme/Type.kt +++ b/app/src/main/java/com/juandgaines/todoapp/ui/theme/Type.kt @@ -6,6 +6,7 @@ import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.googlefonts.GoogleFont import androidx.compose.ui.text.googlefonts.Font import com.juandgaines.todoapp.R +//TODO: 3.1 Mirgrar archivos de tema y arreglar imports val provider = GoogleFont.Provider( providerAuthority = "com.google.android.gms.fonts", diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 2bc2dcd..9f33174 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -34,6 +34,7 @@ androidx-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-toolin androidx-material3 = { group = "androidx.compose.material3", name = "material3" } androidx-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" } androidx-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" } +#TODO: 3.5 Agregar libreria fuentes google androidx-ui-text-google-fonts = { group = "androidx.compose.ui", name = "ui-text-google-fonts", version.ref = "uiTextGoogleFonts" } #Navigation androidx-navigation-compose = { module = "androidx.navigation:navigation-compose", version.ref = "navigationCompose" }