diff --git a/app/src/main/java/com/kiero/core/designsystem/component/KieroSnackbar.kt b/app/src/main/java/com/kiero/core/designsystem/component/KieroSnackbar.kt new file mode 100644 index 0000000..c17a1b2 --- /dev/null +++ b/app/src/main/java/com/kiero/core/designsystem/component/KieroSnackbar.kt @@ -0,0 +1,58 @@ +package com.kiero.core.designsystem.component + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import com.kiero.core.designsystem.theme.KieroTheme + +@Composable +fun KieroSnackbar( + message: String, + modifier: Modifier = Modifier, +) { + Box( + modifier = modifier + .fillMaxWidth() + .clip(RoundedCornerShape(12.dp)) + .background(KieroTheme.colors.gray900) + .padding(16.dp), + contentAlignment = Alignment.Center + ) { + Text( + text = message, + style = KieroTheme.typography.regular.body4, + color = KieroTheme.colors.schedule1, + textAlign = TextAlign.Center + ) + } +} + +@Preview(showBackground = true) +@Composable +private fun KieroSnackbarPreview() { + KieroTheme { + Column( + modifier = Modifier.fillMaxSize(), + verticalArrangement = Arrangement.Bottom, + horizontalAlignment = Alignment.CenterHorizontally, + ) { + KieroSnackbar( + message = "이 메세지는 토스트 메세지 입니다", + modifier = Modifier.padding(16.dp), + ) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/kiero/presentation/main/navigation/MainAppState.kt b/app/src/main/java/com/kiero/presentation/main/navigation/MainAppState.kt index 8d6e385..afc33b4 100644 --- a/app/src/main/java/com/kiero/presentation/main/navigation/MainAppState.kt +++ b/app/src/main/java/com/kiero/presentation/main/navigation/MainAppState.kt @@ -1,5 +1,6 @@ package com.kiero.presentation.main.navigation +import androidx.compose.material3.SnackbarHostState import androidx.compose.runtime.Composable import androidx.compose.runtime.Stable import androidx.compose.runtime.remember @@ -86,6 +87,7 @@ class MainAppState( initialValue = false ) + fun navigateToParent() { navController.navigate(ParentGraph) { popUpTo(AuthGraph) { inclusive = true } @@ -156,9 +158,10 @@ class MainAppState( @Composable fun rememberMainAppState( navController: NavHostController = rememberNavController(), + snackbarHostState: SnackbarHostState = remember { SnackbarHostState() }, coroutineScope: CoroutineScope = rememberCoroutineScope(), ): MainAppState { - return remember(navController, coroutineScope) { + return remember(navController, snackbarHostState, coroutineScope) { MainAppState( navController = navController, coroutineScope = coroutineScope diff --git a/app/src/main/java/com/kiero/presentation/main/screen/MainScreen.kt b/app/src/main/java/com/kiero/presentation/main/screen/MainScreen.kt index bfb32a4..40ce788 100644 --- a/app/src/main/java/com/kiero/presentation/main/screen/MainScreen.kt +++ b/app/src/main/java/com/kiero/presentation/main/screen/MainScreen.kt @@ -12,6 +12,7 @@ import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle +import com.kiero.core.designsystem.component.KieroSnackbar import com.kiero.presentation.main.navigation.KidMainTab import com.kiero.presentation.main.navigation.KieroNavHost import com.kiero.presentation.main.navigation.MainAppState @@ -22,7 +23,7 @@ import kotlinx.collections.immutable.toImmutableList @Composable fun MainRoute( - appState: MainAppState = rememberMainAppState(), + appState: MainAppState = rememberMainAppState() ) { val snackBarHostState = remember { SnackbarHostState() } @@ -59,7 +60,13 @@ fun MainScreen( Scaffold( modifier = modifier.fillMaxSize(), snackbarHost = { - SnackbarHost(hostState = snackBarHostState) + SnackbarHost(hostState = snackBarHostState) { data -> + KieroSnackbar( + message = data.visuals.message, + // TODO: 디자인 확정 후 스낵바 높이 및 패딩 수정 필요 + modifier = Modifier.padding(16.dp) + ) + } }, bottomBar = { MainBottomBar(