diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 88edd84..8ba23c0 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -27,8 +27,8 @@ android { applicationId = "com.ledga.app" minSdk = 26 targetSdk = 34 - versionCode = 14 - versionName = "1.4.4" + versionCode = 15 + versionName = "1.4.5" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } diff --git a/app/src/main/java/com/ledga/app/ui/accounts/BackfillScreen.kt b/app/src/main/java/com/ledga/app/ui/accounts/BackfillScreen.kt index 6b292f8..da38c40 100644 --- a/app/src/main/java/com/ledga/app/ui/accounts/BackfillScreen.kt +++ b/app/src/main/java/com/ledga/app/ui/accounts/BackfillScreen.kt @@ -40,6 +40,7 @@ import com.ledga.app.ui.components.parseColor import com.ledga.app.ui.components.v2.Avatar import com.ledga.app.ui.components.v2.BackLeading import com.ledga.app.ui.components.v2.BentoCard +import com.ledga.app.ui.components.v2.onTonal import com.ledga.app.ui.components.v2.LedgaChip import com.ledga.app.ui.components.v2.LedgaTopBar import com.ledga.app.ui.theme.LedgaAccent @@ -287,7 +288,7 @@ fun BackfillScreen( "Account row at the bottom that lets you reassign one row " + "at a time. Useful for stragglers.", style = LedgaText.BodyM, - color = MaterialTheme.colorScheme.onSurface, + color = onTonal(LedgaAccentSoft), ) } diff --git a/app/src/main/java/com/ledga/app/ui/goals/GoalsScreen.kt b/app/src/main/java/com/ledga/app/ui/goals/GoalsScreen.kt index 630143d..a2c1c8c 100644 --- a/app/src/main/java/com/ledga/app/ui/goals/GoalsScreen.kt +++ b/app/src/main/java/com/ledga/app/ui/goals/GoalsScreen.kt @@ -35,6 +35,7 @@ import com.ledga.app.ui.components.parseColor import com.ledga.app.ui.components.v2.BackLeading import com.ledga.app.ui.components.v2.BentoCard import com.ledga.app.ui.components.v2.LedgaTopBar +import com.ledga.app.ui.components.v2.onTonal import com.ledga.app.ui.components.v2.ProgressRing import com.ledga.app.ui.components.v2.TopBarIconButton import com.ledga.app.ui.theme.LedgaAccent @@ -115,7 +116,7 @@ private fun EmptyState() { text = "Pick what you're saving toward and how you'll contribute. " + "Ledga keeps the progress moving on its own โ€” no manual entry.", style = LedgaText.BodyM, - color = MaterialTheme.colorScheme.onSurface, + color = onTonal(LedgaAccentSoft), ) } } diff --git a/app/src/main/java/com/ledga/app/ui/insights/InsightsScreen.kt b/app/src/main/java/com/ledga/app/ui/insights/InsightsScreen.kt index 4041dce..a5a3b23 100644 --- a/app/src/main/java/com/ledga/app/ui/insights/InsightsScreen.kt +++ b/app/src/main/java/com/ledga/app/ui/insights/InsightsScreen.kt @@ -38,6 +38,8 @@ import com.ledga.app.data.db.entity.InsightSeverity import com.ledga.app.data.db.entity.InsightType import com.ledga.app.ui.components.v2.BentoCard import com.ledga.app.ui.components.v2.LedgaTopBar +import com.ledga.app.ui.components.v2.onTonal +import com.ledga.app.ui.components.v2.onTonalMuted import com.ledga.app.ui.theme.LedgaAccent import com.ledga.app.ui.theme.LedgaAccentDeep import com.ledga.app.ui.theme.LedgaAccentSoft @@ -108,6 +110,12 @@ private fun InsightCard( onCta: () -> Unit, ) { val tone = toneFor(insight.severity) + // Tonal cards have a FIXED light background in both light and dark themes, + // so their text must contrast with that background โ€” not with the theme's + // surface (whose onSurface is near-white in dark mode โ†’ invisible here). + // INFO cards are non-tonal (adaptive surface), so they use theme colors. + val inkColor = if (tone.tonal) onTonal(tone.background) else MaterialTheme.colorScheme.onSurface + val mutedColor = if (tone.tonal) onTonalMuted(tone.background) else MaterialTheme.colorScheme.onSurfaceVariant BentoCard( tonal = tone.tonal, tonalColor = tone.background, @@ -131,13 +139,13 @@ private fun InsightCard( Text( text = insight.headline, style = LedgaText.TitleS, - color = MaterialTheme.colorScheme.onSurface, + color = inkColor, ) if (!insight.body.isNullOrBlank()) { Text( text = insight.body, style = LedgaText.BodyM, - color = MaterialTheme.colorScheme.onSurfaceVariant, + color = mutedColor, ) } Row( @@ -164,19 +172,19 @@ private fun InsightCard( androidx.compose.material3.Icon( imageVector = Icons.Filled.Replay, contentDescription = "Snooze", - tint = MaterialTheme.colorScheme.onSurfaceVariant, + tint = mutedColor, modifier = Modifier.size(14.dp), ) Text( text = "Snooze 30d", style = LedgaText.Caption, - color = MaterialTheme.colorScheme.onSurfaceVariant, + color = mutedColor, ) } Text( text = "Got it", style = LedgaText.BodyM, - color = MaterialTheme.colorScheme.onSurface, + color = inkColor, modifier = Modifier.clickable { onDismiss() }, ) } diff --git a/app/src/main/java/com/ledga/app/ui/update/UpdateScreen.kt b/app/src/main/java/com/ledga/app/ui/update/UpdateScreen.kt index aef1268..4659841 100644 --- a/app/src/main/java/com/ledga/app/ui/update/UpdateScreen.kt +++ b/app/src/main/java/com/ledga/app/ui/update/UpdateScreen.kt @@ -40,6 +40,7 @@ import com.ledga.app.data.repository.DownloadState import com.ledga.app.ui.components.v2.BackLeading import com.ledga.app.ui.components.v2.BentoCard import com.ledga.app.ui.components.v2.LedgaTopBar +import com.ledga.app.ui.components.v2.onTonal import com.ledga.app.ui.theme.LedgaAccent import com.ledga.app.ui.theme.LedgaAccentDeep import com.ledga.app.ui.theme.LedgaAccentSoft @@ -133,7 +134,7 @@ private fun UpToDateCard(onCheckAgain: () -> Unit) { Text( text = "Nothing newer on GitHub Releases right now.", style = LedgaText.BodyM, - color = MaterialTheme.colorScheme.onSurface, + color = onTonal(LedgaAccentSoft), ) TextButton(onClick = onCheckAgain) { Text("Check again", color = LedgaAccentDeep) @@ -177,7 +178,7 @@ private fun ReleaseCard( Text( text = "Currently running v${BuildConfig.VERSION_NAME} ยท Update is $sizeMb", style = LedgaText.BodyM, - color = MaterialTheme.colorScheme.onSurface, + color = onTonal(LedgaAccentSoft), ) }