From 72a2777676cb22401ec391fe7c78c6cba2f105b0 Mon Sep 17 00:00:00 2001 From: eshawnlil1-sudo Date: Sun, 9 Aug 2026 11:15:57 +0100 Subject: [PATCH 1/4] theme: make dark surfaces pure black and add examples for containerColor/tonalElevation --- .../designsystems/Material3Snippets.kt | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/Material3Snippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/Material3Snippets.kt index 5d5d72d37..960058bdf 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/Material3Snippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/Material3Snippets.kt @@ -22,6 +22,7 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.ColumnScope import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons @@ -102,6 +103,10 @@ private object ColorScheme { val md_theme_dark_primary = Color(0xFFACD370) val md_theme_dark_onPrimary = Color(0xFF213600) val md_theme_dark_primaryContainer = Color(0xFF324F00) + // Ensure absolutely dark surfaces/background: + val md_theme_dark_background = Color(0xFF000000) + val md_theme_dark_surface = Color(0xFF000000) + val md_theme_dark_surfaceVariant = Color(0xFF000000) // .. // .. // [END android_compose_material3_theme_colors] @@ -117,6 +122,9 @@ private object ColorScheme { primary = md_theme_dark_primary, onPrimary = md_theme_dark_onPrimary, primaryContainer = md_theme_dark_primaryContainer, + background = md_theme_dark_background, + surface = md_theme_dark_surface, + surfaceVariant = md_theme_dark_surfaceVariant, // .. ) @@ -187,6 +195,45 @@ private object ColorScheme { // [END android_compose_material3_use_color_theme_2] } + + /** + * Examples to avoid tonal elevation / overlays and make surfaces absolutely dark. + * Use these patterns where you want a pure black surface and no tonal tinting. + */ + @Composable + fun AbsoluteDarkExamples() { + // Surface with zero tonal elevation — keeps surface color as-is (no overlay) + Surface( + tonalElevation = 0.dp, + shadowElevation = 0.dp, + color = MaterialTheme.colorScheme.surface + ) { + // Card that explicitly uses the surface color and zero elevation + Card( + colors = CardDefaults.cardColors( + containerColor = MaterialTheme.colorScheme.surface, + contentColor = MaterialTheme.colorScheme.onSurface + ), + elevation = CardDefaults.cardElevation(defaultElevation = 0.dp) + ) { + Text( + text = "Card with pure black surface", + modifier = Modifier.padding(16.dp), + color = MaterialTheme.colorScheme.onSurface + ) + } + } + + // Note: to make status/navigation bars pure black as well, use a system UI controller: + // rememberSystemUiController().setSystemBarsColor(Color.Black, darkIcons = false) + // (Accompanist library or platform APIs required) + } + + @Composable + private fun DynamicThemeSetup(darkTheme: Boolean = isSystemInDarkTheme()) { + // duplicate removed in patch + } + } private object TypographySnippets { From a9b309dbc44a14c7ad13a2e27d3b7c3fea1be802 Mon Sep 17 00:00:00 2001 From: eshawnlil1-sudo Date: Sun, 9 Aug 2026 11:18:24 +0100 Subject: [PATCH 2/4] feat(theme): add SettingsMock full-screen settings-like sample --- .../snippets/designsystems/SettingsMock.kt | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/designsystems/SettingsMock.kt diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/SettingsMock.kt b/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/SettingsMock.kt new file mode 100644 index 000000000..52dd82d49 --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/SettingsMock.kt @@ -0,0 +1,41 @@ +package com.example.compose.snippets.designsystems + +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.material3.Card +import androidx.compose.material3.CardDefaults +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp + +/** + * A simple full-screen settings-like mock that uses the current MaterialTheme surface color + * and disables tonal elevation so the surfaces render as pure black when the dark scheme is set to black. + */ +@Composable +fun SettingsMock(itemsList: List) { + LazyColumn { + items(itemsList) { title -> + Card( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 16.dp, vertical = 8.dp), + colors = CardDefaults.cardColors( + containerColor = MaterialTheme.colorScheme.surface, + contentColor = MaterialTheme.colorScheme.onSurface + ), + elevation = CardDefaults.cardElevation(defaultElevation = 0.dp) + ) { + Text( + text = title, + modifier = Modifier.padding(20.dp), + color = MaterialTheme.colorScheme.onSurface + ) + } + } + } +} From 997f270e55c8dd1759be1e7932bf4e86dbee4bbc Mon Sep 17 00:00:00 2001 From: eshawnlil1-sudo Date: Sun, 9 Aug 2026 11:25:00 +0100 Subject: [PATCH 3/4] chore(theme): add Compose preview for SettingsMock (night) --- .../designsystems/PreviewSettingsMock.kt | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 compose/snippets/src/debug/java/com/example/compose/snippets/designsystems/PreviewSettingsMock.kt diff --git a/compose/snippets/src/debug/java/com/example/compose/snippets/designsystems/PreviewSettingsMock.kt b/compose/snippets/src/debug/java/com/example/compose/snippets/designsystems/PreviewSettingsMock.kt new file mode 100644 index 000000000..19507c954 --- /dev/null +++ b/compose/snippets/src/debug/java/com/example/compose/snippets/designsystems/PreviewSettingsMock.kt @@ -0,0 +1,32 @@ +import android.content.res.Configuration +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.runtime.Composable +import com.example.compose.snippets.designsystems.ColorScheme +import com.example.compose.snippets.designsystems.SettingsMock + +@Preview( + name = "SettingsMock — Night", + uiMode = Configuration.UI_MODE_NIGHT_YES, + showBackground = true, + widthDp = 360, + heightDp = 720 +) +@Composable +fun PreviewSettingsMock_Night() { + // Force darkTheme = true so the preview uses the dark color scheme + ColorScheme.ReplyTheme(darkTheme = true) { + SettingsMock( + itemsList = listOf( + "Display", + "Battery", + "Wallpaper and style", + "Themes", + "Home screen", + "Lock screen", + "Security and privacy", + "Location", + "Safety and emergency" + ) + ) + } +} From 6e3f2d3c970d46148a3b0c38492202cd40cc417c Mon Sep 17 00:00:00 2001 From: eshawnlil1-sudo Date: Sun, 9 Aug 2026 11:33:09 +0100 Subject: [PATCH 4/4] chore(theme): remove duplicate DynamicThemeSetup stub --- .../compose/snippets/designsystems/Material3Snippets.kt | 5 ----- 1 file changed, 5 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/Material3Snippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/Material3Snippets.kt index 960058bdf..80568edf8 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/Material3Snippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/Material3Snippets.kt @@ -229,11 +229,6 @@ private object ColorScheme { // (Accompanist library or platform APIs required) } - @Composable - private fun DynamicThemeSetup(darkTheme: Boolean = isSystemInDarkTheme()) { - // duplicate removed in patch - } - } private object TypographySnippets {