From 9c866c858b2ced381d6f682479d6e57cd5a9dd02 Mon Sep 17 00:00:00 2001 From: avi Date: Thu, 17 Sep 2026 22:06:38 -0500 Subject: [PATCH] Record FAB paints with accent (primary); Material3 default primaryContainer muted it - Theme: derive primaryContainer from accent in both schemes (other container-tinted surfaces follow accent now) - Home FAB: explicit containerColor=primary so button color == accent_color exactly - Settings: hide 'Reset to default' on non-editable settings (App version showed it and threw 'not editable') --- .../app/src/main/java/com/shonar/ui/home/HomeScreen.kt | 2 ++ .../main/java/com/shonar/ui/settings/SettingsScreen.kt | 10 +++++++--- android/app/src/main/java/com/shonar/ui/theme/Theme.kt | 7 +++++++ 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/android/app/src/main/java/com/shonar/ui/home/HomeScreen.kt b/android/app/src/main/java/com/shonar/ui/home/HomeScreen.kt index 877619f..0edb0b8 100644 --- a/android/app/src/main/java/com/shonar/ui/home/HomeScreen.kt +++ b/android/app/src/main/java/com/shonar/ui/home/HomeScreen.kt @@ -122,6 +122,8 @@ fun HomeScreen( } } }, + containerColor = MaterialTheme.colorScheme.primary, + contentColor = MaterialTheme.colorScheme.onPrimary, icon = { Icon(Icons.Filled.Mic, contentDescription = null) }, text = { Text(if (recorderState.phase == com.shonar.recording.RecordingSnapshot.Phase.IDLE) "Record" else "Stop") diff --git a/android/app/src/main/java/com/shonar/ui/settings/SettingsScreen.kt b/android/app/src/main/java/com/shonar/ui/settings/SettingsScreen.kt index 327385d..c47f2cd 100644 --- a/android/app/src/main/java/com/shonar/ui/settings/SettingsScreen.kt +++ b/android/app/src/main/java/com/shonar/ui/settings/SettingsScreen.kt @@ -257,8 +257,10 @@ private fun Control( }.isFailure, supportingText = { Row { - TextButton(onClick = onReset, contentPadding = androidx.compose.foundation.layout.PaddingValues(0.dp)) { - Text("Reset to default") + if (def.editable) { + TextButton(onClick = onReset, contentPadding = androidx.compose.foundation.layout.PaddingValues(0.dp)) { + Text("Reset to default") + } } } }, @@ -378,7 +380,9 @@ private fun Control( ) } } - TextButton(onClick = onReset) { Text("Reset") } + if (def.editable) { + TextButton(onClick = onReset) { Text("Reset") } + } } } } diff --git a/android/app/src/main/java/com/shonar/ui/theme/Theme.kt b/android/app/src/main/java/com/shonar/ui/theme/Theme.kt index 654405f..847f3b9 100644 --- a/android/app/src/main/java/com/shonar/ui/theme/Theme.kt +++ b/android/app/src/main/java/com/shonar/ui/theme/Theme.kt @@ -12,6 +12,7 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.lerp import androidx.compose.ui.graphics.luminance import com.shonar.settings.SettingsManager @@ -27,6 +28,10 @@ private fun schemeFor(accent: Color, dark: Boolean) = if (dark) { primary = accent, onPrimary = if (accent.luminance() > 0.4) Ink else Color.White, secondary = accent.copy(alpha = 0.8f), + // FABs (the mic button) paint with primaryContainer, not primary — + // derive it from the accent so accent_color actually changes them. + primaryContainer = lerp(NavySurface, accent, 0.35f), + onPrimaryContainer = if (accent.luminance() > 0.4) Ink else Color.White, background = DeepNavy, surface = NavySurface, onBackground = Color(0xFFE6EDF3), @@ -37,6 +42,8 @@ private fun schemeFor(accent: Color, dark: Boolean) = if (dark) { primary = accent, onPrimary = if (accent.luminance() > 0.4) Ink else Color.White, secondary = accent.copy(alpha = 0.8f), + primaryContainer = lerp(Color.White, accent, 0.35f), + onPrimaryContainer = if (accent.luminance() > 0.4) Ink else Color.White, ) }