From f99661ab7d1ba51d2e028e0c5f15a8de8f91e5d7 Mon Sep 17 00:00:00 2001 From: LEE YOU BIN Date: Wed, 10 Jul 2024 00:15:25 +0900 Subject: [PATCH 01/10] =?UTF-8?q?[ADD/#27]=20TerningBasicBottomSheet=20?= =?UTF-8?q?=ED=8C=8C=EC=9D=BC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../component/bottomsheet/TerningBasicBottomSheet.kt | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 core/src/main/java/com/terning/core/designsystem/component/bottomsheet/TerningBasicBottomSheet.kt diff --git a/core/src/main/java/com/terning/core/designsystem/component/bottomsheet/TerningBasicBottomSheet.kt b/core/src/main/java/com/terning/core/designsystem/component/bottomsheet/TerningBasicBottomSheet.kt new file mode 100644 index 000000000..7e2dcba5e --- /dev/null +++ b/core/src/main/java/com/terning/core/designsystem/component/bottomsheet/TerningBasicBottomSheet.kt @@ -0,0 +1,10 @@ +package com.terning.core.designsystem.component.bottomsheet + +import androidx.compose.runtime.Composable + +@Composable +fun TerningBasicBottomSheet( + content: @Composable () -> Unit +){ + +} \ No newline at end of file From 1a4d9b2e28929d50c312be3af42a161c606a12c5 Mon Sep 17 00:00:00 2001 From: LEE YOU BIN Date: Wed, 10 Jul 2024 01:10:10 +0900 Subject: [PATCH 02/10] =?UTF-8?q?[FEAT/#27]=20bottom=20sheet=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bottomsheet/SignUpBottomSheet.kt | 32 +++++++++++++++++++ .../bottomsheet/TerningBasicBottomSheet.kt | 18 +++++++++-- core/src/main/res/values/strings.xml | 3 ++ .../feature/onboarding/signin/SignInRoute.kt | 20 +++++++++++- 4 files changed, 70 insertions(+), 3 deletions(-) create mode 100644 core/src/main/java/com/terning/core/designsystem/component/bottomsheet/SignUpBottomSheet.kt diff --git a/core/src/main/java/com/terning/core/designsystem/component/bottomsheet/SignUpBottomSheet.kt b/core/src/main/java/com/terning/core/designsystem/component/bottomsheet/SignUpBottomSheet.kt new file mode 100644 index 000000000..0bfc49b4f --- /dev/null +++ b/core/src/main/java/com/terning/core/designsystem/component/bottomsheet/SignUpBottomSheet.kt @@ -0,0 +1,32 @@ +package com.terning.core.designsystem.component.bottomsheet + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.unit.dp +import com.terning.core.R +import com.terning.core.designsystem.theme.TerningTheme + +@Composable +fun SignUpBottomSheet( + modifier: Modifier = Modifier, + onDismiss: () -> Unit +) { + TerningBasicBottomSheet( + content = { + Column { + Text( + text = stringResource(id = R.string.bottom_sheet_title), + style = TerningTheme.typography.title2, + modifier = modifier.padding(start = 28.dp) + ) + + } + }, + onDismissRequest = { onDismiss() } + ) + +} \ No newline at end of file diff --git a/core/src/main/java/com/terning/core/designsystem/component/bottomsheet/TerningBasicBottomSheet.kt b/core/src/main/java/com/terning/core/designsystem/component/bottomsheet/TerningBasicBottomSheet.kt index 7e2dcba5e..d13bda70d 100644 --- a/core/src/main/java/com/terning/core/designsystem/component/bottomsheet/TerningBasicBottomSheet.kt +++ b/core/src/main/java/com/terning/core/designsystem/component/bottomsheet/TerningBasicBottomSheet.kt @@ -1,10 +1,24 @@ package com.terning.core.designsystem.component.bottomsheet +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.ModalBottomSheet +import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.runtime.Composable +@OptIn(ExperimentalMaterial3Api::class) @Composable fun TerningBasicBottomSheet( - content: @Composable () -> Unit -){ + content: @Composable () -> Unit, + onDismissRequest: () -> Unit +) { + val sheetState = rememberModalBottomSheetState() + ModalBottomSheet( + onDismissRequest = { + onDismissRequest() + }, + sheetState = sheetState + ) { + content() + } } \ No newline at end of file diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml index a60fd53c1..fc0204cbd 100644 --- a/core/src/main/res/values/strings.xml +++ b/core/src/main/res/values/strings.xml @@ -11,4 +11,7 @@ button + + 프로필 이미지 선택 + \ No newline at end of file diff --git a/feature/src/main/java/com/terning/feature/onboarding/signin/SignInRoute.kt b/feature/src/main/java/com/terning/feature/onboarding/signin/SignInRoute.kt index 24be49cee..259368a41 100644 --- a/feature/src/main/java/com/terning/feature/onboarding/signin/SignInRoute.kt +++ b/feature/src/main/java/com/terning/feature/onboarding/signin/SignInRoute.kt @@ -9,6 +9,9 @@ import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext @@ -21,6 +24,7 @@ import androidx.lifecycle.compose.LocalLifecycleOwner import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.flowWithLifecycle import androidx.navigation.NavHostController +import com.terning.core.designsystem.component.bottomsheet.SignUpBottomSheet import com.terning.core.designsystem.theme.TerningPointTheme import com.terning.core.extension.toast import com.terning.feature.R @@ -56,6 +60,8 @@ fun SignInScreen( modifier: Modifier = Modifier, onSignInClick: () -> Unit = {}, ) { + var showBottomSheet by remember { mutableStateOf(false) } + Column( modifier = modifier .wrapContentHeight() @@ -70,9 +76,21 @@ fun SignInScreen( ) KakaoButton( title = stringResource(id = R.string.sign_in_kakao_button), - onSignInClick = { onSignInClick() }, + onSignInClick = { + //onSignInClick() + showBottomSheet = true + }, modifier = modifier.padding(horizontal = 20.dp) ) + + if (showBottomSheet) { + SignUpBottomSheet( + + onDismiss = { showBottomSheet = false } + ) + + } + } } From 212475b01ed1095ce5f58d8d52a54dfa9c237d7b Mon Sep 17 00:00:00 2001 From: LEE YOU BIN Date: Wed, 10 Jul 2024 03:30:23 +0900 Subject: [PATCH 03/10] =?UTF-8?q?[FEAT/#27]=20=ED=9A=8C=EC=9B=90=EA=B0=80?= =?UTF-8?q?=EC=9E=85=20bottom=20sheet=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/build.gradle.kts | 3 +- .../bottomsheet/SignUpBottomSheet.kt | 32 -------- core/src/main/res/drawable/ic_character1.xml | 9 +++ core/src/main/res/drawable/ic_character2.xml | 9 +++ core/src/main/res/drawable/ic_character3.xml | 9 +++ core/src/main/res/drawable/ic_character4.xml | 9 +++ .../res/drawable/ic_selected_character.xml | 14 ++++ feature/build.gradle.kts | 1 + .../feature/onboarding/signin/SignInRoute.kt | 4 +- .../signup/component/SignUpBottomSheet.kt | 74 +++++++++++++++++++ gradle/libs.versions.toml | 2 + 11 files changed, 130 insertions(+), 36 deletions(-) delete mode 100644 core/src/main/java/com/terning/core/designsystem/component/bottomsheet/SignUpBottomSheet.kt create mode 100644 core/src/main/res/drawable/ic_character1.xml create mode 100644 core/src/main/res/drawable/ic_character2.xml create mode 100644 core/src/main/res/drawable/ic_character3.xml create mode 100644 core/src/main/res/drawable/ic_character4.xml create mode 100644 core/src/main/res/drawable/ic_selected_character.xml create mode 100644 feature/src/main/java/com/terning/feature/onboarding/signup/component/SignUpBottomSheet.kt diff --git a/core/build.gradle.kts b/core/build.gradle.kts index c53a6a378..2f11ebd4d 100644 --- a/core/build.gradle.kts +++ b/core/build.gradle.kts @@ -44,8 +44,9 @@ dependencies { // Kotlin implementation(libs.kotlin) - // Lifecycle Ktx + // AndroidXDependencies implementation(libs.androidx.lifecycle.runtime.ktx) + implementation(libs.androidx.compose.saveable) // Hilt implementation(libs.hilt.android) diff --git a/core/src/main/java/com/terning/core/designsystem/component/bottomsheet/SignUpBottomSheet.kt b/core/src/main/java/com/terning/core/designsystem/component/bottomsheet/SignUpBottomSheet.kt deleted file mode 100644 index 0bfc49b4f..000000000 --- a/core/src/main/java/com/terning/core/designsystem/component/bottomsheet/SignUpBottomSheet.kt +++ /dev/null @@ -1,32 +0,0 @@ -package com.terning.core.designsystem.component.bottomsheet - -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.padding -import androidx.compose.material3.Text -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import androidx.compose.ui.res.stringResource -import androidx.compose.ui.unit.dp -import com.terning.core.R -import com.terning.core.designsystem.theme.TerningTheme - -@Composable -fun SignUpBottomSheet( - modifier: Modifier = Modifier, - onDismiss: () -> Unit -) { - TerningBasicBottomSheet( - content = { - Column { - Text( - text = stringResource(id = R.string.bottom_sheet_title), - style = TerningTheme.typography.title2, - modifier = modifier.padding(start = 28.dp) - ) - - } - }, - onDismissRequest = { onDismiss() } - ) - -} \ No newline at end of file diff --git a/core/src/main/res/drawable/ic_character1.xml b/core/src/main/res/drawable/ic_character1.xml new file mode 100644 index 000000000..e7a473ec6 --- /dev/null +++ b/core/src/main/res/drawable/ic_character1.xml @@ -0,0 +1,9 @@ + + + diff --git a/core/src/main/res/drawable/ic_character2.xml b/core/src/main/res/drawable/ic_character2.xml new file mode 100644 index 000000000..e7a473ec6 --- /dev/null +++ b/core/src/main/res/drawable/ic_character2.xml @@ -0,0 +1,9 @@ + + + diff --git a/core/src/main/res/drawable/ic_character3.xml b/core/src/main/res/drawable/ic_character3.xml new file mode 100644 index 000000000..e7a473ec6 --- /dev/null +++ b/core/src/main/res/drawable/ic_character3.xml @@ -0,0 +1,9 @@ + + + diff --git a/core/src/main/res/drawable/ic_character4.xml b/core/src/main/res/drawable/ic_character4.xml new file mode 100644 index 000000000..e7a473ec6 --- /dev/null +++ b/core/src/main/res/drawable/ic_character4.xml @@ -0,0 +1,9 @@ + + + diff --git a/core/src/main/res/drawable/ic_selected_character.xml b/core/src/main/res/drawable/ic_selected_character.xml new file mode 100644 index 000000000..c5d459b5f --- /dev/null +++ b/core/src/main/res/drawable/ic_selected_character.xml @@ -0,0 +1,14 @@ + + + + diff --git a/feature/build.gradle.kts b/feature/build.gradle.kts index 16da9b5ee..372c480bb 100644 --- a/feature/build.gradle.kts +++ b/feature/build.gradle.kts @@ -69,6 +69,7 @@ dependencies { implementation(libs.androidx.workManager) implementation(libs.hilt.compiler) implementation(libs.androidx.lifecycle.runtime.compose.android) + implementation(libs.androidx.compose.saveable) // KspDependencies ksp(libs.hilt.android.compiler) diff --git a/feature/src/main/java/com/terning/feature/onboarding/signin/SignInRoute.kt b/feature/src/main/java/com/terning/feature/onboarding/signin/SignInRoute.kt index 259368a41..4cd57100b 100644 --- a/feature/src/main/java/com/terning/feature/onboarding/signin/SignInRoute.kt +++ b/feature/src/main/java/com/terning/feature/onboarding/signin/SignInRoute.kt @@ -24,12 +24,12 @@ import androidx.lifecycle.compose.LocalLifecycleOwner import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.flowWithLifecycle import androidx.navigation.NavHostController -import com.terning.core.designsystem.component.bottomsheet.SignUpBottomSheet import com.terning.core.designsystem.theme.TerningPointTheme import com.terning.core.extension.toast import com.terning.feature.R import com.terning.feature.home.navigation.navigateHome import com.terning.feature.onboarding.signin.component.KakaoButton +import com.terning.feature.onboarding.signup.component.SignUpBottomSheet @Composable fun SignInRoute( @@ -85,10 +85,8 @@ fun SignInScreen( if (showBottomSheet) { SignUpBottomSheet( - onDismiss = { showBottomSheet = false } ) - } } diff --git a/feature/src/main/java/com/terning/feature/onboarding/signup/component/SignUpBottomSheet.kt b/feature/src/main/java/com/terning/feature/onboarding/signup/component/SignUpBottomSheet.kt new file mode 100644 index 000000000..498312c0f --- /dev/null +++ b/feature/src/main/java/com/terning/feature/onboarding/signup/component/SignUpBottomSheet.kt @@ -0,0 +1,74 @@ +package com.terning.feature.onboarding.signup.component + +import androidx.compose.foundation.Image +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableIntStateOf +import androidx.compose.runtime.saveable.rememberSaveable +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.unit.dp +import com.terning.core.R +import com.terning.core.designsystem.component.bottomsheet.TerningBasicBottomSheet +import com.terning.core.designsystem.theme.TerningTheme +import com.terning.core.extension.noRippleClickable + +@Composable +fun SignUpBottomSheet( + modifier: Modifier = Modifier, + onDismiss: () -> Unit +) { + TerningBasicBottomSheet( + content = { + Column { + Text( + text = stringResource(id = R.string.bottom_sheet_title), + style = TerningTheme.typography.title2, + modifier = modifier.padding(start = 28.dp) + ) + RadioButtonGroup() + } + }, + onDismissRequest = { onDismiss() } + ) +} + +@Composable +fun RadioButtonGroup() { + val options = listOf( + R.drawable.ic_character1, + R.drawable.ic_character2, + R.drawable.ic_character3, + R.drawable.ic_character4 + ) + + var selectedOption by rememberSaveable { mutableIntStateOf(options[0]) } + + Column { + options.forEach { option -> + Row( + modifier = Modifier + .padding(horizontal = 28.dp, vertical = 8.dp), + verticalAlignment = Alignment.CenterVertically + ) { + Image( + painter = painterResource(id = if (option == selectedOption) R.drawable.ic_selected_character else option), + contentDescription = null, + modifier = Modifier + .size(100.dp) + .noRippleClickable { + selectedOption = option + } + ) + } + } + } +} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index dfe3113c2..398f4beb6 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -26,6 +26,7 @@ androidxComposeBom = "2024.04.01" androidxComposeCompiler = "1.5.14" androidxComposeMaterial3 = "1.2.1" composeNavigation = "2.8.0-beta04" +composeSavable = "1.4.3" ## Hilt hilt = "2.48.1" @@ -100,6 +101,7 @@ androidx-compose-ui-test = { group = "androidx.compose.ui", name = "ui-test-juni androidx-compose-ui-testManifest = { group = "androidx.compose.ui", name = "ui-test-manifest" } androidx-compose-navigation = { group = "androidx.navigation", name = "navigation-compose", version.ref = "composeNavigation" } androidx-compose-navigation-test = { group = "androidx.navigation", name = "navigation-testing", version.ref = "composeNavigation" } +androidx-compose-saveable = {group = "androidx.compose.runtime", name = "runtime-saveable", version.ref = "composeSavable"} compose-compiler-gradle-plugin = { module = "org.jetbrains.kotlin:compose-compiler-gradle-plugin", version.ref = "kotlin" } androidx-ui = { group = "androidx.compose.ui", name = "ui" } From 14575b5e184011827d2754c1fae3f00407da1356 Mon Sep 17 00:00:00 2001 From: LEE YOU BIN Date: Wed, 10 Jul 2024 06:16:24 +0900 Subject: [PATCH 04/10] =?UTF-8?q?[FEAT/#27]=20=ED=9A=8C=EC=9B=90=EA=B0=80?= =?UTF-8?q?=EC=9E=85=20=EB=B0=94=ED=85=80=20=EC=8B=9C=ED=8A=B8=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../component/button/TerningBasicButton.kt | 3 +- core/src/main/res/values/strings.xml | 3 - .../feature/onboarding/signin/SignInRoute.kt | 4 +- .../onboarding/signup/SignUpViewModel.kt | 10 +++ .../signup/component/SignUpBottomSheet.kt | 74 ++++++++++++------- .../src/main/res/drawable/ic_character1.xml | 0 .../src/main/res/drawable/ic_character2.xml | 0 .../src/main/res/drawable/ic_character3.xml | 0 .../src/main/res/drawable/ic_character4.xml | 0 .../src/main/res/drawable/ic_character5.xml | 9 +++ .../src/main/res/drawable/ic_character6.xml | 9 +++ .../res/drawable/ic_selected_character.xml | 0 feature/src/main/res/values/strings.xml | 11 ++- gradle/libs.versions.toml | 1 + 14 files changed, 91 insertions(+), 33 deletions(-) create mode 100644 feature/src/main/java/com/terning/feature/onboarding/signup/SignUpViewModel.kt rename {core => feature}/src/main/res/drawable/ic_character1.xml (100%) rename {core => feature}/src/main/res/drawable/ic_character2.xml (100%) rename {core => feature}/src/main/res/drawable/ic_character3.xml (100%) rename {core => feature}/src/main/res/drawable/ic_character4.xml (100%) create mode 100644 feature/src/main/res/drawable/ic_character5.xml create mode 100644 feature/src/main/res/drawable/ic_character6.xml rename {core => feature}/src/main/res/drawable/ic_selected_character.xml (100%) diff --git a/core/src/main/java/com/terning/core/designsystem/component/button/TerningBasicButton.kt b/core/src/main/java/com/terning/core/designsystem/component/button/TerningBasicButton.kt index 4da897a1d..ed923e9bd 100644 --- a/core/src/main/java/com/terning/core/designsystem/component/button/TerningBasicButton.kt +++ b/core/src/main/java/com/terning/core/designsystem/component/button/TerningBasicButton.kt @@ -3,6 +3,7 @@ package com.terning.core.designsystem.component.button import androidx.annotation.StringRes import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.interaction.collectIsPressedAsState +import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.material.ripple.LocalRippleTheme @@ -46,6 +47,7 @@ fun TerningBasicButton( CompositionLocalProvider(LocalRippleTheme provides NoRippleTheme) { Button( + contentPadding = PaddingValues(paddingVertical), modifier = modifier.fillMaxWidth(), interactionSource = interactionSource, enabled = isEnabled, @@ -61,7 +63,6 @@ fun TerningBasicButton( Text( text = stringResource(id = text), style = style, - modifier = modifier.padding(vertical = paddingVertical) ) } } diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml index fc0204cbd..a60fd53c1 100644 --- a/core/src/main/res/values/strings.xml +++ b/core/src/main/res/values/strings.xml @@ -11,7 +11,4 @@ button - - 프로필 이미지 선택 - \ No newline at end of file diff --git a/feature/src/main/java/com/terning/feature/onboarding/signin/SignInRoute.kt b/feature/src/main/java/com/terning/feature/onboarding/signin/SignInRoute.kt index 4cd57100b..467d33fb5 100644 --- a/feature/src/main/java/com/terning/feature/onboarding/signin/SignInRoute.kt +++ b/feature/src/main/java/com/terning/feature/onboarding/signin/SignInRoute.kt @@ -85,10 +85,10 @@ fun SignInScreen( if (showBottomSheet) { SignUpBottomSheet( - onDismiss = { showBottomSheet = false } + onDismiss = { showBottomSheet = false }, + onStartDialog = { showBottomSheet = false } ) } - } } diff --git a/feature/src/main/java/com/terning/feature/onboarding/signup/SignUpViewModel.kt b/feature/src/main/java/com/terning/feature/onboarding/signup/SignUpViewModel.kt new file mode 100644 index 000000000..b0778653a --- /dev/null +++ b/feature/src/main/java/com/terning/feature/onboarding/signup/SignUpViewModel.kt @@ -0,0 +1,10 @@ +package com.terning.feature.onboarding.signup + +import androidx.lifecycle.ViewModel +import dagger.hilt.android.lifecycle.HiltViewModel +import javax.inject.Inject + +@HiltViewModel +class SignUpViewModel @Inject constructor() : ViewModel(){ + +} \ No newline at end of file diff --git a/feature/src/main/java/com/terning/feature/onboarding/signup/component/SignUpBottomSheet.kt b/feature/src/main/java/com/terning/feature/onboarding/signup/component/SignUpBottomSheet.kt index 498312c0f..12516384b 100644 --- a/feature/src/main/java/com/terning/feature/onboarding/signup/component/SignUpBottomSheet.kt +++ b/feature/src/main/java/com/terning/feature/onboarding/signup/component/SignUpBottomSheet.kt @@ -1,40 +1,61 @@ package com.terning.feature.onboarding.signup.component import androidx.compose.foundation.Image +import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size +import androidx.compose.foundation.lazy.grid.GridCells +import androidx.compose.foundation.lazy.grid.LazyVerticalGrid +import androidx.compose.foundation.lazy.grid.items import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue -import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.unit.dp -import com.terning.core.R +import androidx.compose.ui.unit.sp import com.terning.core.designsystem.component.bottomsheet.TerningBasicBottomSheet +import com.terning.core.designsystem.component.button.RoundButton import com.terning.core.designsystem.theme.TerningTheme import com.terning.core.extension.noRippleClickable +import com.terning.feature.R @Composable fun SignUpBottomSheet( modifier: Modifier = Modifier, - onDismiss: () -> Unit + onDismiss: () -> Unit, + onStartDialog: () -> Unit ) { TerningBasicBottomSheet( content = { Column { Text( - text = stringResource(id = R.string.bottom_sheet_title), + text = stringResource(id = R.string.sign_up_bottom_sheet_title), style = TerningTheme.typography.title2, - modifier = modifier.padding(start = 28.dp) + modifier = modifier + .padding( + start = 28.dp, + bottom = 25.dp + ), ) RadioButtonGroup() + Spacer(modifier = modifier.padding(bottom = 24.dp)) + RoundButton( + style = TerningTheme.typography.button0, + paddingVertical = 19.dp, + cornerRadius = 10.dp, + text = R.string.sign_up_dialog_start, + onButtonClick = { onStartDialog() }, + modifier = modifier.padding(horizontal = 24.dp) + ) + Spacer(modifier = modifier.padding(bottom = 36.dp)) } }, onDismissRequest = { onDismiss() } @@ -42,33 +63,36 @@ fun SignUpBottomSheet( } @Composable -fun RadioButtonGroup() { +fun RadioButtonGroup( + modifier: Modifier = Modifier +) { val options = listOf( R.drawable.ic_character1, R.drawable.ic_character2, R.drawable.ic_character3, - R.drawable.ic_character4 + R.drawable.ic_character4, + R.drawable.ic_character5, + R.drawable.ic_character6 ) var selectedOption by rememberSaveable { mutableIntStateOf(options[0]) } - Column { - options.forEach { option -> - Row( - modifier = Modifier - .padding(horizontal = 28.dp, vertical = 8.dp), - verticalAlignment = Alignment.CenterVertically - ) { - Image( - painter = painterResource(id = if (option == selectedOption) R.drawable.ic_selected_character else option), - contentDescription = null, - modifier = Modifier - .size(100.dp) - .noRippleClickable { - selectedOption = option - } - ) - } + LazyVerticalGrid( + columns = GridCells.Fixed(3), + verticalArrangement = Arrangement.spacedBy(20.dp), + modifier = modifier + .padding(horizontal = 20.dp) + ) { + items(options) { option -> + Image( + painter = painterResource(id = if (option == selectedOption) R.drawable.ic_selected_character else option), + contentDescription = stringResource(id = R.string.sign_up_bottom_sheet_description), + modifier = modifier + .size(76.dp) + .noRippleClickable { + selectedOption = option + } + ) } } } diff --git a/core/src/main/res/drawable/ic_character1.xml b/feature/src/main/res/drawable/ic_character1.xml similarity index 100% rename from core/src/main/res/drawable/ic_character1.xml rename to feature/src/main/res/drawable/ic_character1.xml diff --git a/core/src/main/res/drawable/ic_character2.xml b/feature/src/main/res/drawable/ic_character2.xml similarity index 100% rename from core/src/main/res/drawable/ic_character2.xml rename to feature/src/main/res/drawable/ic_character2.xml diff --git a/core/src/main/res/drawable/ic_character3.xml b/feature/src/main/res/drawable/ic_character3.xml similarity index 100% rename from core/src/main/res/drawable/ic_character3.xml rename to feature/src/main/res/drawable/ic_character3.xml diff --git a/core/src/main/res/drawable/ic_character4.xml b/feature/src/main/res/drawable/ic_character4.xml similarity index 100% rename from core/src/main/res/drawable/ic_character4.xml rename to feature/src/main/res/drawable/ic_character4.xml diff --git a/feature/src/main/res/drawable/ic_character5.xml b/feature/src/main/res/drawable/ic_character5.xml new file mode 100644 index 000000000..e7a473ec6 --- /dev/null +++ b/feature/src/main/res/drawable/ic_character5.xml @@ -0,0 +1,9 @@ + + + diff --git a/feature/src/main/res/drawable/ic_character6.xml b/feature/src/main/res/drawable/ic_character6.xml new file mode 100644 index 000000000..e7a473ec6 --- /dev/null +++ b/feature/src/main/res/drawable/ic_character6.xml @@ -0,0 +1,9 @@ + + + diff --git a/core/src/main/res/drawable/ic_selected_character.xml b/feature/src/main/res/drawable/ic_selected_character.xml similarity index 100% rename from core/src/main/res/drawable/ic_selected_character.xml rename to feature/src/main/res/drawable/ic_selected_character.xml diff --git a/feature/src/main/res/values/strings.xml b/feature/src/main/res/values/strings.xml index 2247cdd3a..a9f7c75b8 100644 --- a/feature/src/main/res/values/strings.xml +++ b/feature/src/main/res/values/strings.xml @@ -5,6 +5,7 @@ 서버통신 성공 서버통신 실패 + 캘린더 탐색 @@ -15,16 +16,22 @@ 카카오톡 로그인에 실패했습니다 로그인을 취소하였습니다 - + + 프로필 이미지 선택 + 회원가입 바텀시트 + 저장하기 + + 이름을 입력해주세요 12자리 이내, 문자/숫자 가능, 특수문자/기호 입력불가 이름에 특수문자는 입력할 수 없어요 이용 가능한 이름이에요 - + 관심있는 인턴 공고 키워드를 검색해보세요 + diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 398f4beb6..86c865a76 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -27,6 +27,7 @@ androidxComposeCompiler = "1.5.14" androidxComposeMaterial3 = "1.2.1" composeNavigation = "2.8.0-beta04" composeSavable = "1.4.3" +composeFlowRow = "0.30.0" ## Hilt hilt = "2.48.1" From e97ade3bc75ae72443619b6536356c3ca59eee54 Mon Sep 17 00:00:00 2001 From: LEE YOU BIN Date: Wed, 10 Jul 2024 06:24:02 +0900 Subject: [PATCH 05/10] =?UTF-8?q?[FEAT/#27]=20=EC=BA=90=EB=A6=AD=ED=84=B0?= =?UTF-8?q?=20=EB=B2=84=ED=8A=BC=20=ED=81=AC=EA=B8=B0=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../signup/component/SignUpBottomSheet.kt | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/feature/src/main/java/com/terning/feature/onboarding/signup/component/SignUpBottomSheet.kt b/feature/src/main/java/com/terning/feature/onboarding/signup/component/SignUpBottomSheet.kt index 12516384b..9c38c6f95 100644 --- a/feature/src/main/java/com/terning/feature/onboarding/signup/component/SignUpBottomSheet.kt +++ b/feature/src/main/java/com/terning/feature/onboarding/signup/component/SignUpBottomSheet.kt @@ -4,6 +4,7 @@ import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.aspectRatio import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.grid.GridCells @@ -18,9 +19,7 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource -import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.unit.dp -import androidx.compose.ui.unit.sp import com.terning.core.designsystem.component.bottomsheet.TerningBasicBottomSheet import com.terning.core.designsystem.component.button.RoundButton import com.terning.core.designsystem.theme.TerningTheme @@ -80,15 +79,19 @@ fun RadioButtonGroup( LazyVerticalGrid( columns = GridCells.Fixed(3), verticalArrangement = Arrangement.spacedBy(20.dp), + horizontalArrangement = Arrangement.spacedBy(24.dp), modifier = modifier - .padding(horizontal = 20.dp) + .padding(horizontal = 42.dp) ) { items(options) { option -> Image( - painter = painterResource(id = if (option == selectedOption) R.drawable.ic_selected_character else option), + painter = painterResource( + id = if (option == selectedOption) R.drawable.ic_selected_character + else option + ), contentDescription = stringResource(id = R.string.sign_up_bottom_sheet_description), modifier = modifier - .size(76.dp) + .aspectRatio(1f) .noRippleClickable { selectedOption = option } From 109d375cb735c7d23da7ef489a66db4acc6deda9 Mon Sep 17 00:00:00 2001 From: LEE YOU BIN Date: Wed, 10 Jul 2024 06:58:43 +0900 Subject: [PATCH 06/10] =?UTF-8?q?[FEAT/#27]=20=EA=B8=B0=EB=B3=B8=20Theme?= =?UTF-8?q?=20->=20white?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../component/bottomsheet/TerningBasicBottomSheet.kt | 6 +++++- .../main/java/com/terning/core/designsystem/theme/Theme.kt | 2 +- .../com/terning/feature/onboarding/signin/SignInRoute.kt | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/com/terning/core/designsystem/component/bottomsheet/TerningBasicBottomSheet.kt b/core/src/main/java/com/terning/core/designsystem/component/bottomsheet/TerningBasicBottomSheet.kt index d13bda70d..c922054a6 100644 --- a/core/src/main/java/com/terning/core/designsystem/component/bottomsheet/TerningBasicBottomSheet.kt +++ b/core/src/main/java/com/terning/core/designsystem/component/bottomsheet/TerningBasicBottomSheet.kt @@ -1,13 +1,16 @@ package com.terning.core.designsystem.component.bottomsheet +import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ModalBottomSheet import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier @OptIn(ExperimentalMaterial3Api::class) @Composable fun TerningBasicBottomSheet( + modifier: Modifier = Modifier, content: @Composable () -> Unit, onDismissRequest: () -> Unit ) { @@ -17,7 +20,8 @@ fun TerningBasicBottomSheet( onDismissRequest = { onDismissRequest() }, - sheetState = sheetState + sheetState = sheetState, + modifier = modifier.navigationBarsPadding() ) { content() } diff --git a/core/src/main/java/com/terning/core/designsystem/theme/Theme.kt b/core/src/main/java/com/terning/core/designsystem/theme/Theme.kt index e7bea86a3..52025584b 100644 --- a/core/src/main/java/com/terning/core/designsystem/theme/Theme.kt +++ b/core/src/main/java/com/terning/core/designsystem/theme/Theme.kt @@ -9,7 +9,7 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.staticCompositionLocalOf private val LightColorScheme = lightColorScheme( - primary = TerningMain, + primary = White, ) private val LocalTerningTypography = staticCompositionLocalOf { diff --git a/feature/src/main/java/com/terning/feature/onboarding/signin/SignInRoute.kt b/feature/src/main/java/com/terning/feature/onboarding/signin/SignInRoute.kt index 467d33fb5..0354262a4 100644 --- a/feature/src/main/java/com/terning/feature/onboarding/signin/SignInRoute.kt +++ b/feature/src/main/java/com/terning/feature/onboarding/signin/SignInRoute.kt @@ -86,7 +86,7 @@ fun SignInScreen( if (showBottomSheet) { SignUpBottomSheet( onDismiss = { showBottomSheet = false }, - onStartDialog = { showBottomSheet = false } + onStartDialog = { showBottomSheet = false }, ) } } From 4217e3ed1cd356a4a0ff8752018052852e2bbd64 Mon Sep 17 00:00:00 2001 From: LEE YOU BIN Date: Wed, 10 Jul 2024 07:17:43 +0900 Subject: [PATCH 07/10] =?UTF-8?q?[FEAT/#27]=20BaseResponse=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/terning/data/dto/BaseResponse.kt | 6 ++---- .../feature/onboarding/signin/SignInRoute.kt | 15 +-------------- .../signup/component/SignUpBottomSheet.kt | 3 +-- 3 files changed, 4 insertions(+), 20 deletions(-) diff --git a/data/src/main/java/com/terning/data/dto/BaseResponse.kt b/data/src/main/java/com/terning/data/dto/BaseResponse.kt index 0de489ff1..a47d7bce9 100644 --- a/data/src/main/java/com/terning/data/dto/BaseResponse.kt +++ b/data/src/main/java/com/terning/data/dto/BaseResponse.kt @@ -7,10 +7,8 @@ import kotlinx.serialization.Serializable data class BaseResponse( @SerialName("status") val status: Int, - @SerialName("code") - val code: String, @SerialName("message") val message: String, - @SerialName("data") - val data: T, + @SerialName("result") + val result: T, ) diff --git a/feature/src/main/java/com/terning/feature/onboarding/signin/SignInRoute.kt b/feature/src/main/java/com/terning/feature/onboarding/signin/SignInRoute.kt index 0354262a4..c1c6a22c7 100644 --- a/feature/src/main/java/com/terning/feature/onboarding/signin/SignInRoute.kt +++ b/feature/src/main/java/com/terning/feature/onboarding/signin/SignInRoute.kt @@ -9,9 +9,6 @@ import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext @@ -29,7 +26,6 @@ import com.terning.core.extension.toast import com.terning.feature.R import com.terning.feature.home.navigation.navigateHome import com.terning.feature.onboarding.signin.component.KakaoButton -import com.terning.feature.onboarding.signup.component.SignUpBottomSheet @Composable fun SignInRoute( @@ -60,7 +56,6 @@ fun SignInScreen( modifier: Modifier = Modifier, onSignInClick: () -> Unit = {}, ) { - var showBottomSheet by remember { mutableStateOf(false) } Column( modifier = modifier @@ -77,18 +72,10 @@ fun SignInScreen( KakaoButton( title = stringResource(id = R.string.sign_in_kakao_button), onSignInClick = { - //onSignInClick() - showBottomSheet = true + onSignInClick() }, modifier = modifier.padding(horizontal = 20.dp) ) - - if (showBottomSheet) { - SignUpBottomSheet( - onDismiss = { showBottomSheet = false }, - onStartDialog = { showBottomSheet = false }, - ) - } } } diff --git a/feature/src/main/java/com/terning/feature/onboarding/signup/component/SignUpBottomSheet.kt b/feature/src/main/java/com/terning/feature/onboarding/signup/component/SignUpBottomSheet.kt index 9c38c6f95..1cd62a4be 100644 --- a/feature/src/main/java/com/terning/feature/onboarding/signup/component/SignUpBottomSheet.kt +++ b/feature/src/main/java/com/terning/feature/onboarding/signup/component/SignUpBottomSheet.kt @@ -6,7 +6,6 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.aspectRatio import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.grid.GridCells import androidx.compose.foundation.lazy.grid.LazyVerticalGrid import androidx.compose.foundation.lazy.grid.items @@ -54,7 +53,7 @@ fun SignUpBottomSheet( onButtonClick = { onStartDialog() }, modifier = modifier.padding(horizontal = 24.dp) ) - Spacer(modifier = modifier.padding(bottom = 36.dp)) + Spacer(modifier = modifier.padding(bottom = 15.dp)) } }, onDismissRequest = { onDismiss() } From 994bb001f021d28a8ade9486e96509dd337a121d Mon Sep 17 00:00:00 2001 From: LEE YOU BIN Date: Wed, 10 Jul 2024 07:34:57 +0900 Subject: [PATCH 08/10] =?UTF-8?q?[FEAT/#27]=20BaseResponse=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/src/main/java/com/terning/core/designsystem/theme/Theme.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/com/terning/core/designsystem/theme/Theme.kt b/core/src/main/java/com/terning/core/designsystem/theme/Theme.kt index 52025584b..e7bea86a3 100644 --- a/core/src/main/java/com/terning/core/designsystem/theme/Theme.kt +++ b/core/src/main/java/com/terning/core/designsystem/theme/Theme.kt @@ -9,7 +9,7 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.staticCompositionLocalOf private val LightColorScheme = lightColorScheme( - primary = White, + primary = TerningMain, ) private val LocalTerningTypography = staticCompositionLocalOf { From 1c06823e8e51e8ecce191a79f04bb37e39f236fd Mon Sep 17 00:00:00 2001 From: LEE YOU BIN Date: Wed, 10 Jul 2024 07:39:55 +0900 Subject: [PATCH 09/10] =?UTF-8?q?[FEAT/#27]=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/src/main/java/com/terning/core/designsystem/theme/Theme.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/com/terning/core/designsystem/theme/Theme.kt b/core/src/main/java/com/terning/core/designsystem/theme/Theme.kt index e7bea86a3..52025584b 100644 --- a/core/src/main/java/com/terning/core/designsystem/theme/Theme.kt +++ b/core/src/main/java/com/terning/core/designsystem/theme/Theme.kt @@ -9,7 +9,7 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.staticCompositionLocalOf private val LightColorScheme = lightColorScheme( - primary = TerningMain, + primary = White, ) private val LocalTerningTypography = staticCompositionLocalOf { From 4aa98567e0a45b5ade26ede27a66f2833e7507dd Mon Sep 17 00:00:00 2001 From: LEE YOU BIN Date: Wed, 10 Jul 2024 17:01:39 +0900 Subject: [PATCH 10/10] =?UTF-8?q?[FEAT/#27]=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/src/main/java/com/terning/core/designsystem/theme/Theme.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/com/terning/core/designsystem/theme/Theme.kt b/core/src/main/java/com/terning/core/designsystem/theme/Theme.kt index 52025584b..e7bea86a3 100644 --- a/core/src/main/java/com/terning/core/designsystem/theme/Theme.kt +++ b/core/src/main/java/com/terning/core/designsystem/theme/Theme.kt @@ -9,7 +9,7 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.staticCompositionLocalOf private val LightColorScheme = lightColorScheme( - primary = White, + primary = TerningMain, ) private val LocalTerningTypography = staticCompositionLocalOf {