diff --git a/app/src/main/java/org/app/core/designsystem/component/topbar/MoballTopBar.kt b/app/src/main/java/org/app/core/designsystem/component/topbar/MoballTopBar.kt index 88334cd..03ed068 100644 --- a/app/src/main/java/org/app/core/designsystem/component/topbar/MoballTopBar.kt +++ b/app/src/main/java/org/app/core/designsystem/component/topbar/MoballTopBar.kt @@ -1,5 +1,6 @@ package org.app.core.designsystem.component.topbar +import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.IntrinsicSize import androidx.compose.foundation.layout.Row @@ -42,7 +43,8 @@ fun MoballTopBar( modifier = modifier .fillMaxWidth() .heightIn(min = 56.dp) - .height(IntrinsicSize.Min), + .height(IntrinsicSize.Min) + .background(MoballTheme.colors.staticWhite), ) { Row( modifier = Modifier diff --git a/app/src/main/java/org/app/core/designsystem/theme/Color.kt b/app/src/main/java/org/app/core/designsystem/theme/Color.kt index b9daada..8ca7633 100644 --- a/app/src/main/java/org/app/core/designsystem/theme/Color.kt +++ b/app/src/main/java/org/app/core/designsystem/theme/Color.kt @@ -153,7 +153,7 @@ data class MoballColors( val defaultMoballColors = MoballColors( // Background - backgroundBase = backGround, + backgroundBase = white, backgroundSurface = coolNeutral130, backgroundScrim = coolNeutral800, // Border & Line diff --git a/app/src/main/java/org/app/presentation/main/MainAppState.kt b/app/src/main/java/org/app/presentation/main/MainAppState.kt index ddf557a..9558f33 100644 --- a/app/src/main/java/org/app/presentation/main/MainAppState.kt +++ b/app/src/main/java/org/app/presentation/main/MainAppState.kt @@ -15,7 +15,7 @@ import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.map import org.app.core.extension.stateInWhileSubscribed -import org.app.presentation.home.navigation.HomeGraph +import org.app.presentation.home.navigation.Home import org.app.presentation.home.navigation.navigateToHome import org.app.presentation.mypage.navigateToMyPage import org.app.presentation.onboarding.splash.navigation.Splash @@ -69,7 +69,7 @@ class MainAppState( fun navigate(tab: MainTab) { val navOptions = navOptions { - popUpTo { + popUpTo { saveState = true } launchSingleTop = true diff --git a/app/src/main/java/org/app/presentation/main/MainScreen.kt b/app/src/main/java/org/app/presentation/main/MainScreen.kt index 79c3d44..9aff15c 100644 --- a/app/src/main/java/org/app/presentation/main/MainScreen.kt +++ b/app/src/main/java/org/app/presentation/main/MainScreen.kt @@ -27,6 +27,7 @@ import org.app.presentation.onboarding.signup.navigation.SignUpNickname import org.app.presentation.onboarding.signup.navigation.signUpGraph import org.app.presentation.onboarding.splash.navigation.Splash import org.app.presentation.onboarding.splash.navigation.splashGraph +import org.app.presentation.pubdetail.navigation.PubDetail import org.app.presentation.pubdetail.navigation.navigateToPubDetail import org.app.presentation.pubdetail.navigation.pubDetailGraph import org.app.presentation.schedule.navigation.scheduleGraph @@ -73,8 +74,6 @@ private fun MainNavHost( appState: MainAppState, innerPadding: PaddingValues, ) { - // 로그인·온보딩 완료 등 어두운 배경 화면은 배경을 화면 끝(시스템바 뒤)까지 그리도록 innerPadding을 적용하지 않는다. - // (해당 화면들은 각자 콘텐츠에 systemBarsPadding을 적용) val currentEntry by appState.navController.currentBackStackEntryAsState() val currentRoute = currentEntry?.destination?.route val fullBleedPrefixes = listOfNotNull( @@ -83,6 +82,15 @@ private fun MainNavHost( ) val isFullBleed = currentRoute != null && fullBleedPrefixes.any { currentRoute.startsWith(it) } + val managesOwnBottomInset = currentRoute != null && + PubDetail::class.qualifiedName?.let { currentRoute.startsWith(it) } == true + + val contentModifier = when { + isFullBleed -> Modifier.fillMaxSize() + managesOwnBottomInset -> Modifier.padding(top = innerPadding.calculateTopPadding()) + else -> Modifier.padding(innerPadding) + } + NavHost( enterTransition = { EnterTransition.None }, exitTransition = { ExitTransition.None }, @@ -90,7 +98,7 @@ private fun MainNavHost( popExitTransition = { ExitTransition.None }, navController = appState.navController, startDestination = appState.startDestination, - modifier = if (isFullBleed) Modifier.fillMaxSize() else Modifier.padding(innerPadding), + modifier = contentModifier, ) { splashGraph( navigateToHome = { diff --git a/app/src/main/java/org/app/presentation/pubdetail/component/PubBottomBar.kt b/app/src/main/java/org/app/presentation/pubdetail/component/PubBottomBar.kt index 2d07877..65c38ff 100644 --- a/app/src/main/java/org/app/presentation/pubdetail/component/PubBottomBar.kt +++ b/app/src/main/java/org/app/presentation/pubdetail/component/PubBottomBar.kt @@ -37,7 +37,7 @@ fun PubBottomBar( ) { Surface( modifier = modifier.fillMaxWidth(), - color = MoballTheme.colors.backgroundBase, + color = MoballTheme.colors.staticWhite, shadowElevation = 8.dp, tonalElevation = 0.dp, ) { diff --git a/app/src/main/java/org/app/presentation/schedule/component/ScheduleCalendarHeader.kt b/app/src/main/java/org/app/presentation/schedule/component/ScheduleCalendarHeader.kt index 911afa6..7c949e1 100644 --- a/app/src/main/java/org/app/presentation/schedule/component/ScheduleCalendarHeader.kt +++ b/app/src/main/java/org/app/presentation/schedule/component/ScheduleCalendarHeader.kt @@ -69,7 +69,7 @@ fun ScheduleCalendarHeader( elevation = 20.dp, spotColor = Color(0x26000000), ambientColor = Color(0x26000000), - ).background(MoballTheme.colors.backgroundBase), + ).background(MoballTheme.colors.staticWhite), ) { MonthNavigationRow( currentMonth = currentMonth, @@ -103,7 +103,6 @@ private fun MonthNavigationRow( .fillMaxWidth() .padding(horizontal = 16.dp), ) { - // 가운데: < 2026년 N월 > — 화면 폭과 무관하게 중앙 정렬 Row( modifier = Modifier.align(Alignment.Center), verticalAlignment = Alignment.CenterVertically, @@ -139,7 +138,6 @@ private fun MonthNavigationRow( ) } - // 오른쪽 고정: 캘린더 아이콘 Icon( imageVector = ImageVector.vectorResource(R.drawable.ic_calender), contentDescription = null,