From 717d13cddcd738540abdf7f821a60b47ea4ffece Mon Sep 17 00:00:00 2001 From: JoGyuBin <128724038+rbqks529@users.noreply.github.com> Date: Mon, 30 Jun 2025 16:47:37 +0900 Subject: [PATCH 1/4] =?UTF-8?q?[UI]=20TopAppBar=20=EC=88=98=EC=A0=95=20(#2?= =?UTF-8?q?5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/myPage/groupPage/GroupPageScreen.kt | 9 +- .../thip/ui/myPage/groupPage/MainTopAppBar.kt | 55 --- .../ui/myPage/groupRoom/GroupRoomScreen.kt | 335 +++++++++--------- .../thip/ui/myPage/myGroup/MyGroupScreen.kt | 66 ++-- 4 files changed, 204 insertions(+), 261 deletions(-) delete mode 100644 app/src/main/java/com/texthip/thip/ui/myPage/groupPage/MainTopAppBar.kt diff --git a/app/src/main/java/com/texthip/thip/ui/myPage/groupPage/GroupPageScreen.kt b/app/src/main/java/com/texthip/thip/ui/myPage/groupPage/GroupPageScreen.kt index 6198c9d8..fb59a1f0 100644 --- a/app/src/main/java/com/texthip/thip/ui/myPage/groupPage/GroupPageScreen.kt +++ b/app/src/main/java/com/texthip/thip/ui/myPage/groupPage/GroupPageScreen.kt @@ -19,7 +19,9 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel import androidx.navigation.NavHostController +import com.texthip.thip.R import com.texthip.thip.ui.common.buttons.FloatingButton +import com.texthip.thip.ui.common.topappbar.LogoTopAppBar import com.texthip.thip.ui.myPage.viewModel.MyPageViewModel import com.texthip.thip.ui.theme.ThipTheme.colors @@ -47,7 +49,12 @@ fun GroupPageScreen( ) { // 상단바 item { - MainTopAppBar() + LogoTopAppBar( + leftIcon = painterResource(R.drawable.ic_done), + hasNotification = false, + onLeftClick = { }, + onRightClick = { } + ) Spacer(Modifier.height(16.dp)) } // 검색창 diff --git a/app/src/main/java/com/texthip/thip/ui/myPage/groupPage/MainTopAppBar.kt b/app/src/main/java/com/texthip/thip/ui/myPage/groupPage/MainTopAppBar.kt deleted file mode 100644 index a11d2e9f..00000000 --- a/app/src/main/java/com/texthip/thip/ui/myPage/groupPage/MainTopAppBar.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.texthip.thip.ui.myPage.groupPage - -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.Spacer -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.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.res.painterResource -import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.unit.dp -import com.texthip.thip.R -import com.texthip.thip.ui.theme.ThipTheme.colors - -@Composable -fun MainTopAppBar() { - Row( - Modifier - .fillMaxWidth() - .padding(horizontal = 16.dp, vertical = 8.dp), - verticalAlignment = Alignment.CenterVertically - ) { - // 로고 (임시) - - Text("THIP!", color = colors.NeonGreen) - - Spacer(Modifier.weight(1f)) - Icon( - painter = painterResource(id = R.drawable.ic_done), - contentDescription = "다 한거", - tint = colors.White, - modifier = Modifier.size(24.dp) - ) - - Spacer(Modifier.width(12.dp)) - Icon( - painter = painterResource(id = R.drawable.ic_notice), - contentDescription = "알림", - tint = colors.White, - modifier = Modifier.size(24.dp) - ) - } -} - -@Preview(showBackground = true, backgroundColor = 0xFF000000, widthDp = 360) -@Composable -fun PreviewMainTopAppBar() { - MainTopAppBar() -} - diff --git a/app/src/main/java/com/texthip/thip/ui/myPage/groupRoom/GroupRoomScreen.kt b/app/src/main/java/com/texthip/thip/ui/myPage/groupRoom/GroupRoomScreen.kt index 0f6a4aac..5a567a77 100644 --- a/app/src/main/java/com/texthip/thip/ui/myPage/groupRoom/GroupRoomScreen.kt +++ b/app/src/main/java/com/texthip/thip/ui/myPage/groupRoom/GroupRoomScreen.kt @@ -29,6 +29,7 @@ import androidx.compose.ui.unit.dp import com.texthip.thip.R import com.texthip.thip.ui.common.cards.CardItemRoomSmall import com.texthip.thip.ui.common.cards.CardRoomBook +import com.texthip.thip.ui.common.topappbar.DefaultTopAppBar import com.texthip.thip.ui.myPage.myGroup.CardItemRoomData import com.texthip.thip.ui.theme.ThipTheme.colors import com.texthip.thip.ui.theme.ThipTheme.typography @@ -41,204 +42,202 @@ fun GroupRoomScreen( onRecommendationClick: (CardItemRoomData) -> Unit = {} ) { Box(Modifier.fillMaxSize()) { - Column( - Modifier - .background(colors.Black) - .fillMaxSize() - .padding(start = 20.dp, end = 20.dp, top = 16.dp) - ) { - // TODO: 배경 이미지 추가 - - Icon( - painter = painterResource(id = R.drawable.ic_arrow_back), - contentDescription = "뒤로가기", - tint = colors.White, - modifier = Modifier - .clickable { - // 뒤로가기 동작 구현 - } + Column { + DefaultTopAppBar( + isRightIconVisible = false, + isTitleVisible = false, + onLeftClick = {}, ) - Spacer(modifier = Modifier.height(36.dp)) - //타이틀 - Row( - verticalAlignment = Alignment.CenterVertically + Column( + Modifier + .background(colors.Black) + .fillMaxSize() + .padding(start = 20.dp, end = 20.dp) ) { - Text( - text = detail.title, - style = typography.bigtitle_b700_s22_h24, - color = colors.White - ) - if (detail.isSecret) { - Spacer(Modifier.width(2.dp)) - Icon( - painter = painterResource(id = R.drawable.ic_lock), - contentDescription = "비밀방", - tint = colors.White - ) - } else { - Spacer(Modifier.width(2.dp)) - Icon( - painter = painterResource(id = R.drawable.ic_unlock), - contentDescription = "오픈방", - tint = colors.White - ) - } - } - Spacer(modifier = Modifier.height(32.dp)) + // TODO: 배경 이미지 추가 + Spacer(modifier = Modifier.height(20.dp)) - //소개글 - Text( - text = stringResource(R.string.groupRoomDesc), - style = typography.menu_sb600_s14_h24, - color = colors.White, - ) - - Text( - text = detail.description, - style = typography.copy_r400_s12_h20, - color = colors.Grey, - modifier = Modifier - .padding(top = 4.dp, bottom = 18.dp) - ) - - - Row( - Modifier.fillMaxWidth(), - verticalAlignment = Alignment.CenterVertically, - horizontalArrangement = Arrangement.SpaceBetween - ) { - //모집 기간 - Column { - Row( - verticalAlignment = Alignment.CenterVertically - ) { - Icon( - painter = painterResource(id = R.drawable.ic_calendar), - contentDescription = "모임 활동기간", - tint = colors.White - ) - Text( - text = stringResource(R.string.groupPeroid), - style = typography.view_m500_s12_h20, - color = colors.White - ) - } - Spacer(Modifier.height(12.dp)) + //타이틀 + Row( + verticalAlignment = Alignment.CenterVertically + ) { Text( - text = detail.period, - style = typography.info_r400_s12, - color = colors.Grey + text = detail.title, + style = typography.bigtitle_b700_s22_h24, + color = colors.White ) - } - - //참여 인원 - Column { - Row( - verticalAlignment = Alignment.CenterVertically - ) { + if (detail.isSecret) { + Spacer(Modifier.width(2.dp)) Icon( - painter = painterResource(id = R.drawable.ic_group), - contentDescription = "참여 중인 독서 메이트", + painter = painterResource(id = R.drawable.ic_lock), + contentDescription = "비밀방", tint = colors.White ) - Text( - text = stringResource(R.string.groupMate), - style = typography.view_m500_s12_h20, - color = colors.White + } else { + Spacer(Modifier.width(2.dp)) + Icon( + painter = painterResource(id = R.drawable.ic_unlock), + contentDescription = "오픈방", + tint = colors.White ) } - Spacer(Modifier.height(12.dp)) - Text( - text = "${detail.members} / ${detail.maxMembers}", - style = typography.info_r400_s12, - color = colors.White - ) } - } + Spacer(modifier = Modifier.height(32.dp)) - Spacer(Modifier.height(16.dp)) - Row( - verticalAlignment = Alignment.CenterVertically - ) { - // 모집 마감/장르 - Box( - Modifier - .background(colors.Grey03, shape = RoundedCornerShape(14.dp)) - .padding(horizontal = 12.dp, vertical = 8.dp) + //소개글 + Text( + text = stringResource(R.string.groupRoomDesc), + style = typography.menu_sb600_s14_h24, + color = colors.White, + ) + + Text( + text = detail.description, + style = typography.copy_r400_s12_h20, + color = colors.Grey, + modifier = Modifier + .padding(top = 4.dp, bottom = 18.dp) + ) + + + Row( + Modifier.fillMaxWidth(), + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.SpaceBetween ) { - Row { - Text( - text = stringResource(R.string.groupRecruiting), - style = typography.info_m500_s12, - color = colors.White - ) + //모집 기간 + Column { + Row( + verticalAlignment = Alignment.CenterVertically + ) { + Icon( + painter = painterResource(id = R.drawable.ic_calendar), + contentDescription = "모임 활동기간", + tint = colors.White + ) + Text( + text = stringResource(R.string.groupPeroid), + style = typography.view_m500_s12_h20, + color = colors.White + ) + } + Spacer(Modifier.height(12.dp)) Text( - text = "${detail.daysLeft}일 남음", - style = typography.info_m500_s12, - color = colors.NeonGreen + text = detail.period, + style = typography.info_r400_s12, + color = colors.Grey ) } - } - Spacer(Modifier.width(12.dp)) - Box( - Modifier - .background(colors.Grey03, shape = RoundedCornerShape(14.dp)) - .padding(horizontal = 12.dp, vertical = 8.dp) - ) { - Row { + //참여 인원 + Column { + Row( + verticalAlignment = Alignment.CenterVertically + ) { + Icon( + painter = painterResource(id = R.drawable.ic_group), + contentDescription = "참여 중인 독서 메이트", + tint = colors.White + ) + Text( + text = stringResource(R.string.groupMate), + style = typography.view_m500_s12_h20, + color = colors.White + ) + } + Spacer(Modifier.height(12.dp)) Text( - text = stringResource(R.string.groupGenre), - style = typography.info_m500_s12, + text = "${detail.members} / ${detail.maxMembers}", + style = typography.info_r400_s12, color = colors.White ) - Text( - text = detail.genre, - style = typography.info_m500_s12, - color = colors.genreColor - ) } + } + Spacer(Modifier.height(16.dp)) + Row( + verticalAlignment = Alignment.CenterVertically + ) { + // 모집 마감/장르 + Box( + Modifier + .background(colors.Grey03, shape = RoundedCornerShape(14.dp)) + .padding(horizontal = 12.dp, vertical = 8.dp) + ) { + Row { + Text( + text = stringResource(R.string.groupRecruiting), + style = typography.info_m500_s12, + color = colors.White + ) + Text( + text = "${detail.daysLeft}일 남음", + style = typography.info_m500_s12, + color = colors.NeonGreen + ) + } + + } + Spacer(Modifier.width(12.dp)) + Box( + Modifier + .background(colors.Grey03, shape = RoundedCornerShape(14.dp)) + .padding(horizontal = 12.dp, vertical = 8.dp) + ) { + Row { + Text( + text = stringResource(R.string.groupGenre), + style = typography.info_m500_s12, + color = colors.White + ) + Text( + text = detail.genre, + style = typography.info_m500_s12, + color = colors.genreColor + ) + } + + } } - } - Spacer(Modifier.height(62.dp)) + Spacer(Modifier.height(62.dp)) - //읽을 책 정보 - CardRoomBook( - title = detail.bookData.title, - author = detail.bookData.author, - publisher = detail.bookData.publisher, - description = detail.bookData.description, - imageRes = detail.bookData.imageRes - ) + //읽을 책 정보 + CardRoomBook( + title = detail.bookData.title, + author = detail.bookData.author, + publisher = detail.bookData.publisher, + description = detail.bookData.description, + imageRes = detail.bookData.imageRes + ) - Spacer(Modifier.height(40.dp)) - Text( - text = stringResource(R.string.groupRecommend), - style = typography.smalltitle_sb600_s18_h24, - color = colors.White - ) - Spacer(Modifier.height(24.dp)) + Spacer(Modifier.height(40.dp)) + Text( + text = stringResource(R.string.groupRecommend), + style = typography.smalltitle_sb600_s18_h24, + color = colors.White + ) + Spacer(Modifier.height(24.dp)) - //추천 모임방 - LazyRow( - horizontalArrangement = Arrangement.spacedBy(20.dp) - ) { - items(detail.recommendations) { rec -> - CardItemRoomSmall( - title = rec.title, - participants = rec.participants, - maxParticipants = rec.maxParticipants, - endDate = rec.endDate, - imageRes = rec.imageRes, - onClick = { onRecommendationClick(rec) } - ) + //추천 모임방 + LazyRow( + horizontalArrangement = Arrangement.spacedBy(20.dp) + ) { + items(detail.recommendations) { rec -> + CardItemRoomSmall( + title = rec.title, + participants = rec.participants, + maxParticipants = rec.maxParticipants, + endDate = rec.endDate, + imageRes = rec.imageRes, + onClick = { onRecommendationClick(rec) } + ) + } } - } - Spacer(Modifier.weight(1f)) + Spacer(Modifier.weight(1f)) + } } // 하단 버튼 diff --git a/app/src/main/java/com/texthip/thip/ui/myPage/myGroup/MyGroupScreen.kt b/app/src/main/java/com/texthip/thip/ui/myPage/myGroup/MyGroupScreen.kt index 575a37f7..23291fc2 100644 --- a/app/src/main/java/com/texthip/thip/ui/myPage/myGroup/MyGroupScreen.kt +++ b/app/src/main/java/com/texthip/thip/ui/myPage/myGroup/MyGroupScreen.kt @@ -29,6 +29,7 @@ import com.texthip.thip.R import com.texthip.thip.ui.theme.ThipTheme.colors import com.texthip.thip.ui.theme.ThipTheme.typography import androidx.compose.foundation.lazy.items +import com.texthip.thip.ui.common.topappbar.DefaultTopAppBar @Composable fun MyGroupScreen( @@ -45,52 +46,43 @@ fun MyGroupScreen( allDataList.filter { it.isRecruiting } } } - Column( Modifier .background(colors.Black) .fillMaxSize() - .padding(horizontal = 20.dp) ) { - Spacer(modifier = Modifier.height(16.dp)) - // 상단 타이틀 - Row( - Modifier.fillMaxWidth(), - verticalAlignment = Alignment.CenterVertically + DefaultTopAppBar( + title = stringResource(R.string.myGroupRoom), + onLeftClick = {}, + ) + Column( + Modifier + .background(colors.Black) + .fillMaxSize() + .padding(horizontal = 20.dp) ) { - Icon( - painter = painterResource(id = R.drawable.ic_arrow_back), - contentDescription = null, - tint = colors.White - ) - Spacer(modifier = Modifier.width(95.dp)) - Text( - text = stringResource(R.string.myGroupRoom), - color = colors.White, - style = typography.bigtitle_b700_s22_h24 - ) - } - Spacer(modifier = Modifier.height(20.dp)) + Spacer(modifier = Modifier.height(20.dp)) - FilterRow(selectedIndex = selectedIndex, onSelect = { selectedIndex = it }) + FilterRow(selectedIndex = selectedIndex, onSelect = { selectedIndex = it }) - Spacer(modifier = Modifier.height(20.dp)) + Spacer(modifier = Modifier.height(20.dp)) - // 리스트 - LazyColumn( - verticalArrangement = Arrangement.spacedBy(20.dp), - modifier = Modifier.fillMaxSize() - ) { - items(filteredList) { item -> - CardItemRoom( - title = item.title, - participants = item.participants, - maxParticipants = item.maxParticipants, - isRecruiting = item.isRecruiting, - endDate = item.endDate, - imageRes = item.imageRes, - onClick = { onCardClick(item) } - ) + // 리스트 + LazyColumn( + verticalArrangement = Arrangement.spacedBy(20.dp), + modifier = Modifier.fillMaxSize() + ) { + items(filteredList) { item -> + CardItemRoom( + title = item.title, + participants = item.participants, + maxParticipants = item.maxParticipants, + isRecruiting = item.isRecruiting, + endDate = item.endDate, + imageRes = item.imageRes, + onClick = { onCardClick(item) } + ) + } } } } From acdbc13aef273ab593cd7545729cc4b30017a04d Mon Sep 17 00:00:00 2001 From: JoGyuBin <128724038+rbqks529@users.noreply.github.com> Date: Mon, 30 Jun 2025 20:57:18 +0900 Subject: [PATCH 2/4] =?UTF-8?q?[Refactor]=20FormTextFieldDefault=EC=97=90?= =?UTF-8?q?=EC=84=9C=20Boolean=20=EA=B0=92=EC=9C=BC=EB=A1=9C=20=EC=95=84?= =?UTF-8?q?=EC=9D=B4=EC=BD=98=EA=B3=BC=20limit=EC=9D=84=20=EA=B5=AC?= =?UTF-8?q?=EB=B6=84=ED=95=A0=20=EC=88=98=20=EC=9E=88=EB=8F=84=EB=A1=9D=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 --- .../ui/common/forms/FormTextFieldDefault.kt | 124 ++++++++++++------ 1 file changed, 85 insertions(+), 39 deletions(-) diff --git a/app/src/main/java/com/texthip/thip/ui/common/forms/FormTextFieldDefault.kt b/app/src/main/java/com/texthip/thip/ui/common/forms/FormTextFieldDefault.kt index 286bb8c8..a04f60ba 100644 --- a/app/src/main/java/com/texthip/thip/ui/common/forms/FormTextFieldDefault.kt +++ b/app/src/main/java/com/texthip/thip/ui/common/forms/FormTextFieldDefault.kt @@ -2,6 +2,9 @@ package com.texthip.thip.ui.common.forms import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.Icon @@ -27,51 +30,81 @@ import com.texthip.thip.ui.theme.ThipTheme.typography @Composable fun FormTextFieldDefault( modifier: Modifier = Modifier, - hint: String + hint: String, + showLimit: Boolean = false, + limit: Int = 10, + showIcon: Boolean = true ) { var text by rememberSaveable { mutableStateOf("") } val myStyle = typography.menu_r400_s14_h24.copy(lineHeight = 14.sp) - OutlinedTextField( - value = text, - onValueChange = { text = it }, - placeholder = { - Text( - text = hint, - color = colors.Grey02, - style = myStyle - ) - }, - textStyle = myStyle, - modifier = modifier.size(width = 320.dp, height = 48.dp), - shape = RoundedCornerShape(12.dp), - colors = TextFieldDefaults.colors( - focusedTextColor = colors.White, - focusedIndicatorColor = Color.Transparent, - unfocusedIndicatorColor = Color.Transparent, - focusedContainerColor = colors.Black, - unfocusedContainerColor = colors.Black, - cursorColor = colors.NeonGreen - ), - trailingIcon = { - if (text.isNotEmpty()) { - Icon( - painter = painterResource(id = R.drawable.ic_x_circle_white), - contentDescription = "Clear text", - modifier = Modifier.clickable { text = "" }, - tint = Color.Unspecified + // 글자수 제한 적용 + val displayText = if (showLimit && text.length > limit) text.substring(0, limit) else text + + Box(modifier = modifier) { + OutlinedTextField( + value = displayText, + onValueChange = { + // 글자수 제한 적용 + text = if (showLimit && it.length > limit) it.substring(0, limit) else it + }, + placeholder = { + Text( + text = hint, + color = colors.Grey02, + style = myStyle ) - } else { - Icon( - painter = painterResource(id = R.drawable.ic_x_circle), - contentDescription = "Clear text" + }, + textStyle = myStyle, + modifier = Modifier + .size(width = 320.dp, height = 48.dp), + shape = RoundedCornerShape(12.dp), + colors = TextFieldDefaults.colors( + focusedTextColor = colors.White, + focusedIndicatorColor = Color.Transparent, + unfocusedIndicatorColor = Color.Transparent, + focusedContainerColor = colors.Black, + unfocusedContainerColor = colors.Black, + cursorColor = colors.NeonGreen + ), + trailingIcon = { + if (showIcon) { + if (text.isNotEmpty()) { + Icon( + painter = painterResource(id = R.drawable.ic_x_circle_white), + contentDescription = "Clear text", + modifier = Modifier.clickable { text = "" }, + tint = Color.Unspecified + ) + } else { + Icon( + painter = painterResource(id = R.drawable.ic_x_circle), + contentDescription = "Clear text" + ) + } + } + }, + singleLine = true + ) + + // 글자수 제한 표시 (오른쪽 상단) + if (showLimit) { + Box( + modifier = Modifier + .align(Alignment.CenterEnd) + .padding(end = 14.dp) + ) { + Text( + text = "${text.length}/$limit", + color = colors.White, + style = typography.info_r400_s12_h24 ) } - }, - singleLine = true - ) + } + } } + @Composable @Preview(showBackground = true, backgroundColor = 0xFF000000, widthDp = 360, heightDp = 200) fun FormTextFieldDefaultPreview() { @@ -79,8 +112,21 @@ fun FormTextFieldDefaultPreview() { modifier = Modifier.size(width = 360.dp, height = 200.dp), contentAlignment = Alignment.Center ) { - FormTextFieldDefault( - hint = "이곳에 텍스트를 입력하세요" - ) + Column { + FormTextFieldDefault( + hint = "이곳에 텍스트를 입력하세요", + showLimit = true, + limit = 20, + showIcon = false + ) + Spacer(modifier = Modifier.padding(vertical = 8.dp)) + + FormTextFieldDefault( + hint = "이곳에 텍스트를 입력하세요", + showLimit = false, + limit = 10, + showIcon = true + ) + } } } \ No newline at end of file From ff0a7d5b1e0167a24e2106015ada269ea5b6ff09 Mon Sep 17 00:00:00 2001 From: JoGyuBin <128724038+rbqks529@users.noreply.github.com> Date: Mon, 30 Jun 2025 21:07:12 +0900 Subject: [PATCH 3/4] =?UTF-8?q?[Refactor]=20NotificationCard=EC=9D=98=20Ba?= =?UTF-8?q?dge=20Text=EB=A5=BC=20=ED=8C=8C=EB=9D=BC=EB=AF=B8=ED=84=B0?= =?UTF-8?q?=EB=A1=9C=20=EB=B0=9B=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../texthip/thip/ui/common/cards/CardAlarm.kt | 32 +++++++++++++++++-- app/src/main/res/values/strings.xml | 1 - 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/texthip/thip/ui/common/cards/CardAlarm.kt b/app/src/main/java/com/texthip/thip/ui/common/cards/CardAlarm.kt index afdeb777..8f367f51 100644 --- a/app/src/main/java/com/texthip/thip/ui/common/cards/CardAlarm.kt +++ b/app/src/main/java/com/texthip/thip/ui/common/cards/CardAlarm.kt @@ -36,6 +36,7 @@ import com.texthip.thip.ui.theme.ThipTheme.typography @Composable fun NotificationCard( modifier: Modifier = Modifier, + badgeText: String, title: String, message: String, timeAgo: String, @@ -65,7 +66,6 @@ fun NotificationCard( // 뱃지 Box( modifier = Modifier - .size(width = 40.dp, height = 24.dp) .clip(RoundedCornerShape(13.dp)) .border( width = 1.dp, @@ -75,7 +75,9 @@ fun NotificationCard( contentAlignment = Alignment.Center ) { Text( - text = stringResource(R.string.group), + modifier = Modifier + .padding(horizontal = 10.dp, vertical = 2.dp), + text = badgeText, color = if (isRead) colors.Grey01 else colors.Grey, style = typography.menu_sb600_s12_h20 ) @@ -149,6 +151,7 @@ fun PreviewNotificationCards() { // 안읽은 알림 NotificationCard( title = "같이 읽기를 시작했어요!", + badgeText = "모임", message = "한줄만 입력이 가능합니다. 한줄만 입력이 가능합니다. 한줄만 입력이 가능합니다.", timeAgo = "12", isRead = isRead @@ -159,10 +162,35 @@ fun PreviewNotificationCards() { // 읽은 알림 NotificationCard( title = "같이 읽기를 시작했어요!", + badgeText = "모임", message = "한줄만 입력이 가능합니다. 한줄만 입력이 가능합니다. 한줄만 입력이 가능합니다.", timeAgo = "12", isRead = true ) + + NotificationCard( + title = "같이 읽기를 시작했어요!", + badgeText = "피드", + message = "한줄만 입력이 가능합니다. 한줄만 입력이 가능합니다. 한줄만 입력이 가능합니다.", + timeAgo = "12", + isRead = false + ) + + NotificationCard( + title = "같이 읽기를 시작했어요!", + badgeText = "좋아요", + message = "한줄만 입력이 가능합니다. 한줄만 입력이 가능합니다. 한줄만 입력이 가능합니다.", + timeAgo = "12", + isRead = isRead + ) + + NotificationCard( + title = "같이 읽기를 시작했어요!", + badgeText = "댓글", + message = "한줄만 입력이 가능합니다. 한줄만 입력이 가능합니다. 한줄만 입력이 가능합니다.", + timeAgo = "12", + isRead = isRead + ) } } \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 83ac96c6..43587275 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -38,7 +38,6 @@ 시간 전 - 모임 변경 From 621e9d8a2d088fdee153b5c4de8f63c8c91b3734 Mon Sep 17 00:00:00 2001 From: JoGyuBin <128724038+rbqks529@users.noreply.github.com> Date: Mon, 30 Jun 2025 22:15:13 +0900 Subject: [PATCH 4/4] =?UTF-8?q?[Refactor]=20CardAlam=20=ED=95=A8=EC=88=98?= =?UTF-8?q?=20=EC=9D=B4=EB=A6=84=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/texthip/thip/ui/common/cards/CardAlarm.kt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/texthip/thip/ui/common/cards/CardAlarm.kt b/app/src/main/java/com/texthip/thip/ui/common/cards/CardAlarm.kt index 8f367f51..a37fce8b 100644 --- a/app/src/main/java/com/texthip/thip/ui/common/cards/CardAlarm.kt +++ b/app/src/main/java/com/texthip/thip/ui/common/cards/CardAlarm.kt @@ -34,7 +34,7 @@ import com.texthip.thip.ui.theme.ThipTheme.typography @Composable -fun NotificationCard( +fun CardAlarm( modifier: Modifier = Modifier, badgeText: String, title: String, @@ -149,7 +149,7 @@ fun PreviewNotificationCards() { verticalArrangement = Arrangement.spacedBy(8.dp) ) { // 안읽은 알림 - NotificationCard( + CardAlarm( title = "같이 읽기를 시작했어요!", badgeText = "모임", message = "한줄만 입력이 가능합니다. 한줄만 입력이 가능합니다. 한줄만 입력이 가능합니다.", @@ -160,7 +160,7 @@ fun PreviewNotificationCards() { } // 읽은 알림 - NotificationCard( + CardAlarm( title = "같이 읽기를 시작했어요!", badgeText = "모임", message = "한줄만 입력이 가능합니다. 한줄만 입력이 가능합니다. 한줄만 입력이 가능합니다.", @@ -168,7 +168,7 @@ fun PreviewNotificationCards() { isRead = true ) - NotificationCard( + CardAlarm( title = "같이 읽기를 시작했어요!", badgeText = "피드", message = "한줄만 입력이 가능합니다. 한줄만 입력이 가능합니다. 한줄만 입력이 가능합니다.", @@ -176,7 +176,7 @@ fun PreviewNotificationCards() { isRead = false ) - NotificationCard( + CardAlarm( title = "같이 읽기를 시작했어요!", badgeText = "좋아요", message = "한줄만 입력이 가능합니다. 한줄만 입력이 가능합니다. 한줄만 입력이 가능합니다.", @@ -184,7 +184,7 @@ fun PreviewNotificationCards() { isRead = isRead ) - NotificationCard( + CardAlarm( title = "같이 읽기를 시작했어요!", badgeText = "댓글", message = "한줄만 입력이 가능합니다. 한줄만 입력이 가능합니다. 한줄만 입력이 가능합니다.",