Skip to content

Commit 66d663b

Browse files
committed
Set up Material3 theme
No dynamic color support and default to dark theme for now
1 parent bf3d0c9 commit 66d663b

File tree

3 files changed

+218
-0
lines changed

3 files changed

+218
-0
lines changed
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
package de.stephanlindauer.criticalmaps.ui.theme
2+
3+
import androidx.compose.ui.graphics.Color
4+
5+
val primaryLight = Color(0xFF111111)
6+
val onPrimaryLight = Color(0xFFFFFFFF)
7+
val primaryContainerLight = Color(0xFF262626)
8+
val onPrimaryContainerLight = Color(0xFF8E8D8C)
9+
val secondaryLight = Color(0xFF5C5B5C)
10+
val onSecondaryLight = Color(0xFFFFFFFF)
11+
val secondaryContainerLight = Color(0xFF757474)
12+
val onSecondaryContainerLight = Color(0xFFFEFBFB)
13+
val tertiaryLight = Color(0xFF715D00)
14+
val onTertiaryLight = Color(0xFFFFFFFF)
15+
val tertiaryContainerLight = Color(0xFFFFD733)
16+
val onTertiaryContainerLight = Color(0xFF725D00)
17+
val errorLight = Color(0xFF91000A)
18+
val onErrorLight = Color(0xFFFFFFFF)
19+
val errorContainerLight = Color(0xFFB71C1C)
20+
val onErrorContainerLight = Color(0xFFFFCAC4)
21+
val backgroundLight = Color(0xFFFDF8F8)
22+
val onBackgroundLight = Color(0xFF1C1B1B)
23+
val surfaceLight = Color(0xFFFDF8F8)
24+
val onSurfaceLight = Color(0xFF1C1B1B)
25+
val surfaceVariantLight = Color(0xFFE0E3E3)
26+
val onSurfaceVariantLight = Color(0xFF444748)
27+
val outlineLight = Color(0xFF747878)
28+
val outlineVariantLight = Color(0xFFC4C7C7)
29+
val scrimLight = Color(0xFF000000)
30+
val inverseSurfaceLight = Color(0xFF313030)
31+
val inverseOnSurfaceLight = Color(0xFFF4F0EF)
32+
val inversePrimaryLight = Color(0xFFC8C6C5)
33+
val surfaceDimLight = Color(0xFFDDD9D8)
34+
val surfaceBrightLight = Color(0xFFFDF8F8)
35+
val surfaceContainerLowestLight = Color(0xFFFFFFFF)
36+
val surfaceContainerLowLight = Color(0xFFF7F3F2)
37+
val surfaceContainerLight = Color(0xFFF1EDEC)
38+
val surfaceContainerHighLight = Color(0xFFEBE7E6)
39+
val surfaceContainerHighestLight = Color(0xFFE5E2E1)
40+
41+
val primaryDark = Color(0xFFC8C6C5)
42+
val onPrimaryDark = Color(0xFF303030)
43+
val primaryContainerDark = Color(0xFF262626)
44+
val onPrimaryContainerDark = Color(0xFF8E8D8C)
45+
val secondaryDark = Color(0xFFC8C6C6)
46+
val onSecondaryDark = Color(0xFF303030)
47+
val secondaryContainerDark = Color(0xFF757474)
48+
val onSecondaryContainerDark = Color(0xFFFEFBFB)
49+
val tertiaryDark = Color(0xFFFFF6E2)
50+
val onTertiaryDark = Color(0xFF3B2F00)
51+
val tertiaryContainerDark = Color(0xFFFFD733)
52+
val onTertiaryContainerDark = Color(0xFF725D00)
53+
val errorDark = Color(0xFFFFB4AB)
54+
val onErrorDark = Color(0xFF690005)
55+
val errorContainerDark = Color(0xFFB71C1C)
56+
val onErrorContainerDark = Color(0xFFFFCAC4)
57+
val backgroundDark = Color(0xFF141313)
58+
val onBackgroundDark = Color(0xFFE5E2E1)
59+
val surfaceDark = Color(0xFF141313)
60+
val onSurfaceDark = Color(0xFFE5E2E1)
61+
val surfaceVariantDark = Color(0xFF444748)
62+
val onSurfaceVariantDark = Color(0xFFC4C7C7)
63+
val outlineDark = Color(0xFF8E9192)
64+
val outlineVariantDark = Color(0xFF444748)
65+
val scrimDark = Color(0xFF000000)
66+
val inverseSurfaceDark = Color(0xFFE5E2E1)
67+
val inverseOnSurfaceDark = Color(0xFF313030)
68+
val inversePrimaryDark = Color(0xFF5F5E5E)
69+
val surfaceDimDark = Color(0xFF141313)
70+
val surfaceBrightDark = Color(0xFF3A3939)
71+
val surfaceContainerLowestDark = Color(0xFF0E0E0E)
72+
val surfaceContainerLowDark = Color(0xFF1C1B1B)
73+
val surfaceContainerDark = Color(0xFF201F1F)
74+
val surfaceContainerHighDark = Color(0xFF2B2A2A)
75+
val surfaceContainerHighestDark = Color(0xFF353434)
Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
package de.stephanlindauer.criticalmaps.ui.theme
2+
3+
import android.os.Build
4+
import androidx.compose.foundation.isSystemInDarkTheme
5+
import androidx.compose.material3.MaterialTheme
6+
import androidx.compose.material3.lightColorScheme
7+
import androidx.compose.material3.darkColorScheme
8+
import androidx.compose.material3.dynamicDarkColorScheme
9+
import androidx.compose.material3.dynamicLightColorScheme
10+
import androidx.compose.runtime.Composable
11+
import androidx.compose.runtime.Immutable
12+
import androidx.compose.ui.graphics.Color
13+
import androidx.compose.ui.platform.LocalContext
14+
15+
private val lightScheme = lightColorScheme(
16+
primary = primaryLight,
17+
onPrimary = onPrimaryLight,
18+
primaryContainer = primaryContainerLight,
19+
onPrimaryContainer = onPrimaryContainerLight,
20+
secondary = secondaryLight,
21+
onSecondary = onSecondaryLight,
22+
secondaryContainer = secondaryContainerLight,
23+
onSecondaryContainer = onSecondaryContainerLight,
24+
tertiary = tertiaryLight,
25+
onTertiary = onTertiaryLight,
26+
tertiaryContainer = tertiaryContainerLight,
27+
onTertiaryContainer = onTertiaryContainerLight,
28+
error = errorLight,
29+
onError = onErrorLight,
30+
errorContainer = errorContainerLight,
31+
onErrorContainer = onErrorContainerLight,
32+
background = backgroundLight,
33+
onBackground = onBackgroundLight,
34+
surface = surfaceLight,
35+
onSurface = onSurfaceLight,
36+
surfaceVariant = surfaceVariantLight,
37+
onSurfaceVariant = onSurfaceVariantLight,
38+
outline = outlineLight,
39+
outlineVariant = outlineVariantLight,
40+
scrim = scrimLight,
41+
inverseSurface = inverseSurfaceLight,
42+
inverseOnSurface = inverseOnSurfaceLight,
43+
inversePrimary = inversePrimaryLight,
44+
surfaceDim = surfaceDimLight,
45+
surfaceBright = surfaceBrightLight,
46+
surfaceContainerLowest = surfaceContainerLowestLight,
47+
surfaceContainerLow = surfaceContainerLowLight,
48+
surfaceContainer = surfaceContainerLight,
49+
surfaceContainerHigh = surfaceContainerHighLight,
50+
surfaceContainerHighest = surfaceContainerHighestLight,
51+
)
52+
53+
private val darkScheme = darkColorScheme(
54+
primary = primaryDark,
55+
onPrimary = onPrimaryDark,
56+
primaryContainer = primaryContainerDark,
57+
onPrimaryContainer = onPrimaryContainerDark,
58+
secondary = secondaryDark,
59+
onSecondary = onSecondaryDark,
60+
secondaryContainer = secondaryContainerDark,
61+
onSecondaryContainer = onSecondaryContainerDark,
62+
tertiary = tertiaryDark,
63+
onTertiary = onTertiaryDark,
64+
tertiaryContainer = tertiaryContainerDark,
65+
onTertiaryContainer = onTertiaryContainerDark,
66+
error = errorDark,
67+
onError = onErrorDark,
68+
errorContainer = errorContainerDark,
69+
onErrorContainer = onErrorContainerDark,
70+
background = backgroundDark,
71+
onBackground = onBackgroundDark,
72+
surface = surfaceDark,
73+
onSurface = onSurfaceDark,
74+
surfaceVariant = surfaceVariantDark,
75+
onSurfaceVariant = onSurfaceVariantDark,
76+
outline = outlineDark,
77+
outlineVariant = outlineVariantDark,
78+
scrim = scrimDark,
79+
inverseSurface = inverseSurfaceDark,
80+
inverseOnSurface = inverseOnSurfaceDark,
81+
inversePrimary = inversePrimaryDark,
82+
surfaceDim = surfaceDimDark,
83+
surfaceBright = surfaceBrightDark,
84+
surfaceContainerLowest = surfaceContainerLowestDark,
85+
surfaceContainerLow = surfaceContainerLowDark,
86+
surfaceContainer = surfaceContainerDark,
87+
surfaceContainerHigh = surfaceContainerHighDark,
88+
surfaceContainerHighest = surfaceContainerHighestDark,
89+
)
90+
91+
@Composable
92+
fun AppTheme(
93+
darkTheme: Boolean = isSystemInDarkTheme(),
94+
dynamicColor: Boolean = false,
95+
content: @Composable() () -> Unit
96+
) {
97+
98+
val colorScheme = darkScheme /*when {
99+
dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> {
100+
val context = LocalContext.current
101+
if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context)
102+
}
103+
104+
darkTheme -> darkScheme
105+
else -> lightScheme
106+
}
107+
*/
108+
109+
MaterialTheme(
110+
colorScheme = colorScheme,
111+
typography = AppTypography,
112+
content = content
113+
)
114+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package de.stephanlindauer.criticalmaps.ui.theme
2+
3+
import androidx.compose.material3.Typography
4+
import androidx.compose.ui.text.font.FontFamily
5+
6+
val bodyFontFamily = FontFamily.Default
7+
8+
val displayFontFamily = FontFamily.Serif
9+
10+
// Default Material 3 typography values
11+
val baseline = Typography()
12+
13+
val AppTypography = Typography(
14+
displayLarge = baseline.displayLarge.copy(fontFamily = displayFontFamily),
15+
displayMedium = baseline.displayMedium.copy(fontFamily = displayFontFamily),
16+
displaySmall = baseline.displaySmall.copy(fontFamily = displayFontFamily),
17+
headlineLarge = baseline.headlineLarge.copy(fontFamily = displayFontFamily),
18+
headlineMedium = baseline.headlineMedium.copy(fontFamily = displayFontFamily),
19+
headlineSmall = baseline.headlineSmall.copy(fontFamily = displayFontFamily),
20+
titleLarge = baseline.titleLarge.copy(fontFamily = displayFontFamily),
21+
titleMedium = baseline.titleMedium.copy(fontFamily = displayFontFamily),
22+
titleSmall = baseline.titleSmall.copy(fontFamily = displayFontFamily),
23+
bodyLarge = baseline.bodyLarge.copy(fontFamily = bodyFontFamily),
24+
bodyMedium = baseline.bodyMedium.copy(fontFamily = bodyFontFamily),
25+
bodySmall = baseline.bodySmall.copy(fontFamily = bodyFontFamily),
26+
labelLarge = baseline.labelLarge.copy(fontFamily = bodyFontFamily),
27+
labelMedium = baseline.labelMedium.copy(fontFamily = bodyFontFamily),
28+
labelSmall = baseline.labelSmall.copy(fontFamily = bodyFontFamily),
29+
)

0 commit comments

Comments
 (0)