diff --git a/androidApp/src/main/res/values-night/themes.xml b/androidApp/src/main/res/values-night/themes.xml
new file mode 100644
index 000000000..9df5a835f
--- /dev/null
+++ b/androidApp/src/main/res/values-night/themes.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
diff --git a/app/src/androidMain/kotlin/dev/alvr/katana/ui/main/MainActivity.kt b/app/src/androidMain/kotlin/dev/alvr/katana/ui/main/MainActivity.kt
index e37574d2c..2e65bcdf3 100644
--- a/app/src/androidMain/kotlin/dev/alvr/katana/ui/main/MainActivity.kt
+++ b/app/src/androidMain/kotlin/dev/alvr/katana/ui/main/MainActivity.kt
@@ -3,14 +3,14 @@ package dev.alvr.katana.ui.main
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
+import androidx.activity.enableEdgeToEdge
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
-import androidx.core.view.WindowCompat
internal class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
installSplashScreen()
+ enableEdgeToEdge()
super.onCreate(savedInstanceState)
- WindowCompat.setDecorFitsSystemWindows(window, false)
setContent { KatanaApp() }
}
}
diff --git a/app/src/androidMain/kotlin/dev/alvr/katana/ui/main/navigation/KatanaDestinations.kt b/app/src/androidMain/kotlin/dev/alvr/katana/ui/main/navigation/KatanaDestinations.kt
index 9cec21da5..1eab3ad48 100644
--- a/app/src/androidMain/kotlin/dev/alvr/katana/ui/main/navigation/KatanaDestinations.kt
+++ b/app/src/androidMain/kotlin/dev/alvr/katana/ui/main/navigation/KatanaDestinations.kt
@@ -1,16 +1,16 @@
package dev.alvr.katana.ui.main.navigation
import androidx.compose.animation.ExperimentalAnimationApi
+import androidx.compose.foundation.layout.ExperimentalLayoutApi
import androidx.compose.foundation.layout.Row
-import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.WindowInsets
+import androidx.compose.foundation.layout.consumeWindowInsets
+import androidx.compose.foundation.layout.displayCutoutPadding
import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
-import androidx.compose.foundation.layout.navigationBars
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.systemBarsPadding
-import androidx.compose.foundation.layout.windowInsetsBottomHeight
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold
import androidx.compose.material3.contentColorFor
@@ -41,7 +41,11 @@ import dev.alvr.katana.ui.main.viewmodel.MainViewModel
import io.sentry.compose.withSentryObservableEffect
@Composable
-@OptIn(ExperimentalAnimationApi::class, ExperimentalMaterialNavigationApi::class)
+@OptIn(
+ ExperimentalAnimationApi::class,
+ ExperimentalMaterialNavigationApi::class,
+ ExperimentalLayoutApi::class,
+)
internal fun KatanaDestinations(
useNavRail: Boolean,
vm: MainViewModel,
@@ -66,7 +70,6 @@ internal fun KatanaDestinations(
scrimColor = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.32f),
) {
Scaffold(
- modifier = Modifier.systemBarsPadding(),
bottomBar = {
if (!useNavRail) {
NavigationBar(
@@ -74,19 +77,17 @@ internal fun KatanaDestinations(
navController = navController,
type = NavigationBarType.Bottom,
)
- } else {
- Spacer(
- Modifier
- .windowInsetsBottomHeight(WindowInsets.navigationBars)
- .fillMaxWidth(),
- )
}
},
+ contentWindowInsets = WindowInsets(0, 0, 0, 0),
) { paddingValues ->
Row(
modifier = Modifier
.fillMaxSize()
- .padding(paddingValues),
+ .padding(paddingValues)
+ .consumeWindowInsets(paddingValues)
+ .systemBarsPadding()
+ .displayCutoutPadding(),
) {
if (useNavRail) {
NavigationBar(
diff --git a/app/src/androidMain/kotlin/dev/alvr/katana/ui/main/navigation/NavigationBar.kt b/app/src/androidMain/kotlin/dev/alvr/katana/ui/main/navigation/NavigationBar.kt
index b685f82f7..4001f62e9 100644
--- a/app/src/androidMain/kotlin/dev/alvr/katana/ui/main/navigation/NavigationBar.kt
+++ b/app/src/androidMain/kotlin/dev/alvr/katana/ui/main/navigation/NavigationBar.kt
@@ -6,12 +6,6 @@ import androidx.compose.animation.slideInVertically
import androidx.compose.animation.slideOutHorizontally
import androidx.compose.animation.slideOutVertically
import androidx.compose.foundation.layout.Spacer
-import androidx.compose.foundation.layout.WindowInsets
-import androidx.compose.foundation.layout.WindowInsetsSides
-import androidx.compose.foundation.layout.asPaddingValues
-import androidx.compose.foundation.layout.only
-import androidx.compose.foundation.layout.padding
-import androidx.compose.foundation.layout.systemBars
import androidx.compose.material3.Icon
import androidx.compose.material3.NavigationBar
import androidx.compose.material3.NavigationBarItem
@@ -122,13 +116,7 @@ private fun RailNavigationBar(
isItemSelected: (NavigationBarItem) -> Boolean,
onClick: (NavigationBarItem) -> Unit,
) {
- NavigationRail(
- modifier = Modifier.padding(
- WindowInsets.systemBars
- .only(WindowInsetsSides.Start + WindowInsetsSides.Vertical)
- .asPaddingValues(),
- ),
- ) {
+ NavigationRail {
Spacer(Modifier.weight(1f))
destinations.forEach { destination ->
NavigationRailItem(
diff --git a/app/src/androidMain/res/values/themes.xml b/app/src/androidMain/res/values/themes.xml
index efd070733..11cf59be2 100644
--- a/app/src/androidMain/res/values/themes.xml
+++ b/app/src/androidMain/res/values/themes.xml
@@ -3,6 +3,8 @@