diff --git a/composeApp/src/commonMain/kotlin/com.codandotv.streamplayerapp/navigation/NavigationGraph.kt b/composeApp/src/commonMain/kotlin/com.codandotv.streamplayerapp/navigation/NavigationGraph.kt index 8358dbc1..fa8f6656 100644 --- a/composeApp/src/commonMain/kotlin/com.codandotv.streamplayerapp/navigation/NavigationGraph.kt +++ b/composeApp/src/commonMain/kotlin/com.codandotv.streamplayerapp/navigation/NavigationGraph.kt @@ -1,8 +1,13 @@ package com.codandotv.streamplayerapp.navigation +import androidx.compose.animation.core.tween +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut +import androidx.compose.foundation.layout.padding import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder @@ -14,7 +19,6 @@ import com.codandotv.streamplayerapp.core_navigation.routes.BottomNavRoutes import com.codandotv.streamplayerapp.core_navigation.routes.Routes import com.codandotv.streamplayerapp.feature_list_streams.list.presentation.navigation.listStreamsNavGraph import com.codandotv.streamplayerapp.profile.presentation.navigation.profilePickerStreamNavGraph - import com.codandotv.streamplayerapp.presentation.navigation.splashNavGraph import com.codandotv.streamplayerapp.feature_detail.presentation.navigation.detailStreamNavGraph import com.codandotv.streamplayerapp.feature_news.presentation.navigation.newsStreamNavGraph @@ -22,7 +26,12 @@ import com.codandotv.streamplayerapp.feature_search.presentation.navigation.sear @Composable fun NavigationGraph(navController: NavHostController) { - NavHost(navController = navController, startDestination = Routes.Splash) { + NavHost( + navController = navController, + startDestination = Routes.Splash, + enterTransition = { fadeIn(animationSpec = tween(300)) }, + exitTransition = { fadeOut(animationSpec = tween(300)) }, + ) { splashNavGraph(navController = navController) listStreamsNavGraph(navController = navController) searchStreamsNavGraph(navController = navController) @@ -46,7 +55,11 @@ fun example(navController: NavController, route: String) { bottomBar = { StreamPlayerBottomNavigation(navController = navController) } - ) { _ -> - Text(text = route, color = Color.White) + ) { innerPadding -> + Text( + modifier = Modifier.padding(top = innerPadding.calculateTopPadding()), + text = route, + color = Color.White + ) } } diff --git a/core-navigation/src/commonMain/kotlin/com/codandotv/streamplayerapp/core_navigation/bottomnavigation/StreamPlayerBottomNavigation.kt b/core-navigation/src/commonMain/kotlin/com/codandotv/streamplayerapp/core_navigation/bottomnavigation/StreamPlayerBottomNavigation.kt index 9a50e77e..8bf88b86 100644 --- a/core-navigation/src/commonMain/kotlin/com/codandotv/streamplayerapp/core_navigation/bottomnavigation/StreamPlayerBottomNavigation.kt +++ b/core-navigation/src/commonMain/kotlin/com/codandotv/streamplayerapp/core_navigation/bottomnavigation/StreamPlayerBottomNavigation.kt @@ -1,6 +1,5 @@ package com.codandotv.streamplayerapp.core_navigation.bottomnavigation -import androidx.compose.foundation.layout.height import androidx.compose.material3.Icon import androidx.compose.material3.LocalAbsoluteTonalElevation import androidx.compose.material3.MaterialTheme @@ -10,8 +9,6 @@ import androidx.compose.material3.NavigationBarItemDefaults import androidx.compose.material3.Text import androidx.compose.material3.surfaceColorAtElevation import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import androidx.compose.ui.unit.dp import androidx.navigation.NavController import com.codandotv.streamplayerapp.core_navigation.helper.currentRoute import org.jetbrains.compose.resources.painterResource @@ -29,20 +26,20 @@ fun StreamPlayerBottomNavigation(navController: NavController) { NavigationBar( containerColor = MaterialTheme.colorScheme.surface, contentColor = MaterialTheme.colorScheme.onBackground, - modifier = Modifier.height(72.dp) ) { val currentRoute = currentRoute(navController = navController) bottomMenuItems.forEach { item -> - NavigationBarItem(colors = NavigationBarItemDefaults.colors( - selectedIconColor = MaterialTheme.colorScheme.onBackground, - unselectedIconColor = MaterialTheme.colorScheme.surfaceVariant, - selectedTextColor = MaterialTheme.colorScheme.onBackground, - unselectedTextColor = MaterialTheme.colorScheme.surfaceVariant, - indicatorColor = MaterialTheme.colorScheme.surfaceColorAtElevation( - LocalAbsoluteTonalElevation.current - ) - ), + NavigationBarItem( + colors = NavigationBarItemDefaults.colors( + selectedIconColor = MaterialTheme.colorScheme.onBackground, + unselectedIconColor = MaterialTheme.colorScheme.surfaceVariant, + selectedTextColor = MaterialTheme.colorScheme.onBackground, + unselectedTextColor = MaterialTheme.colorScheme.surfaceVariant, + indicatorColor = MaterialTheme.colorScheme.surfaceColorAtElevation( + LocalAbsoluteTonalElevation.current + ) + ), icon = { NavItemIcon(currentRoute, item) }, label = { Text( @@ -62,11 +59,13 @@ private fun NavItemIcon( item: BottomNavItem ) { Icon( - painterResource(if (currentRoute == item.screenRoute || currentRoute?.contains(item.screenRoute) == true){ - item.iconSelected - } else { - item.iconUnselected - }), + painterResource( + if (currentRoute == item.screenRoute || currentRoute?.contains(item.screenRoute) == true) { + item.iconSelected + } else { + item.iconUnselected + } + ), contentDescription = stringResource(item.title), ) } diff --git a/core-shared-ui/src/commonMain/kotlin/com/codandotv/streamplayerapp/core_shared_ui/widget/BasicToolbar.kt b/core-shared-ui/src/commonMain/kotlin/com/codandotv/streamplayerapp/core_shared_ui/widget/BasicToolbar.kt index f9e445cc..70b083d2 100644 --- a/core-shared-ui/src/commonMain/kotlin/com/codandotv/streamplayerapp/core_shared_ui/widget/BasicToolbar.kt +++ b/core-shared-ui/src/commonMain/kotlin/com/codandotv/streamplayerapp/core_shared_ui/widget/BasicToolbar.kt @@ -1,6 +1,7 @@ package com.codandotv.streamplayerapp.core_shared_ui.widget import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.ArrowBack import androidx.compose.material3.ExperimentalMaterial3Api @@ -21,7 +22,7 @@ fun BasicToolbar( ) { TopAppBar( title = { Text(text = title) }, - modifier = Modifier.height(56.dp), + modifier = Modifier.height(56.dp).statusBarsPadding(), navigationIcon = { IconButton(onClick = navController::navigateUp) { Icon( diff --git a/core-shared-ui/src/commonMain/kotlin/com/codandotv/streamplayerapp/core_shared_ui/widget/StreamPlayerTopBar.kt b/core-shared-ui/src/commonMain/kotlin/com/codandotv/streamplayerapp/core_shared_ui/widget/StreamPlayerTopBar.kt index 9787c767..90e8a5b8 100644 --- a/core-shared-ui/src/commonMain/kotlin/com/codandotv/streamplayerapp/core_shared_ui/widget/StreamPlayerTopBar.kt +++ b/core-shared-ui/src/commonMain/kotlin/com/codandotv/streamplayerapp/core_shared_ui/widget/StreamPlayerTopBar.kt @@ -9,6 +9,7 @@ import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Search @@ -46,7 +47,10 @@ fun StreamPlayerTopBar( onNavigateSearchScreen: () -> Unit = {}, onSelectedProfilePicture: String ) { - Box(modifier = Modifier.background(color = Colors.Dark10)) { + Box( + modifier = Modifier.background(color = Colors.Dark10) + .statusBarsPadding() + ) { StreamPlayerTopBar( onNavigateProfilePicker = { onNavigateProfilePicker() }, onNavigateSearchScreen = { onNavigateSearchScreen() }, diff --git a/feature-list-streams/src/commonMain/kotlin/com/codandotv/streamplayerapp/feature_list_streams/list/presentation/screens/ListStreamsScreen.kt b/feature-list-streams/src/commonMain/kotlin/com/codandotv/streamplayerapp/feature_list_streams/list/presentation/screens/ListStreamsScreen.kt index 55154c58..7f254a4b 100644 --- a/feature-list-streams/src/commonMain/kotlin/com/codandotv/streamplayerapp/feature_list_streams/list/presentation/screens/ListStreamsScreen.kt +++ b/feature-list-streams/src/commonMain/kotlin/com/codandotv/streamplayerapp/feature_list_streams/list/presentation/screens/ListStreamsScreen.kt @@ -48,7 +48,6 @@ fun ListStreamsScreen( Scaffold( modifier = Modifier - .statusBarsPadding() .nestedScroll(scrollBehavior.nestedScrollConnection), topBar = { StreamPlayerTopBar( diff --git a/feature-profile/src/commonMain/kotlin/com/codandotv/streamplayerapp/profile/presentation/widget/ProfilePickerStreamToolbar.kt b/feature-profile/src/commonMain/kotlin/com/codandotv/streamplayerapp/profile/presentation/widget/ProfilePickerStreamToolbar.kt index 32ef6ca5..b94752f2 100644 --- a/feature-profile/src/commonMain/kotlin/com/codandotv/streamplayerapp/profile/presentation/widget/ProfilePickerStreamToolbar.kt +++ b/feature-profile/src/commonMain/kotlin/com/codandotv/streamplayerapp/profile/presentation/widget/ProfilePickerStreamToolbar.kt @@ -6,6 +6,7 @@ import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Edit import androidx.compose.material3.Icon @@ -25,6 +26,7 @@ fun ProfilePickerStreamToolbar(modifier: Modifier = Modifier) { Box( modifier .fillMaxWidth() + .statusBarsPadding() .height(56.dp), contentAlignment = Alignment.CenterEnd ) { diff --git a/iosApp/iosApp/ContentView.swift b/iosApp/iosApp/ContentView.swift index fad7f5d8..63534011 100644 --- a/iosApp/iosApp/ContentView.swift +++ b/iosApp/iosApp/ContentView.swift @@ -13,7 +13,8 @@ struct ComposeView: UIViewControllerRepresentable { struct ContentView: View { var body: some View { ComposeView() - .ignoresSafeArea(.keyboard) // Compose has own keyboard handler + .ignoresSafeArea(.container) + .ignoresSafeArea(.keyboard) } }