From 0834c979a5c6a41106282ffc8a8be72255f780fa Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Mon, 1 Nov 2021 01:47:34 +0530 Subject: app: add Material3 themes --- app/build.gradle.kts | 1 + .../main/java/dev/msfjarvis/aps/ui/theme/Color.kt | 58 +++++++++ .../main/java/dev/msfjarvis/aps/ui/theme/Theme.kt | 76 ++++++++++++ .../main/java/dev/msfjarvis/aps/ui/theme/Type.kt | 134 +++++++++++++++++++++ app/src/main/res/values-night/themes_material3.xml | 36 ++++++ app/src/main/res/values/colors_material3.xml | 61 ++++++++++ app/src/main/res/values/themes_material3.xml | 36 ++++++ 7 files changed, 402 insertions(+) create mode 100644 app/src/main/java/dev/msfjarvis/aps/ui/theme/Color.kt create mode 100644 app/src/main/java/dev/msfjarvis/aps/ui/theme/Theme.kt create mode 100644 app/src/main/java/dev/msfjarvis/aps/ui/theme/Type.kt create mode 100644 app/src/main/res/values-night/themes_material3.xml create mode 100644 app/src/main/res/values/colors_material3.xml create mode 100644 app/src/main/res/values/themes_material3.xml (limited to 'app') diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 54042fb7..1c75d139 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -92,6 +92,7 @@ dependencies { implementation(libs.compose.foundation.core) implementation(libs.compose.foundation.layout) implementation(libs.compose.material) + implementation(libs.compose.material3) implementation(libs.compose.ui.core) implementation(libs.compose.ui.viewbinding) compileOnly(libs.compose.ui.tooling) diff --git a/app/src/main/java/dev/msfjarvis/aps/ui/theme/Color.kt b/app/src/main/java/dev/msfjarvis/aps/ui/theme/Color.kt new file mode 100644 index 00000000..8566e734 --- /dev/null +++ b/app/src/main/java/dev/msfjarvis/aps/ui/theme/Color.kt @@ -0,0 +1,58 @@ +package dev.msfjarvis.aps.ui.theme + +import androidx.compose.ui.graphics.Color + +val md_theme_light_primary = Color(0xFF006591) +val md_theme_light_onPrimary = Color(0xFFffffff) +val md_theme_light_primaryContainer = Color(0xFFc7e6ff) +val md_theme_light_onPrimaryContainer = Color(0xFF001e30) +val md_theme_light_secondary = Color(0xFF4f606e) +val md_theme_light_onSecondary = Color(0xFFffffff) +val md_theme_light_secondaryContainer = Color(0xFFd3e5f5) +val md_theme_light_onSecondaryContainer = Color(0xFF0b1d29) +val md_theme_light_tertiary = Color(0xFF006494) +val md_theme_light_onTertiary = Color(0xFFffffff) +val md_theme_light_tertiaryContainer = Color(0xFFc8e6ff) +val md_theme_light_onTertiaryContainer = Color(0xFF001e31) +val md_theme_light_error = Color(0xFFba1b1b) +val md_theme_light_errorContainer = Color(0xFFffdad4) +val md_theme_light_onError = Color(0xFFffffff) +val md_theme_light_onErrorContainer = Color(0xFF410001) +val md_theme_light_background = Color(0xFFfcfcff) +val md_theme_light_onBackground = Color(0xFF1a1c1e) +val md_theme_light_surface = Color(0xFFfcfcff) +val md_theme_light_onSurface = Color(0xFF1a1c1e) +val md_theme_light_surfaceVariant = Color(0xFFdde3ea) +val md_theme_light_onSurfaceVariant = Color(0xFF41474d) +val md_theme_light_outline = Color(0xFF72787e) +val md_theme_light_inverseOnSurface = Color(0xFFf0f0f3) +val md_theme_light_inverseSurface = Color(0xFF2e3133) + +val md_theme_dark_primary = Color(0xFF85ceff) +val md_theme_dark_onPrimary = Color(0xFF00344e) +val md_theme_dark_primaryContainer = Color(0xFF004c6f) +val md_theme_dark_onPrimaryContainer = Color(0xFFc7e6ff) +val md_theme_dark_secondary = Color(0xFFb7c9d9) +val md_theme_dark_onSecondary = Color(0xFF21323e) +val md_theme_dark_secondaryContainer = Color(0xFF384956) +val md_theme_dark_onSecondaryContainer = Color(0xFFd3e5f5) +val md_theme_dark_tertiary = Color(0xFF8aceff) +val md_theme_dark_onTertiary = Color(0xFF003450) +val md_theme_dark_tertiaryContainer = Color(0xFF004b70) +val md_theme_dark_onTertiaryContainer = Color(0xFFc8e6ff) +val md_theme_dark_error = Color(0xFFffb4a9) +val md_theme_dark_errorContainer = Color(0xFF930006) +val md_theme_dark_onError = Color(0xFF680003) +val md_theme_dark_onErrorContainer = Color(0xFFffdad4) +val md_theme_dark_background = Color(0xFF1a1c1e) +val md_theme_dark_onBackground = Color(0xFFe1e2e5) +val md_theme_dark_surface = Color(0xFF1a1c1e) +val md_theme_dark_onSurface = Color(0xFFe1e2e5) +val md_theme_dark_surfaceVariant = Color(0xFF41474d) +val md_theme_dark_onSurfaceVariant = Color(0xFFc1c7ce) +val md_theme_dark_outline = Color(0xFF8b9197) +val md_theme_dark_inverseOnSurface = Color(0xFF1a1c1e) +val md_theme_dark_inverseSurface = Color(0xFFe1e2e5) + +val seed = Color(0xFF003e5b) +val error = Color(0xFFba1b1b) diff --git a/app/src/main/java/dev/msfjarvis/aps/ui/theme/Theme.kt b/app/src/main/java/dev/msfjarvis/aps/ui/theme/Theme.kt new file mode 100644 index 00000000..55fb600d --- /dev/null +++ b/app/src/main/java/dev/msfjarvis/aps/ui/theme/Theme.kt @@ -0,0 +1,76 @@ +package dev.msfjarvis.aps.ui.theme + +import androidx.compose.foundation.isSystemInDarkTheme +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.darkColorScheme +import androidx.compose.material3.lightColorScheme +import androidx.compose.runtime.Composable + +private val LightThemeColors = + lightColorScheme( + primary = md_theme_light_primary, + onPrimary = md_theme_light_onPrimary, + primaryContainer = md_theme_light_primaryContainer, + onPrimaryContainer = md_theme_light_onPrimaryContainer, + secondary = md_theme_light_secondary, + onSecondary = md_theme_light_onSecondary, + secondaryContainer = md_theme_light_secondaryContainer, + onSecondaryContainer = md_theme_light_onSecondaryContainer, + tertiary = md_theme_light_tertiary, + onTertiary = md_theme_light_onTertiary, + tertiaryContainer = md_theme_light_tertiaryContainer, + onTertiaryContainer = md_theme_light_onTertiaryContainer, + error = md_theme_light_error, + errorContainer = md_theme_light_errorContainer, + onError = md_theme_light_onError, + onErrorContainer = md_theme_light_onErrorContainer, + background = md_theme_light_background, + onBackground = md_theme_light_onBackground, + surface = md_theme_light_surface, + onSurface = md_theme_light_onSurface, + surfaceVariant = md_theme_light_surfaceVariant, + onSurfaceVariant = md_theme_light_onSurfaceVariant, + outline = md_theme_light_outline, + inverseOnSurface = md_theme_light_inverseOnSurface, + inverseSurface = md_theme_light_inverseSurface, + ) +private val DarkThemeColors = + darkColorScheme( + primary = md_theme_dark_primary, + onPrimary = md_theme_dark_onPrimary, + primaryContainer = md_theme_dark_primaryContainer, + onPrimaryContainer = md_theme_dark_onPrimaryContainer, + secondary = md_theme_dark_secondary, + onSecondary = md_theme_dark_onSecondary, + secondaryContainer = md_theme_dark_secondaryContainer, + onSecondaryContainer = md_theme_dark_onSecondaryContainer, + tertiary = md_theme_dark_tertiary, + onTertiary = md_theme_dark_onTertiary, + tertiaryContainer = md_theme_dark_tertiaryContainer, + onTertiaryContainer = md_theme_dark_onTertiaryContainer, + error = md_theme_dark_error, + errorContainer = md_theme_dark_errorContainer, + onError = md_theme_dark_onError, + onErrorContainer = md_theme_dark_onErrorContainer, + background = md_theme_dark_background, + onBackground = md_theme_dark_onBackground, + surface = md_theme_dark_surface, + onSurface = md_theme_dark_onSurface, + surfaceVariant = md_theme_dark_surfaceVariant, + onSurfaceVariant = md_theme_dark_onSurfaceVariant, + outline = md_theme_dark_outline, + inverseOnSurface = md_theme_dark_inverseOnSurface, + inverseSurface = md_theme_dark_inverseSurface, + ) + +@Composable +fun APSTheme(useDarkTheme: Boolean = isSystemInDarkTheme(), content: @Composable () -> Unit) { + val colors = + if (!useDarkTheme) { + LightThemeColors + } else { + DarkThemeColors + } + + MaterialTheme(colorScheme = colors, typography = AppTypography, content = content) +} diff --git a/app/src/main/java/dev/msfjarvis/aps/ui/theme/Type.kt b/app/src/main/java/dev/msfjarvis/aps/ui/theme/Type.kt new file mode 100644 index 00000000..a8472f00 --- /dev/null +++ b/app/src/main/java/dev/msfjarvis/aps/ui/theme/Type.kt @@ -0,0 +1,134 @@ +package dev.msfjarvis.aps.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 + +// Replace with your font locations +val Roboto = FontFamily.Default + +val AppTypography = + Typography( + displayLarge = + TextStyle( + fontFamily = Roboto, + fontWeight = FontWeight.W400, + fontSize = 57.sp, + lineHeight = 64.sp, + letterSpacing = (-0.25).sp, + ), + displayMedium = + TextStyle( + fontFamily = Roboto, + fontWeight = FontWeight.W400, + fontSize = 45.sp, + lineHeight = 52.sp, + letterSpacing = 0.sp, + ), + displaySmall = + TextStyle( + fontFamily = Roboto, + fontWeight = FontWeight.W400, + fontSize = 36.sp, + lineHeight = 44.sp, + letterSpacing = 0.sp, + ), + headlineLarge = + TextStyle( + fontFamily = Roboto, + fontWeight = FontWeight.W400, + fontSize = 32.sp, + lineHeight = 40.sp, + letterSpacing = 0.sp, + ), + headlineMedium = + TextStyle( + fontFamily = Roboto, + fontWeight = FontWeight.W400, + fontSize = 28.sp, + lineHeight = 36.sp, + letterSpacing = 0.sp, + ), + headlineSmall = + TextStyle( + fontFamily = Roboto, + fontWeight = FontWeight.W400, + fontSize = 24.sp, + lineHeight = 32.sp, + letterSpacing = 0.sp, + ), + titleLarge = + TextStyle( + fontFamily = Roboto, + fontWeight = FontWeight.W400, + fontSize = 22.sp, + lineHeight = 28.sp, + letterSpacing = 0.sp, + ), + titleMedium = + TextStyle( + fontFamily = Roboto, + fontWeight = FontWeight.Medium, + fontSize = 16.sp, + lineHeight = 24.sp, + letterSpacing = 0.1.sp, + ), + titleSmall = + TextStyle( + fontFamily = Roboto, + fontWeight = FontWeight.Medium, + fontSize = 14.sp, + lineHeight = 20.sp, + letterSpacing = 0.1.sp, + ), + labelLarge = + TextStyle( + fontFamily = Roboto, + fontWeight = FontWeight.Medium, + fontSize = 14.sp, + lineHeight = 20.sp, + letterSpacing = 0.1.sp, + ), + bodyLarge = + TextStyle( + fontFamily = Roboto, + fontWeight = FontWeight.W400, + fontSize = 16.sp, + lineHeight = 24.sp, + letterSpacing = 0.5.sp, + ), + bodyMedium = + TextStyle( + fontFamily = Roboto, + fontWeight = FontWeight.W400, + fontSize = 14.sp, + lineHeight = 20.sp, + letterSpacing = 0.25.sp, + ), + bodySmall = + TextStyle( + fontFamily = Roboto, + fontWeight = FontWeight.W400, + fontSize = 12.sp, + lineHeight = 16.sp, + letterSpacing = 0.4.sp, + ), + labelMedium = + TextStyle( + fontFamily = Roboto, + fontWeight = FontWeight.Medium, + fontSize = 12.sp, + lineHeight = 16.sp, + letterSpacing = 0.5.sp, + ), + labelSmall = + TextStyle( + fontFamily = Roboto, + fontWeight = FontWeight.Medium, + fontSize = 11.sp, + lineHeight = 16.sp, + letterSpacing = 0.5.sp, + ), + ) diff --git a/app/src/main/res/values-night/themes_material3.xml b/app/src/main/res/values-night/themes_material3.xml new file mode 100644 index 00000000..a06aefe8 --- /dev/null +++ b/app/src/main/res/values-night/themes_material3.xml @@ -0,0 +1,36 @@ + + + + + + diff --git a/app/src/main/res/values/colors_material3.xml b/app/src/main/res/values/colors_material3.xml new file mode 100644 index 00000000..d8082f89 --- /dev/null +++ b/app/src/main/res/values/colors_material3.xml @@ -0,0 +1,61 @@ + + + + #006591 + #FFFFFF + #C7E6FF + #001E30 + #4F606E + #FFFFFF + #D3E5F5 + #0B1D29 + #006494 + #FFFFFF + #C8E6FF + #001E31 + #BA1B1B + #FFDAD4 + #FFFFFF + #410001 + #FCFCFF + #1A1C1E + #FCFCFF + #1A1C1E + #DDE3EA + #41474D + #72787E + #F0F0F3 + #2E3133 + #85CEFF + #85CEFF + #00344E + #004C6F + #C7E6FF + #B7C9D9 + #21323E + #384956 + #D3E5F5 + #8ACEFF + #003450 + #004B70 + #C8E6FF + #FFB4A9 + #930006 + #680003 + #FFDAD4 + #1A1C1E + #E1E2E5 + #1A1C1E + #E1E2E5 + #41474D + #C1C7CE + #8B9197 + #1A1C1E + #E1E2E5 + #006591 + #003E5B + #BA1B1B + diff --git a/app/src/main/res/values/themes_material3.xml b/app/src/main/res/values/themes_material3.xml new file mode 100644 index 00000000..047fce33 --- /dev/null +++ b/app/src/main/res/values/themes_material3.xml @@ -0,0 +1,36 @@ + + + + + + -- cgit v1.2.3