From ec941e9e0404dd1cd187af326d8f69c6342e3d21 Mon Sep 17 00:00:00 2001 From: Achmad Setyabudi Susilo Date: Sun, 28 Jun 2026 21:53:34 +0700 Subject: [PATCH] fix(#40): tint status and navigation bars to match active theme and flip icon appearance --- .../java/dev/achmad/ledgerr/ui/theme/Theme.kt | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/dev/achmad/ledgerr/ui/theme/Theme.kt b/app/src/main/java/dev/achmad/ledgerr/ui/theme/Theme.kt index 369aa65..60af7de 100644 --- a/app/src/main/java/dev/achmad/ledgerr/ui/theme/Theme.kt +++ b/app/src/main/java/dev/achmad/ledgerr/ui/theme/Theme.kt @@ -12,6 +12,7 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.SideEffect import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.luminance import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.platform.LocalView import androidx.core.view.WindowCompat @@ -25,6 +26,8 @@ fun AppTheme( darkTheme -> darkColorScheme() else -> lightColorScheme() } + StatusBarColor(colorScheme.background) + NavigationBarColor(colorScheme.background) Box( modifier = Modifier .fillMaxSize() @@ -45,9 +48,12 @@ fun NavigationBarColor(color: Color) { val activity = LocalActivity.current if (!view.isInEditMode) { SideEffect { - activity?.window?.let { - it.navigationBarColor = color.toArgb() - WindowCompat.setDecorFitsSystemWindows(it, false) + activity?.window?.let { window -> + window.navigationBarColor = color.toArgb() + WindowCompat.setDecorFitsSystemWindows(window, false) + WindowCompat.getInsetsController(window, view).apply { + isAppearanceLightNavigationBars = color.luminance() > 0.5f + } } } } @@ -60,9 +66,12 @@ fun StatusBarColor(color: Color) { val activity = LocalActivity.current if (!view.isInEditMode) { SideEffect { - activity?.window?.let { - it.statusBarColor = color.toArgb() - WindowCompat.setDecorFitsSystemWindows(it, false) + activity?.window?.let { window -> + window.statusBarColor = color.toArgb() + WindowCompat.setDecorFitsSystemWindows(window, false) + WindowCompat.getInsetsController(window, view).apply { + isAppearanceLightStatusBars = color.luminance() > 0.5f + } } } }