diff --git a/app/src/main/java/org/android/bbangzip/presentation/component/card/FriendCard.kt b/app/src/main/java/org/android/bbangzip/presentation/component/card/FriendCard.kt
index ffe1fd77..b9d752a1 100644
--- a/app/src/main/java/org/android/bbangzip/presentation/component/card/FriendCard.kt
+++ b/app/src/main/java/org/android/bbangzip/presentation/component/card/FriendCard.kt
@@ -12,14 +12,17 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
+import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.Icon
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.graphics.vector.ImageVector
import androidx.compose.ui.layout.ContentScale
+import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.res.vectorResource
import androidx.compose.ui.unit.dp
@@ -67,10 +70,15 @@ fun FriendCard(
verticalAlignment = Alignment.CenterVertically,
) {
Image(
- imageVector = ImageVector.vectorResource(id = R.drawable.ic_user_one_default_24),
+ painter = painterResource(id = data.imgSrc),
contentDescription = null,
contentScale = ContentScale.FillBounds,
- modifier = Modifier.size(48.dp),
+ modifier =
+ Modifier.size(48.dp).clip(CircleShape).border(
+ width = 1.dp,
+ color = BbangZipTheme.colors.lineNormal_68645E_22,
+ shape = CircleShape,
+ ),
)
Spacer(modifier = Modifier.width(16.dp))
diff --git a/app/src/main/java/org/android/bbangzip/presentation/model/card/FriendCardModel.kt b/app/src/main/java/org/android/bbangzip/presentation/model/card/FriendCardModel.kt
index 3f7d0b47..61d405f8 100644
--- a/app/src/main/java/org/android/bbangzip/presentation/model/card/FriendCardModel.kt
+++ b/app/src/main/java/org/android/bbangzip/presentation/model/card/FriendCardModel.kt
@@ -1,6 +1,7 @@
package org.android.bbangzip.presentation.model.card
import android.os.Parcelable
+import androidx.annotation.DrawableRes
import kotlinx.parcelize.Parcelize
import org.android.bbangzip.presentation.component.card.BbangZipCardState
@@ -10,4 +11,5 @@ data class FriendCardModel(
val friendName: String,
val imageUrl: String,
val state: BbangZipCardState,
+ @DrawableRes val imgSrc: Int = 0,
) : Parcelable
diff --git a/app/src/main/java/org/android/bbangzip/presentation/ui/friend/FriendContract.kt b/app/src/main/java/org/android/bbangzip/presentation/ui/friend/FriendContract.kt
index e8e8432d..2d919caf 100644
--- a/app/src/main/java/org/android/bbangzip/presentation/ui/friend/FriendContract.kt
+++ b/app/src/main/java/org/android/bbangzip/presentation/ui/friend/FriendContract.kt
@@ -2,6 +2,7 @@ package org.android.bbangzip.presentation.ui.friend
import android.os.Parcelable
import kotlinx.parcelize.Parcelize
+import org.android.bbangzip.R
import org.android.bbangzip.presentation.component.card.BbangZipCardState
import org.android.bbangzip.presentation.model.card.FriendCardModel
import org.android.bbangzip.presentation.type.FriendMenuType
@@ -17,42 +18,49 @@ class FriendContract {
friendName = "이승범",
imageUrl = "https://example.com/alice.jpg",
state = BbangZipCardState.DEFAULT,
+ imgSrc = R.drawable.img_friend_profile_1,
),
FriendCardModel(
friendId = 2,
friendName = "김재민",
imageUrl = "https://example.com/bob.jpg",
state = BbangZipCardState.DEFAULT,
+ imgSrc = R.drawable.img_friend_profile_2,
),
FriendCardModel(
friendId = 3,
friendName = "하지은",
imageUrl = "https://example.com/charlie.jpg",
state = BbangZipCardState.DEFAULT,
+ imgSrc = R.drawable.img_friend_profile_3,
),
FriendCardModel(
friendId = 4,
friendName = "신우연",
imageUrl = "https://example.com/alice.jpg",
state = BbangZipCardState.DEFAULT,
+ imgSrc = R.drawable.img_friend_profile_4,
),
FriendCardModel(
friendId = 5,
friendName = "김재민",
imageUrl = "https://example.com/bob.jpg",
state = BbangZipCardState.DEFAULT,
+ imgSrc = R.drawable.img_friend_profile_1,
),
FriendCardModel(
friendId = 6,
friendName = "하지은",
imageUrl = "https://example.com/charlie.jpg",
state = BbangZipCardState.DEFAULT,
+ imgSrc = R.drawable.img_friend_profile_2,
),
FriendCardModel(
friendId = 7,
friendName = "이승범",
imageUrl = "https://example.com/alice.jpg",
state = BbangZipCardState.DEFAULT,
+ imgSrc = R.drawable.img_friend_profile_3,
),
),
val menuFilterType: FriendMenuType = FriendMenuType.ALL,
diff --git a/app/src/main/java/org/android/bbangzip/presentation/ui/friend/FriendScreen.kt b/app/src/main/java/org/android/bbangzip/presentation/ui/friend/FriendScreen.kt
index ebeee21a..116f28ae 100644
--- a/app/src/main/java/org/android/bbangzip/presentation/ui/friend/FriendScreen.kt
+++ b/app/src/main/java/org/android/bbangzip/presentation/ui/friend/FriendScreen.kt
@@ -124,7 +124,7 @@ fun FriendScreen(
modifier =
Modifier
.fillMaxWidth()
- .padding(24.dp),
+ .padding(bottom = 24.dp, start = 24.dp, end = 24.dp),
) {
Text(
text = stringResource(R.string.friend_boss_count, friendState.friendList.size),
diff --git a/app/src/main/java/org/android/bbangzip/presentation/ui/my/mybadgecategory/MyBadgeCategoryScreen.kt b/app/src/main/java/org/android/bbangzip/presentation/ui/my/mybadgecategory/MyBadgeCategoryScreen.kt
index 11ec9725..86f5ac9d 100644
--- a/app/src/main/java/org/android/bbangzip/presentation/ui/my/mybadgecategory/MyBadgeCategoryScreen.kt
+++ b/app/src/main/java/org/android/bbangzip/presentation/ui/my/mybadgecategory/MyBadgeCategoryScreen.kt
@@ -1,6 +1,7 @@
package org.android.bbangzip.presentation.ui.my.mybadgecategory
import androidx.compose.foundation.ExperimentalFoundationApi
+import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement
@@ -27,6 +28,7 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.platform.LocalConfiguration
+import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
@@ -73,7 +75,7 @@ fun MyBadgeCategoryScreen(
}
item {
- Column(
+ Box(
modifier =
Modifier
.fillMaxWidth()
@@ -82,14 +84,28 @@ fun MyBadgeCategoryScreen(
shape = RoundedCornerShape(bottomEnd = 32.dp, bottomStart = 32.dp),
),
) {
- Text(
- text = stringResource(R.string.badge_category_title, "밍밍"),
- style = BbangZipTheme.typography.heading2Bold,
- color = BbangZipTheme.colors.labelNormal_282119,
+ Image(
+ painter = painterResource(R.drawable.img_mypage_header),
+ contentDescription = null,
modifier =
Modifier
- .padding(start = 24.dp, top = 28.dp, bottom = 48.dp),
+ .fillMaxSize()
+ .aspectRatio(360f / 121f),
)
+ Column(
+ modifier =
+ Modifier
+ .fillMaxWidth(),
+ ) {
+ Text(
+ text = stringResource(R.string.badge_category_title, "밍밍"),
+ style = BbangZipTheme.typography.heading2Bold,
+ color = BbangZipTheme.colors.labelNormal_282119,
+ modifier =
+ Modifier
+ .padding(start = 24.dp, top = 28.dp, bottom = 48.dp),
+ )
+ }
}
Spacer(Modifier.height(48.dp))
diff --git a/app/src/main/java/org/android/bbangzip/presentation/ui/onboarding/onboardingend/OnboardingEndScreen.kt b/app/src/main/java/org/android/bbangzip/presentation/ui/onboarding/onboardingend/OnboardingEndScreen.kt
index e26c00e9..a7ac1aaa 100644
--- a/app/src/main/java/org/android/bbangzip/presentation/ui/onboarding/onboardingend/OnboardingEndScreen.kt
+++ b/app/src/main/java/org/android/bbangzip/presentation/ui/onboarding/onboardingend/OnboardingEndScreen.kt
@@ -4,7 +4,7 @@ import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
-import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.aspectRatio
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
@@ -14,6 +14,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalConfiguration
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
+import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import org.android.bbangzip.R
import org.android.bbangzip.presentation.component.button.BbangZipButton
@@ -30,7 +31,7 @@ fun OnboardingEndScreen(
Column(
modifier =
Modifier
- .fillMaxSize()
+ .fillMaxWidth()
.background(color = BbangZipTheme.colors.backgroundNormal_FFFFFF),
) {
BbangZipBaseTopBar(
@@ -44,23 +45,27 @@ fun OnboardingEndScreen(
Modifier
.fillMaxWidth()
.padding(start = 16.dp, end = 16.dp)
- .padding(top = (LocalConfiguration.current.screenHeightDp * 0.184).dp),
+ .padding(top = (LocalConfiguration.current.screenHeightDp * 0.081).dp),
style = BbangZipTheme.typography.title2Bold,
color = BbangZipTheme.colors.labelNormal_282119,
)
-
- Spacer(modifier = Modifier.weight(1f))
+ Spacer(modifier = Modifier.height(32.dp))
Image(
- painter = painterResource(id = R.drawable.img_login2),
- modifier = Modifier.fillMaxWidth(),
+ painter = painterResource(id = R.drawable.img_onboarding_end),
+ modifier =
+ Modifier
+ .fillMaxWidth()
+ .aspectRatio(8f / 9f),
contentDescription = null,
)
-
- Spacer(modifier = Modifier.height(16.dp))
+ Spacer(modifier = Modifier.weight(1f))
BbangZipButton(
- modifier = Modifier.fillMaxWidth().padding(start = 16.dp, end = 16.dp, bottom = 16.dp),
+ modifier =
+ Modifier
+ .fillMaxWidth()
+ .padding(start = 16.dp, end = 16.dp, bottom = 16.dp),
bbangZipButtonType = BbangZipButtonType.Solid,
bbangZipButtonSize = BbangZipButtonSize.Large,
onClick = { onClickNextBtn() },
@@ -69,3 +74,9 @@ fun OnboardingEndScreen(
)
}
}
+
+@Preview
+@Composable
+private fun OnboardingEndScreenPreview() {
+ OnboardingEndScreen()
+}
diff --git a/app/src/main/java/org/android/bbangzip/presentation/ui/onboarding/onboardingstart/OnboardingStartScreen.kt b/app/src/main/java/org/android/bbangzip/presentation/ui/onboarding/onboardingstart/OnboardingStartScreen.kt
index ba699e35..0f994e1f 100644
--- a/app/src/main/java/org/android/bbangzip/presentation/ui/onboarding/onboardingstart/OnboardingStartScreen.kt
+++ b/app/src/main/java/org/android/bbangzip/presentation/ui/onboarding/onboardingstart/OnboardingStartScreen.kt
@@ -3,6 +3,7 @@ package org.android.bbangzip.presentation.ui.onboarding.onboardingstart
import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.aspectRatio
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
@@ -37,20 +38,23 @@ fun OnboardingStartScreen(
modifier =
Modifier
.fillMaxWidth()
- .padding(top = (LocalConfiguration.current.screenHeightDp * 0.184).dp),
+ .padding(top = (LocalConfiguration.current.screenHeightDp * 0.15).dp),
style = BbangZipTheme.typography.title2Bold,
color = BbangZipTheme.colors.labelNormal_282119,
)
- Spacer(modifier = Modifier.weight(1f))
+ Spacer(modifier = Modifier.height(32.dp))
Image(
painter = painterResource(id = R.drawable.img_onboarding_start),
- modifier = Modifier.fillMaxWidth(),
contentDescription = null,
+ modifier =
+ Modifier
+ .fillMaxWidth()
+ .aspectRatio(8f / 9f),
)
- Spacer(modifier = Modifier.height(16.dp))
+ Spacer(modifier = Modifier.weight(1f))
BbangZipButton(
modifier = Modifier.fillMaxWidth(),
@@ -67,5 +71,6 @@ fun OnboardingStartScreen(
@Composable
private fun OnboardingStartScreenPreview() {
BBANGZIPTheme {
+ OnboardingStartScreen()
}
}
diff --git a/app/src/main/java/org/android/bbangzip/presentation/ui/subject/SubjectScreen.kt b/app/src/main/java/org/android/bbangzip/presentation/ui/subject/SubjectScreen.kt
index cd0b93df..cb77ee14 100644
--- a/app/src/main/java/org/android/bbangzip/presentation/ui/subject/SubjectScreen.kt
+++ b/app/src/main/java/org/android/bbangzip/presentation/ui/subject/SubjectScreen.kt
@@ -1,5 +1,6 @@
package org.android.bbangzip.presentation.ui.subject
+import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
@@ -7,6 +8,7 @@ import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.aspectRatio
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
@@ -21,6 +23,7 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.platform.LocalConfiguration
+import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.res.vectorResource
import androidx.compose.ui.tooling.preview.Preview
@@ -75,6 +78,14 @@ fun SubjectScreen(
.height(backgroundHeight.dp)
.background(color = BbangZipTheme.colors.backgroundAccent_FFDAA0, shape = RoundedCornerShape(bottomStart = 32.dp, bottomEnd = 32.dp)),
) {
+ Image(
+ painter = painterResource(R.drawable.img_subject_header),
+ contentDescription = null,
+ modifier =
+ Modifier
+ .fillMaxSize()
+ .aspectRatio(360f / 220f),
+ )
Row(
modifier =
modifier
@@ -363,7 +374,7 @@ private fun DeleteCardView(
}
}
} else {
- for (i in 0 until subjects.size / 2 + 1) {
+ for (i in 0 until subjects.size / 2) {
Row(
modifier =
Modifier
diff --git a/app/src/main/java/org/android/bbangzip/presentation/ui/subject/subjectdetail/SubjectDetatilScreen.kt b/app/src/main/java/org/android/bbangzip/presentation/ui/subject/subjectdetail/SubjectDetatilScreen.kt
index 76fdf5a7..7ac17fb8 100644
--- a/app/src/main/java/org/android/bbangzip/presentation/ui/subject/subjectdetail/SubjectDetatilScreen.kt
+++ b/app/src/main/java/org/android/bbangzip/presentation/ui/subject/subjectdetail/SubjectDetatilScreen.kt
@@ -1,5 +1,6 @@
package org.android.bbangzip.presentation.ui.subject.subjectdetail
+import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.border
import androidx.compose.foundation.layout.Arrangement
@@ -8,6 +9,7 @@ import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.aspectRatio
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
@@ -32,8 +34,10 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
+import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.platform.LocalConfiguration
+import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.res.vectorResource
import androidx.compose.ui.text.AnnotatedString
@@ -119,9 +123,20 @@ fun SubjectDetailScreen(
.height(backgroundHeight.dp)
.background(
color = BbangZipTheme.colors.backgroundAccent_FFDAA0,
- shape = RoundedCornerShape(bottomStart = 32.dp, bottomEnd = 32.dp),
+ shape = RoundedCornerShape(bottomStart = 40.dp, bottomEnd = 40.dp),
),
) {
+ Image(
+ painter = painterResource(R.drawable.img_subject_detail_header),
+ contentDescription = null,
+ modifier =
+ Modifier
+ .padding(top = 60.dp)
+ .fillMaxSize()
+ .aspectRatio(360f / 172f)
+ .clip(shape = RoundedCornerShape(bottomStart = 40.dp, bottomEnd = 40.dp))
+ .align(Alignment.BottomCenter),
+ )
TwoLineTextWithWordWrap(motivationMessage)
Box(
@@ -560,8 +575,7 @@ fun TwoLineTextWithWordWrap(
modifier =
Modifier
.width(200.dp)
- .padding(top = 92.dp, start = 20.dp)
- .height(56.dp),
+ .padding(top = 92.dp, start = 20.dp),
style = BbangZipTheme.typography.heading2Bold,
onTextLayout = { textLayoutResult ->
if (displayText == null) {
diff --git a/app/src/main/java/org/android/bbangzip/presentation/ui/todo/TodoContract.kt b/app/src/main/java/org/android/bbangzip/presentation/ui/todo/TodoContract.kt
index f69f4141..6a852abc 100644
--- a/app/src/main/java/org/android/bbangzip/presentation/ui/todo/TodoContract.kt
+++ b/app/src/main/java/org/android/bbangzip/presentation/ui/todo/TodoContract.kt
@@ -124,7 +124,7 @@ class TodoContract {
cardState = BbangZipCardState.COMPLETE,
),
),
- val pendingCount: Int = 10,
+ val pendingCount: Int = 1,
val remainingStudyCount: Int = 5,
val completeCount: Int = 5,
val todoFilterBottomSheetState: Boolean = false,
diff --git a/app/src/main/java/org/android/bbangzip/presentation/ui/todo/TodoScreen.kt b/app/src/main/java/org/android/bbangzip/presentation/ui/todo/TodoScreen.kt
index 07aed4ae..2e47ee99 100644
--- a/app/src/main/java/org/android/bbangzip/presentation/ui/todo/TodoScreen.kt
+++ b/app/src/main/java/org/android/bbangzip/presentation/ui/todo/TodoScreen.kt
@@ -1,12 +1,16 @@
package org.android.bbangzip.presentation.ui.todo
+import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
+import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.ColumnScope
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.aspectRatio
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
@@ -15,6 +19,7 @@ import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.layout.wrapContentSize
import androidx.compose.foundation.lazy.LazyColumn
+import androidx.compose.foundation.lazy.itemsIndexed
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.ExperimentalMaterial3Api
@@ -26,8 +31,10 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.platform.LocalConfiguration
+import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.res.vectorResource
+import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import org.android.bbangzip.R
@@ -41,7 +48,7 @@ import org.android.bbangzip.presentation.type.BbangZipButtonSize
import org.android.bbangzip.presentation.type.BbangZipButtonType
import org.android.bbangzip.presentation.type.ToDoFilterType
import org.android.bbangzip.presentation.type.ToDoScreenType
-import org.android.bbangzip.presentation.ui.todo.component.ToDoFilterPickerBottomSheet
+import org.android.bbangzip.presentation.util.modifier.applyFilterOnClick
import org.android.bbangzip.ui.theme.BbangZipTheme
@Composable
@@ -85,7 +92,14 @@ fun TodoScreen(
if (todoState.screenType == ToDoScreenType.EMPTY) {
item {
Column(modifier = modifier.padding(horizontal = 16.dp)) {
- EmptyView()
+ Image(
+ painter = painterResource(id = R.drawable.img_empty_view),
+ contentDescription = null,
+ modifier =
+ Modifier
+ .fillMaxWidth()
+ .aspectRatio(16f / 15f),
+ )
Spacer(modifier = Modifier.height(16.dp))
@@ -249,7 +263,7 @@ fun TodoScreen(
onClickCancelButton = onRevertCompleteBottomSheetDismissButtonClicked,
)
- ToDoFilterPickerBottomSheet(
+ BbangZipToDoFilterPickerBottomSheet(
isBottomSheetVisible = todoState.todoFilterBottomSheetState,
selectedItem = todoState.selectedFilterItem,
onSelectedItemChanged = onFilterBottomSheetItemClicked,
@@ -271,81 +285,102 @@ fun DateMessageCard(
.fillMaxWidth(),
) {
Column(modifier = Modifier.fillMaxWidth()) {
- Column(
+ Box(
Modifier
.background(color = BbangZipTheme.colors.backgroundAccent_FFDAA0, shape = RoundedCornerShape(bottomEnd = 32.dp, bottomStart = 32.dp))
.fillMaxWidth()
- .height(LocalConfiguration.current.screenHeightDp.dp * (172f / 764f))
- .padding(start = 24.dp),
+ .height(LocalConfiguration.current.screenHeightDp.dp * (172f / 800f)),
) {
- Spacer(modifier = Modifier.height(44.dp))
-
- Row(
- verticalAlignment = Alignment.CenterVertically,
- modifier = Modifier.padding(start = 8.dp),
- ) {
- Text(
- text = todayDate[0].toInt().toString(),
- style = BbangZipTheme.typography.title3Bold,
- color = BbangZipTheme.colors.labelNormal_282119,
+ if (pendingCount == 0) {
+ Image(
+ painter = painterResource(R.drawable.img_pending_study_zero),
+ contentDescription = null,
+ modifier =
+ Modifier
+ .fillMaxWidth()
+ .aspectRatio(360f / 172f)
+ .clip(RoundedCornerShape(bottomEnd = 32.dp, bottomStart = 32.dp)),
)
-
- Text(
- text = stringResource(R.string.todo_month_text),
- style = BbangZipTheme.typography.headline1Bold,
- color = BbangZipTheme.colors.labelAlternative_282119_61,
+ } else {
+ Image(
+ painter = painterResource(R.drawable.img_no_peding_study),
+ contentDescription = null,
+ modifier =
+ Modifier
+ .fillMaxWidth()
+ .aspectRatio(360f / 172f),
)
+ }
+ Column(
+ modifier = Modifier.padding(start = 24.dp),
+ ) {
+ Spacer(modifier = Modifier.height(44.dp))
- Spacer(modifier = Modifier.width(8.dp))
+ Row(
+ verticalAlignment = Alignment.CenterVertically,
+ ) {
+ if (pendingCount != 0) Spacer(modifier = Modifier.width(8.dp))
+ Text(
+ text = todayDate[0].toInt().toString(),
+ style = BbangZipTheme.typography.title3Bold,
+ color = BbangZipTheme.colors.labelNormal_282119,
+ )
- Text(
- text = todayDate[1].toInt().toString(),
- style = BbangZipTheme.typography.title3Bold,
- color = BbangZipTheme.colors.labelNormal_282119,
- )
+ Text(
+ text = stringResource(R.string.todo_month_text),
+ style = BbangZipTheme.typography.headline1Bold,
+ color = BbangZipTheme.colors.labelAlternative_282119_61,
+ )
- Text(
- text = stringResource(R.string.todo_day_text),
- style = BbangZipTheme.typography.headline1Bold,
- color = BbangZipTheme.colors.labelAlternative_282119_61,
- )
+ Spacer(modifier = Modifier.width(8.dp))
- Spacer(modifier = Modifier.width(8.dp))
+ Text(
+ text = todayDate[1].toInt().toString(),
+ style = BbangZipTheme.typography.title3Bold,
+ color = BbangZipTheme.colors.labelNormal_282119,
+ )
- Text(
- text = todayDate[2],
- style = BbangZipTheme.typography.body1Bold,
- color = BbangZipTheme.colors.labelNormal_282119,
- )
- }
+ Text(
+ text = stringResource(R.string.todo_day_text),
+ style = BbangZipTheme.typography.headline1Bold,
+ color = BbangZipTheme.colors.labelAlternative_282119_61,
+ )
- Spacer(modifier = modifier.height(8.dp))
+ Spacer(modifier = Modifier.width(8.dp))
- if (pendingCount == 0) {
- Text(
- text = stringResource(R.string.todo_pending_count_text),
- style = BbangZipTheme.typography.headline1Bold,
- color = BbangZipTheme.colors.labelAlternative_282119_61,
- )
+ Text(
+ text = todayDate[2],
+ style = BbangZipTheme.typography.body1Bold,
+ color = BbangZipTheme.colors.labelNormal_282119,
+ )
+ }
- Spacer(modifier = Modifier.height(62.dp))
- } else {
- BbangZipButton(
- bbangZipButtonType = BbangZipButtonType.Outlined,
- bbangZipButtonSize = BbangZipButtonSize.Medium,
- onClick = { onAddPendingStudyButtonClicked() },
- label = String.format(stringResource(R.string.btn_todo_overdue_label), pendingCount),
- trailingIcon = R.drawable.ic_chevronright_thick_small_24,
- modifier = Modifier.wrapContentSize(),
- )
+ Spacer(modifier = modifier.height(8.dp))
+
+ if (pendingCount == 0) {
+ Text(
+ text = stringResource(R.string.todo_pending_count_text),
+ style = BbangZipTheme.typography.headline1Bold,
+ color = BbangZipTheme.colors.labelAlternative_282119_61,
+ )
- Spacer(modifier = Modifier.height(48.dp))
+ Spacer(modifier = Modifier.height(62.dp))
+ } else {
+ BbangZipButton(
+ bbangZipButtonType = BbangZipButtonType.Outlined,
+ bbangZipButtonSize = BbangZipButtonSize.Medium,
+ onClick = { onAddPendingStudyButtonClicked() },
+ label = String.format(stringResource(R.string.btn_todo_overdue_label), pendingCount),
+ trailingIcon = R.drawable.ic_chevronright_thick_small_24,
+ modifier = Modifier.wrapContentSize(),
+ )
+
+ Spacer(modifier = Modifier.height(48.dp))
+ }
}
}
-
Spacer(modifier = Modifier.height(24.dp))
}
-
TopTailBalloon(
text = stringResource(R.string.todo_top_tail_balloon_text),
leadingIcon = {
@@ -455,20 +490,50 @@ fun DeleteAndFilterIcons(
}
}
+@OptIn(ExperimentalMaterial3Api::class)
@Composable
-fun EmptyView(
+fun BbangZipToDoFilterPickerBottomSheet(
+ isBottomSheetVisible: Boolean,
modifier: Modifier = Modifier,
+ title: @Composable (ColumnScope.() -> Unit) = {},
+ selectedItem: ToDoFilterType = ToDoFilterType.RECENT,
+ onSelectedItemChanged: (ToDoFilterType) -> Unit = {},
+ onDismissRequest: () -> Unit = {},
) {
- Box(
- modifier =
- modifier
- .fillMaxWidth()
- .height(328.dp)
- .background(color = BbangZipTheme.colors.backgroundAlternative_F5F5F5, shape = RoundedCornerShape(size = 32.dp)),
- contentAlignment = Alignment.Center,
- ) {
- Text(text = "Empty View")
- }
+ BbangZipBasicModalBottomSheet(
+ modifier = modifier,
+ isBottomSheetVisible = isBottomSheetVisible,
+ onDismissRequest = onDismissRequest,
+ title = { title() },
+ content = {
+ LazyColumn(
+ modifier = Modifier.padding(top = 8.dp, bottom = 24.dp),
+ verticalArrangement = Arrangement.spacedBy(8.dp),
+ horizontalAlignment = Alignment.CenterHorizontally,
+ ) {
+ itemsIndexed(
+ ToDoFilterType.entries,
+ key = { _, item -> item },
+ ) { _, item ->
+ Text(
+ text = item.filter,
+ modifier =
+ Modifier
+ .fillMaxWidth()
+ .applyFilterOnClick { onSelectedItemChanged(item) }
+ .background(
+ color = if (item != selectedItem) BbangZipTheme.colors.staticWhite_FFFFFF else BbangZipTheme.colors.fillStrong_68645E_16,
+ shape = RoundedCornerShape(16.dp),
+ )
+ .padding(vertical = 8.dp),
+ textAlign = TextAlign.Center,
+ style = BbangZipTheme.typography.body1Bold,
+ color = BbangZipTheme.colors.labelNormal_282119,
+ )
+ }
+ }
+ },
+ )
}
@OptIn(ExperimentalMaterial3Api::class)
@@ -698,7 +763,7 @@ fun TodoScreenMockPreview() {
)
TodoScreen(
- todoState = mockTodoStates[0],
+ todoState = mockTodoStates[2],
todayDate = listOf("2025", "01", "18"),
bottomPadding = PaddingValues(),
)
diff --git a/app/src/main/res/drawable/img_empty_view.xml b/app/src/main/res/drawable/img_empty_view.xml
new file mode 100644
index 00000000..f71b1bed
--- /dev/null
+++ b/app/src/main/res/drawable/img_empty_view.xml
@@ -0,0 +1,161 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/img_friend_profile_1.xml b/app/src/main/res/drawable/img_friend_profile_1.xml
new file mode 100644
index 00000000..e89065df
--- /dev/null
+++ b/app/src/main/res/drawable/img_friend_profile_1.xml
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/img_friend_profile_2.xml b/app/src/main/res/drawable/img_friend_profile_2.xml
new file mode 100644
index 00000000..531cc308
--- /dev/null
+++ b/app/src/main/res/drawable/img_friend_profile_2.xml
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/img_friend_profile_3.xml b/app/src/main/res/drawable/img_friend_profile_3.xml
new file mode 100644
index 00000000..22051688
--- /dev/null
+++ b/app/src/main/res/drawable/img_friend_profile_3.xml
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/img_friend_profile_4.xml b/app/src/main/res/drawable/img_friend_profile_4.xml
new file mode 100644
index 00000000..ad76930b
--- /dev/null
+++ b/app/src/main/res/drawable/img_friend_profile_4.xml
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/img_mypage_header.xml b/app/src/main/res/drawable/img_mypage_header.xml
new file mode 100644
index 00000000..9297de8c
--- /dev/null
+++ b/app/src/main/res/drawable/img_mypage_header.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/img_no_peding_study.xml b/app/src/main/res/drawable/img_no_peding_study.xml
new file mode 100644
index 00000000..9b1e344a
--- /dev/null
+++ b/app/src/main/res/drawable/img_no_peding_study.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/img_onboarding_end.xml b/app/src/main/res/drawable/img_onboarding_end.xml
new file mode 100644
index 00000000..0e42a9ae
--- /dev/null
+++ b/app/src/main/res/drawable/img_onboarding_end.xml
@@ -0,0 +1,400 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/img_onboarding_start.png b/app/src/main/res/drawable/img_onboarding_start.png
deleted file mode 100644
index 3084cfbd..00000000
Binary files a/app/src/main/res/drawable/img_onboarding_start.png and /dev/null differ
diff --git a/app/src/main/res/drawable/img_onboarding_start.xml b/app/src/main/res/drawable/img_onboarding_start.xml
new file mode 100644
index 00000000..192ee020
--- /dev/null
+++ b/app/src/main/res/drawable/img_onboarding_start.xml
@@ -0,0 +1,382 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/img_pending_study_zero.xml b/app/src/main/res/drawable/img_pending_study_zero.xml
new file mode 100644
index 00000000..3f26a46c
--- /dev/null
+++ b/app/src/main/res/drawable/img_pending_study_zero.xml
@@ -0,0 +1,134 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/img_subject_detail_header.xml b/app/src/main/res/drawable/img_subject_detail_header.xml
new file mode 100644
index 00000000..be207e01
--- /dev/null
+++ b/app/src/main/res/drawable/img_subject_detail_header.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/img_subject_header.xml b/app/src/main/res/drawable/img_subject_header.xml
new file mode 100644
index 00000000..63175fb3
--- /dev/null
+++ b/app/src/main/res/drawable/img_subject_header.xml
@@ -0,0 +1,607 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+