Merge pull request 'fix(#40): tint status and navigation bars to match active theme and flip icon appearance' (#46) from feat/40-status-and-navigation-bar-colors-dont-follow-current-theme into main

Reviewed-on: #46
This commit was merged in pull request #46.
This commit is contained in:
2026-06-28 14:54:58 +00:00
@@ -12,6 +12,7 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.SideEffect import androidx.compose.runtime.SideEffect
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.luminance
import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.graphics.toArgb
import androidx.compose.ui.platform.LocalView import androidx.compose.ui.platform.LocalView
import androidx.core.view.WindowCompat import androidx.core.view.WindowCompat
@@ -25,6 +26,8 @@ fun AppTheme(
darkTheme -> darkColorScheme() darkTheme -> darkColorScheme()
else -> lightColorScheme() else -> lightColorScheme()
} }
StatusBarColor(colorScheme.background)
NavigationBarColor(colorScheme.background)
Box( Box(
modifier = Modifier modifier = Modifier
.fillMaxSize() .fillMaxSize()
@@ -45,9 +48,12 @@ fun NavigationBarColor(color: Color) {
val activity = LocalActivity.current val activity = LocalActivity.current
if (!view.isInEditMode) { if (!view.isInEditMode) {
SideEffect { SideEffect {
activity?.window?.let { activity?.window?.let { window ->
it.navigationBarColor = color.toArgb() window.navigationBarColor = color.toArgb()
WindowCompat.setDecorFitsSystemWindows(it, false) 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 val activity = LocalActivity.current
if (!view.isInEditMode) { if (!view.isInEditMode) {
SideEffect { SideEffect {
activity?.window?.let { activity?.window?.let { window ->
it.statusBarColor = color.toArgb() window.statusBarColor = color.toArgb()
WindowCompat.setDecorFitsSystemWindows(it, false) WindowCompat.setDecorFitsSystemWindows(window, false)
WindowCompat.getInsetsController(window, view).apply {
isAppearanceLightStatusBars = color.luminance() > 0.5f
}
} }
} }
} }