From 7747274f4af43395df716ac2f6b6ded5bfd7a353 Mon Sep 17 00:00:00 2001 From: Ham BeomJoon Date: Sat, 24 Jan 2026 00:53:56 +0900 Subject: [PATCH 01/17] =?UTF-8?q?fix:=20PrezelAvatar=20=EC=BB=B4=ED=8F=AC?= =?UTF-8?q?=EB=84=8C=ED=8A=B8=20=ED=81=AC=EA=B8=B0=20=EB=B0=8F=20=EC=95=84?= =?UTF-8?q?=EC=9D=B4=EC=BD=98=20=EC=83=89=EC=83=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PrezelAvatar의 크기를 디자인 가이드에 맞춰 상향 조정하고, 기본 아이콘의 색상을 변경했습니다. * Avatar 크기 조정: REGULAR (48dp -> 64dp), SMALL (24dp -> 32dp) * 기본 아이콘(ic_person)의 tint 색상을 `borderMedium`에서 `iconDisabled`로 변경했습니다. --- .../team/prezel/core/designsystem/component/PrezelAvatar.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelAvatar.kt b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelAvatar.kt index ab28bec..ed3e9c0 100644 --- a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelAvatar.kt +++ b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelAvatar.kt @@ -82,8 +82,8 @@ private fun prezelAvatarContainerSize(size: PrezelAvatarSize): Dp = private fun prezelAvatarIconSize(size: PrezelAvatarSize): Dp = when (size) { - PrezelAvatarSize.REGULAR -> 48.dp - PrezelAvatarSize.SMALL -> 24.dp + PrezelAvatarSize.REGULAR -> 64.dp + PrezelAvatarSize.SMALL -> 32.dp } @Composable @@ -105,7 +105,7 @@ private fun DefaultAvatarIcon( painter = painterResource(R.drawable.ic_person), contentDescription = contentDescription, modifier = Modifier.size(prezelAvatarIconSize(size)), - tint = PrezelTheme.colors.borderMedium, + tint = PrezelTheme.colors.iconDisabled, ) } From 5f9e114cb3ec58bb2b59aebd7b385f32a0070038 Mon Sep 17 00:00:00 2001 From: Ham BeomJoon Date: Sat, 24 Jan 2026 01:06:24 +0900 Subject: [PATCH 02/17] =?UTF-8?q?feat:=20=EC=9D=B8=ED=84=B0=EB=84=B7=20?= =?UTF-8?q?=EA=B6=8C=ED=95=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit AndroidManifest.xml에 `android.permission.INTERNET` 권한을 추가했습니다. --- Prezel/app/src/main/AndroidManifest.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Prezel/app/src/main/AndroidManifest.xml b/Prezel/app/src/main/AndroidManifest.xml index 639a913..e4f3541 100644 --- a/Prezel/app/src/main/AndroidManifest.xml +++ b/Prezel/app/src/main/AndroidManifest.xml @@ -1,6 +1,8 @@ + + Date: Sat, 24 Jan 2026 15:52:49 +0900 Subject: [PATCH 03/17] =?UTF-8?q?feat:=20PrezelBadge=20=EC=BB=B4=ED=8F=AC?= =?UTF-8?q?=EB=84=8C=ED=8A=B8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 디자인 시스템에 배지(Badge) 컴포넌트를 새롭게 추가했습니다. * `PrezelBadge` 컴포넌트 및 관련 Preview 구현 * 배지 크기 설정을 위한 `PrezelBadgeSize` (SMALL, REGULAR) 추가 * 배지 상태 제어를 위한 `PrezelBadgeActive`, `PrezelBadgeDisabled` 추가 --- .../component/badge/PrezelBadge.kt | 144 ++++++++++++++++++ .../component/badge/PrezelBadgeSize.kt | 16 ++ 2 files changed, 160 insertions(+) create mode 100644 Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/badge/PrezelBadge.kt create mode 100644 Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/badge/PrezelBadgeSize.kt diff --git a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/badge/PrezelBadge.kt b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/badge/PrezelBadge.kt new file mode 100644 index 0000000..7bd1651 --- /dev/null +++ b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/badge/PrezelBadge.kt @@ -0,0 +1,144 @@ +package com.team.prezel.core.designsystem.component.badge + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +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.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.unit.dp +import com.team.prezel.core.designsystem.foundation.typography.PrezelTextStyles +import com.team.prezel.core.designsystem.preview.ThemePreview +import com.team.prezel.core.designsystem.theme.PrezelTheme + +@Composable +fun PrezelBadge( + modifier: Modifier = Modifier, + text: String? = null, + size: PrezelBadgeSize = PrezelBadgeSize.REGULAR, + active: PrezelBadgeActive = PrezelBadgeActive.OFF, + disabled: PrezelBadgeDisabled = PrezelBadgeDisabled.OFF, +) { + val (backgroundColor, textColor) = badgeColors( + disabled = disabled, + active = active, + ) + + val dimension = when (size) { + PrezelBadgeSize.SMALL -> 8.dp + PrezelBadgeSize.REGULAR -> 20.dp + } + + when (size) { + PrezelBadgeSize.SMALL -> { + Box( + modifier = modifier + .size(dimension) + .background( + color = backgroundColor, + shape = PrezelTheme.shapes.V1000, + ), + ) + } + + PrezelBadgeSize.REGULAR -> { + Box( + contentAlignment = Alignment.Center, + modifier = modifier + .size(dimension) + .background( + color = backgroundColor, + shape = PrezelTheme.shapes.V1000, + ) + .padding(horizontal = 4.dp, vertical = 2.dp), + ) { + if (!text.isNullOrEmpty()) { + Text( + text = text, + color = textColor, + style = PrezelTextStyles.Caption2Regular.toTextStyle(), + ) + } + } + } + } +} + +@Composable +private fun badgeColors( + disabled: PrezelBadgeDisabled, + active: PrezelBadgeActive, +): Pair = + when { + disabled == PrezelBadgeDisabled.ON -> PrezelTheme.colors.bgDisabled to PrezelTheme.colors.textDisabled + active == PrezelBadgeActive.ON -> PrezelTheme.colors.interactiveRegular to PrezelTheme.colors.textLarge + else -> PrezelTheme.colors.solidBlack to PrezelTheme.colors.textLarge + } + +@ThemePreview +@Composable +fun PrezelBadgePreview() { + PrezelTheme { + Column( + modifier = Modifier + .background(PrezelTheme.colors.bgRegular) + .padding(16.dp), + ) { + Row(modifier = Modifier.padding(bottom = 8.dp)) { + PrezelBadge( + size = PrezelBadgeSize.SMALL, + active = PrezelBadgeActive.OFF, + disabled = PrezelBadgeDisabled.OFF, + ) + } + + Row(modifier = Modifier.padding(bottom = 8.dp)) { + PrezelBadge( + size = PrezelBadgeSize.SMALL, + active = PrezelBadgeActive.ON, + disabled = PrezelBadgeDisabled.OFF, + ) + } + + Row(modifier = Modifier.padding(bottom = 8.dp)) { + PrezelBadge( + size = PrezelBadgeSize.SMALL, + active = PrezelBadgeActive.OFF, + disabled = PrezelBadgeDisabled.ON, + ) + } + + Row(modifier = Modifier.padding(bottom = 8.dp)) { + PrezelBadge( + size = PrezelBadgeSize.REGULAR, + text = "0", + active = PrezelBadgeActive.OFF, + disabled = PrezelBadgeDisabled.OFF, + ) + } + + Row(modifier = Modifier.padding(bottom = 8.dp)) { + PrezelBadge( + size = PrezelBadgeSize.REGULAR, + text = "1", + active = PrezelBadgeActive.ON, + disabled = PrezelBadgeDisabled.OFF, + ) + } + + Row(modifier = Modifier.padding(bottom = 8.dp)) { + PrezelBadge( + size = PrezelBadgeSize.REGULAR, + text = "9", + active = PrezelBadgeActive.OFF, + disabled = PrezelBadgeDisabled.ON, + ) + } + } + } +} diff --git a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/badge/PrezelBadgeSize.kt b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/badge/PrezelBadgeSize.kt new file mode 100644 index 0000000..ab7b0da --- /dev/null +++ b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/badge/PrezelBadgeSize.kt @@ -0,0 +1,16 @@ +package com.team.prezel.core.designsystem.component.badge + +enum class PrezelBadgeSize { + SMALL, + REGULAR, +} + +enum class PrezelBadgeActive { + ON, + OFF, +} + +enum class PrezelBadgeDisabled { + ON, + OFF, +} From 3c2febdca4e75c6f082de300e3fe867340018141 Mon Sep 17 00:00:00 2001 From: Ham BeomJoon Date: Sat, 24 Jan 2026 15:54:46 +0900 Subject: [PATCH 04/17] =?UTF-8?q?style:=20PrezelBadge=20=EC=BD=94=EB=93=9C?= =?UTF-8?q?=20=EC=8A=A4=ED=83=80=EC=9D=BC=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `PrezelBadge` 컴포넌트 내 `padding` 메서드 호출 시 불필요한 줄바꿈을 제거하여 체이닝 스타일을 수정했습니다. --- .../prezel/core/designsystem/component/badge/PrezelBadge.kt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/badge/PrezelBadge.kt b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/badge/PrezelBadge.kt index 7bd1651..9cd0b29 100644 --- a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/badge/PrezelBadge.kt +++ b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/badge/PrezelBadge.kt @@ -54,8 +54,7 @@ fun PrezelBadge( .background( color = backgroundColor, shape = PrezelTheme.shapes.V1000, - ) - .padding(horizontal = 4.dp, vertical = 2.dp), + ).padding(horizontal = 4.dp, vertical = 2.dp), ) { if (!text.isNullOrEmpty()) { Text( From 81b694ae91eeff4e58f79e8b270a6feb2f5c992a Mon Sep 17 00:00:00 2001 From: Ham BeomJoon Date: Sat, 24 Jan 2026 16:02:31 +0900 Subject: [PATCH 05/17] =?UTF-8?q?refactor:=20PrezelBadge=20=EC=BB=B4?= =?UTF-8?q?=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EB=82=B4=EB=B6=80=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20=EB=A6=AC=ED=8C=A9=ED=84=B0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PrezelBadge의 크기별 구현을 별도의 private composable 함수로 분리하여 코드 가독성을 개선했습니다. * `PrezelBadgeSize.SMALL` 대응을 위한 `PrezelDotBadge` 분리 * `PrezelBadgeSize.REGULAR` 대응을 위한 `PrezelNumberBadge` 분리 --- .../component/badge/PrezelBadge.kt | 81 ++++++++++++------- 1 file changed, 52 insertions(+), 29 deletions(-) diff --git a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/badge/PrezelBadge.kt b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/badge/PrezelBadge.kt index 9cd0b29..ffec576 100644 --- a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/badge/PrezelBadge.kt +++ b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/badge/PrezelBadge.kt @@ -11,6 +11,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color +import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import com.team.prezel.core.designsystem.foundation.typography.PrezelTextStyles import com.team.prezel.core.designsystem.preview.ThemePreview @@ -29,41 +30,63 @@ fun PrezelBadge( active = active, ) - val dimension = when (size) { + val badgeSize = when (size) { PrezelBadgeSize.SMALL -> 8.dp PrezelBadgeSize.REGULAR -> 20.dp } when (size) { - PrezelBadgeSize.SMALL -> { - Box( - modifier = modifier - .size(dimension) - .background( - color = backgroundColor, - shape = PrezelTheme.shapes.V1000, - ), - ) - } + PrezelBadgeSize.SMALL -> PrezelDotBadge(modifier = modifier, badgeSize = badgeSize, backgroundColor = backgroundColor) - PrezelBadgeSize.REGULAR -> { - Box( - contentAlignment = Alignment.Center, - modifier = modifier - .size(dimension) - .background( - color = backgroundColor, - shape = PrezelTheme.shapes.V1000, - ).padding(horizontal = 4.dp, vertical = 2.dp), - ) { - if (!text.isNullOrEmpty()) { - Text( - text = text, - color = textColor, - style = PrezelTextStyles.Caption2Regular.toTextStyle(), - ) - } - } + PrezelBadgeSize.REGULAR -> PrezelNumberBadge( + modifier = modifier, + badgeSize = badgeSize, + text = text, + backgroundColor = backgroundColor, + textColor = textColor, + ) + } +} + +@Composable +private fun PrezelDotBadge( + modifier: Modifier = Modifier, + badgeSize: Dp, + backgroundColor: Color, +) { + Box( + modifier = modifier + .size(badgeSize) + .background( + color = backgroundColor, + shape = PrezelTheme.shapes.V1000, + ), + ) +} + +@Composable +private fun PrezelNumberBadge( + modifier: Modifier = Modifier, + badgeSize: Dp, + text: String?, + backgroundColor: Color, + textColor: Color, +) { + Box( + contentAlignment = Alignment.Center, + modifier = modifier + .size(badgeSize) + .background( + color = backgroundColor, + shape = PrezelTheme.shapes.V1000, + ).padding(horizontal = 4.dp, vertical = 2.dp), + ) { + if (!text.isNullOrEmpty()) { + Text( + text = text, + color = textColor, + style = PrezelTextStyles.Caption2Regular.toTextStyle(), + ) } } } From b77f6382a1828e5aaf0b6307549371e5b842ccb1 Mon Sep 17 00:00:00 2001 From: Ham BeomJoon Date: Sat, 24 Jan 2026 16:05:25 +0900 Subject: [PATCH 06/17] =?UTF-8?q?refactor:=20PrezelBadge=20=EC=BB=B4?= =?UTF-8?q?=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EA=B5=AC=EC=A1=B0=20=EA=B0=9C?= =?UTF-8?q?=EC=84=A0=20=EB=B0=8F=20=EC=86=8D=EC=84=B1=20=ED=83=80=EC=9E=85?= =?UTF-8?q?=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `PrezelBadge` 컴포넌트의 위치를 이동하고, 불필요한 Enum 타입을 Boolean으로 대체하여 구조를 단순화했습니다. * `PrezelBadge.kt` 위치 변경: `component/badge/` -> `component/` * `PrezelBadgeActive`, `PrezelBadgeDisabled` Enum 삭제 및 `Boolean` 타입으로 변경 * `PrezelBadgeSize` Enum을 `PrezelBadge.kt` 파일 내부로 이동 및 `PrezelBadgeSize.kt` 삭제 * 패키지 경로 변경에 따른 import 문 수정 및 프리뷰 코드 업데이트 --- .../component/{badge => }/PrezelBadge.kt | 43 +++++++++++-------- .../component/badge/PrezelBadgeSize.kt | 16 ------- 2 files changed, 24 insertions(+), 35 deletions(-) rename Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/{badge => }/PrezelBadge.kt (78%) delete mode 100644 Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/badge/PrezelBadgeSize.kt diff --git a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/badge/PrezelBadge.kt b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelBadge.kt similarity index 78% rename from Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/badge/PrezelBadge.kt rename to Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelBadge.kt index ffec576..155505d 100644 --- a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/badge/PrezelBadge.kt +++ b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelBadge.kt @@ -1,4 +1,4 @@ -package com.team.prezel.core.designsystem.component.badge +package com.team.prezel.core.designsystem.component import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box @@ -17,13 +17,18 @@ import com.team.prezel.core.designsystem.foundation.typography.PrezelTextStyles import com.team.prezel.core.designsystem.preview.ThemePreview import com.team.prezel.core.designsystem.theme.PrezelTheme +enum class PrezelBadgeSize { + SMALL, + REGULAR, +} + @Composable fun PrezelBadge( modifier: Modifier = Modifier, text: String? = null, size: PrezelBadgeSize = PrezelBadgeSize.REGULAR, - active: PrezelBadgeActive = PrezelBadgeActive.OFF, - disabled: PrezelBadgeDisabled = PrezelBadgeDisabled.OFF, + active: Boolean = false, + disabled: Boolean = false, ) { val (backgroundColor, textColor) = badgeColors( disabled = disabled, @@ -93,12 +98,12 @@ private fun PrezelNumberBadge( @Composable private fun badgeColors( - disabled: PrezelBadgeDisabled, - active: PrezelBadgeActive, + disabled: Boolean, + active: Boolean, ): Pair = when { - disabled == PrezelBadgeDisabled.ON -> PrezelTheme.colors.bgDisabled to PrezelTheme.colors.textDisabled - active == PrezelBadgeActive.ON -> PrezelTheme.colors.interactiveRegular to PrezelTheme.colors.textLarge + disabled -> PrezelTheme.colors.bgDisabled to PrezelTheme.colors.textDisabled + active -> PrezelTheme.colors.interactiveRegular to PrezelTheme.colors.textLarge else -> PrezelTheme.colors.solidBlack to PrezelTheme.colors.textLarge } @@ -114,24 +119,24 @@ fun PrezelBadgePreview() { Row(modifier = Modifier.padding(bottom = 8.dp)) { PrezelBadge( size = PrezelBadgeSize.SMALL, - active = PrezelBadgeActive.OFF, - disabled = PrezelBadgeDisabled.OFF, + active = false, + disabled = false, ) } Row(modifier = Modifier.padding(bottom = 8.dp)) { PrezelBadge( size = PrezelBadgeSize.SMALL, - active = PrezelBadgeActive.ON, - disabled = PrezelBadgeDisabled.OFF, + active = true, + disabled = false, ) } Row(modifier = Modifier.padding(bottom = 8.dp)) { PrezelBadge( size = PrezelBadgeSize.SMALL, - active = PrezelBadgeActive.OFF, - disabled = PrezelBadgeDisabled.ON, + active = false, + disabled = true, ) } @@ -139,8 +144,8 @@ fun PrezelBadgePreview() { PrezelBadge( size = PrezelBadgeSize.REGULAR, text = "0", - active = PrezelBadgeActive.OFF, - disabled = PrezelBadgeDisabled.OFF, + active = false, + disabled = false, ) } @@ -148,8 +153,8 @@ fun PrezelBadgePreview() { PrezelBadge( size = PrezelBadgeSize.REGULAR, text = "1", - active = PrezelBadgeActive.ON, - disabled = PrezelBadgeDisabled.OFF, + active = true, + disabled = false, ) } @@ -157,8 +162,8 @@ fun PrezelBadgePreview() { PrezelBadge( size = PrezelBadgeSize.REGULAR, text = "9", - active = PrezelBadgeActive.OFF, - disabled = PrezelBadgeDisabled.ON, + active = false, + disabled = true, ) } } diff --git a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/badge/PrezelBadgeSize.kt b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/badge/PrezelBadgeSize.kt deleted file mode 100644 index ab7b0da..0000000 --- a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/badge/PrezelBadgeSize.kt +++ /dev/null @@ -1,16 +0,0 @@ -package com.team.prezel.core.designsystem.component.badge - -enum class PrezelBadgeSize { - SMALL, - REGULAR, -} - -enum class PrezelBadgeActive { - ON, - OFF, -} - -enum class PrezelBadgeDisabled { - ON, - OFF, -} From 701a564f01169b0f4f361b09f2a4dea5c4773fe0 Mon Sep 17 00:00:00 2001 From: Ham BeomJoon Date: Sat, 24 Jan 2026 16:05:56 +0900 Subject: [PATCH 07/17] =?UTF-8?q?chore:=20Detekt=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../prezel/core/designsystem/component/PrezelBadge.kt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelBadge.kt b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelBadge.kt index 155505d..e2c0d93 100644 --- a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelBadge.kt +++ b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelBadge.kt @@ -17,11 +17,6 @@ import com.team.prezel.core.designsystem.foundation.typography.PrezelTextStyles import com.team.prezel.core.designsystem.preview.ThemePreview import com.team.prezel.core.designsystem.theme.PrezelTheme -enum class PrezelBadgeSize { - SMALL, - REGULAR, -} - @Composable fun PrezelBadge( modifier: Modifier = Modifier, @@ -53,6 +48,11 @@ fun PrezelBadge( } } +enum class PrezelBadgeSize { + SMALL, + REGULAR, +} + @Composable private fun PrezelDotBadge( modifier: Modifier = Modifier, From 6ce807281c2e0f54064c09094adde48bc9e4ce00 Mon Sep 17 00:00:00 2001 From: Ham BeomJoon Date: Sat, 24 Jan 2026 16:06:26 +0900 Subject: [PATCH 08/17] =?UTF-8?q?chore:=20preview=20private=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/team/prezel/core/designsystem/component/PrezelBadge.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelBadge.kt b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelBadge.kt index e2c0d93..8a0c2d0 100644 --- a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelBadge.kt +++ b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelBadge.kt @@ -109,7 +109,7 @@ private fun badgeColors( @ThemePreview @Composable -fun PrezelBadgePreview() { +private fun PrezelBadgePreview() { PrezelTheme { Column( modifier = Modifier From b74eabb62a0d1ca3faaa3d72362682934062449f Mon Sep 17 00:00:00 2001 From: Ham BeomJoon Date: Sat, 24 Jan 2026 16:14:12 +0900 Subject: [PATCH 09/17] =?UTF-8?q?feat:=20PrezelBadge=20=ED=94=84=EB=A6=AC?= =?UTF-8?q?=EB=B7=B0=20=EA=B5=AC=EC=A1=B0=20=EA=B0=9C=EC=84=A0=20=EB=B0=8F?= =?UTF-8?q?=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `PrezelBadge`의 프리뷰 코드를 가독성 있게 개선하고, 사이즈별로 프리뷰를 분리했습니다. * `PrezelBadgePreview`를 `PrezelSmallBadgePreview`와 `PrezelRegularBadgePreview`로 분리 * 공통 레이아웃을 위한 `BadgeRowPreview` 컴포넌트 추가 * 프리뷰 내 상태별(Active, Disabled) 비교가 용이하도록 레이아웃 수정 --- .../designsystem/component/PrezelBadge.kt | 107 ++++++++++-------- 1 file changed, 61 insertions(+), 46 deletions(-) diff --git a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelBadge.kt b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelBadge.kt index 8a0c2d0..7dd3014 100644 --- a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelBadge.kt +++ b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelBadge.kt @@ -109,62 +109,77 @@ private fun badgeColors( @ThemePreview @Composable -private fun PrezelBadgePreview() { +private fun PrezelSmallBadgePreview() { PrezelTheme { Column( modifier = Modifier .background(PrezelTheme.colors.bgRegular) .padding(16.dp), ) { - Row(modifier = Modifier.padding(bottom = 8.dp)) { - PrezelBadge( - size = PrezelBadgeSize.SMALL, - active = false, - disabled = false, - ) - } - - Row(modifier = Modifier.padding(bottom = 8.dp)) { - PrezelBadge( - size = PrezelBadgeSize.SMALL, - active = true, - disabled = false, - ) - } + BadgeRowPreview( + title = "Small Badge Active", + badges = listOf( + { PrezelBadge(active = false, size = PrezelBadgeSize.SMALL, disabled = false) }, + { PrezelBadge(active = true, size = PrezelBadgeSize.SMALL, disabled = false) }, + ), + ) - Row(modifier = Modifier.padding(bottom = 8.dp)) { - PrezelBadge( - size = PrezelBadgeSize.SMALL, - active = false, - disabled = true, - ) - } + BadgeRowPreview( + title = "Small Badge Disabled", + badges = listOf( + { PrezelBadge(active = false, size = PrezelBadgeSize.SMALL, disabled = false) }, + { PrezelBadge(active = false, size = PrezelBadgeSize.SMALL, disabled = true) }, + ), + ) + } + } +} - Row(modifier = Modifier.padding(bottom = 8.dp)) { - PrezelBadge( - size = PrezelBadgeSize.REGULAR, - text = "0", - active = false, - disabled = false, - ) - } +@ThemePreview +@Composable +private fun PrezelRegularBadgePreview() { + PrezelTheme { + Column( + modifier = Modifier + .background(PrezelTheme.colors.bgRegular) + .padding(16.dp), + ) { + BadgeRowPreview( + title = "Regular Badge Active", + badges = listOf( + { PrezelBadge(text = "0", active = false, disabled = false) }, + { PrezelBadge(text = "1", active = true, disabled = false) }, + ), + ) - Row(modifier = Modifier.padding(bottom = 8.dp)) { - PrezelBadge( - size = PrezelBadgeSize.REGULAR, - text = "1", - active = true, - disabled = false, - ) - } + BadgeRowPreview( + title = "Regular Badge Disabled", + badges = listOf( + { PrezelBadge(text = "0", active = false, disabled = false) }, + { PrezelBadge(text = "9", active = false, disabled = true) }, + ), + ) + } + } +} - Row(modifier = Modifier.padding(bottom = 8.dp)) { - PrezelBadge( - size = PrezelBadgeSize.REGULAR, - text = "9", - active = false, - disabled = true, - ) +@Composable +private fun BadgeRowPreview( + title: String, + badges: List<@Composable () -> Unit>, +) { + Column(modifier = Modifier.padding(bottom = 16.dp)) { + Text( + text = title, + style = PrezelTextStyles.Caption2Regular.toTextStyle(), + color = PrezelTheme.colors.textLarge, + modifier = Modifier.padding(bottom = 4.dp), + ) + Row { + badges.forEach { badge -> + Row(modifier = Modifier.padding(end = 8.dp)) { + badge() + } } } } From c4218ef0c39893c824471a0045800581a9eb5510 Mon Sep 17 00:00:00 2001 From: Ham BeomJoon Date: Sat, 24 Jan 2026 17:27:39 +0900 Subject: [PATCH 10/17] =?UTF-8?q?refactor:=20PrezelBadge=20=EC=8A=A4?= =?UTF-8?q?=ED=83=80=EC=9D=BC=20=EC=A0=95=EC=9D=98=20=EB=B0=A9=EC=8B=9D=20?= =?UTF-8?q?=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `PrezelBadge` 컴포넌트의 가독성과 유지보수성을 위해 내부 함수명을 변경하고, 하드코딩된 패딩 값을 테마 시스템 기반의 `PaddingValues`로 분리하였습니다. * `badgeColors`를 `prezelBadgeColors`로 이름 변경 * `prezelBadgeContentPadding` 함수를 추가하여 테마의 spacing 시스템(`V4`, `V2`) 적용 * 컴포넌트의 패딩 설정 방식을 `PaddingValues` 사용으로 변경 --- .../core/designsystem/component/PrezelBadge.kt | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelBadge.kt b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelBadge.kt index 7dd3014..7795b1b 100644 --- a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelBadge.kt +++ b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelBadge.kt @@ -3,6 +3,7 @@ package com.team.prezel.core.designsystem.component import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size @@ -13,6 +14,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp +import com.team.prezel.core.designsystem.foundation.number.PrezelSpacing import com.team.prezel.core.designsystem.foundation.typography.PrezelTextStyles import com.team.prezel.core.designsystem.preview.ThemePreview import com.team.prezel.core.designsystem.theme.PrezelTheme @@ -25,7 +27,7 @@ fun PrezelBadge( active: Boolean = false, disabled: Boolean = false, ) { - val (backgroundColor, textColor) = badgeColors( + val (backgroundColor, textColor) = prezelBadgeColors( disabled = disabled, active = active, ) @@ -84,7 +86,7 @@ private fun PrezelNumberBadge( .background( color = backgroundColor, shape = PrezelTheme.shapes.V1000, - ).padding(horizontal = 4.dp, vertical = 2.dp), + ).padding(prezelBadgeContentPadding()), ) { if (!text.isNullOrEmpty()) { Text( @@ -97,7 +99,7 @@ private fun PrezelNumberBadge( } @Composable -private fun badgeColors( +private fun prezelBadgeColors( disabled: Boolean, active: Boolean, ): Pair = @@ -107,6 +109,13 @@ private fun badgeColors( else -> PrezelTheme.colors.solidBlack to PrezelTheme.colors.textLarge } +@Composable +private fun prezelBadgeContentPadding(spacing: PrezelSpacing = PrezelTheme.spacing): PaddingValues = + PaddingValues( + horizontal = spacing.V4, + vertical = spacing.V2, + ) + @ThemePreview @Composable private fun PrezelSmallBadgePreview() { From 21a3df36d89c610ba0c5abc57cab1f3691680dfe Mon Sep 17 00:00:00 2001 From: Ham BeomJoon Date: Sat, 24 Jan 2026 19:02:21 +0900 Subject: [PATCH 11/17] =?UTF-8?q?style:=20PrezelBadge=20=EC=BB=B4=ED=8F=AC?= =?UTF-8?q?=EB=84=8C=ED=8A=B8=20=EC=83=89=EC=83=81=20=EA=B0=92=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 `PrezelBadge`의 활성화 및 기본 상태에 따른 배경색과 텍스트 색상 값을 수정했습니다. * `disabled` 상태의 배경색을 `bgDisabled`에서 `bgLarge`로 변경 * `active` 및 기본 상태의 텍스트 색상을 `textLarge`에서 `PrezelColorScheme.Light.bgRegular`로 변경 --- .../team/prezel/core/designsystem/component/PrezelBadge.kt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelBadge.kt b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelBadge.kt index 7795b1b..013d667 100644 --- a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelBadge.kt +++ b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelBadge.kt @@ -17,6 +17,7 @@ import androidx.compose.ui.unit.dp import com.team.prezel.core.designsystem.foundation.number.PrezelSpacing import com.team.prezel.core.designsystem.foundation.typography.PrezelTextStyles import com.team.prezel.core.designsystem.preview.ThemePreview +import com.team.prezel.core.designsystem.theme.PrezelColorScheme import com.team.prezel.core.designsystem.theme.PrezelTheme @Composable @@ -104,9 +105,9 @@ private fun prezelBadgeColors( active: Boolean, ): Pair = when { - disabled -> PrezelTheme.colors.bgDisabled to PrezelTheme.colors.textDisabled - active -> PrezelTheme.colors.interactiveRegular to PrezelTheme.colors.textLarge - else -> PrezelTheme.colors.solidBlack to PrezelTheme.colors.textLarge + disabled -> PrezelTheme.colors.bgLarge to PrezelTheme.colors.textDisabled + active -> PrezelTheme.colors.interactiveRegular to PrezelColorScheme.Light.bgRegular + else -> PrezelTheme.colors.solidBlack to PrezelColorScheme.Light.bgRegular } @Composable From 952b3b082bdf6aee30d8689ffebc935da7b74d76 Mon Sep 17 00:00:00 2001 From: Ham BeomJoon Date: Sat, 24 Jan 2026 20:22:18 +0900 Subject: [PATCH 12/17] =?UTF-8?q?feat:=20PrezelBadge=20=EC=BB=B4=ED=8F=AC?= =?UTF-8?q?=EB=84=8C=ED=8A=B8=20=EC=9D=B8=ED=84=B0=ED=8E=98=EC=9D=B4?= =?UTF-8?q?=EC=8A=A4=20=EB=B0=8F=20=EB=82=B4=EB=B6=80=20=EA=B5=AC=ED=98=84?= =?UTF-8?q?=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * `PrezelBadge`의 파라미터를 `text` 대신 `count`를 받도록 변경하고 필수로 수정했습니다. * `PrezelBadgeSize` enum의 위치를 파일 상단으로 이동했습니다. * `PrezelDotBadge`에 고정 크기(8.dp)를 적용하고 `badgeSize` 파라미터를 제거했습니다. * `PrezelNumberBadge`에 `defaultMinSize(20.dp)`를 적용하여 가변 텍스트에 대응하도록 수정했습니다. * 배지의 상태별 배경색 및 텍스트 색상 로직을 조정했습니다. * 배지 컴포넌트 변화에 따른 프리뷰 코드를 업데이트했습니다. --- .../designsystem/component/PrezelBadge.kt | 66 ++++++++----------- Prezel/detekt-config.yml | 2 + 2 files changed, 30 insertions(+), 38 deletions(-) diff --git a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelBadge.kt b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelBadge.kt index 013d667..8923131 100644 --- a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelBadge.kt +++ b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelBadge.kt @@ -5,6 +5,7 @@ import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.defaultMinSize import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.material3.Text @@ -12,7 +13,6 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import com.team.prezel.core.designsystem.foundation.number.PrezelSpacing import com.team.prezel.core.designsystem.foundation.typography.PrezelTextStyles @@ -20,12 +20,17 @@ import com.team.prezel.core.designsystem.preview.ThemePreview import com.team.prezel.core.designsystem.theme.PrezelColorScheme import com.team.prezel.core.designsystem.theme.PrezelTheme +enum class PrezelBadgeSize { + SMALL, + REGULAR, +} + @Composable fun PrezelBadge( + active: Boolean, + count: Int, modifier: Modifier = Modifier, - text: String? = null, size: PrezelBadgeSize = PrezelBadgeSize.REGULAR, - active: Boolean = false, disabled: Boolean = false, ) { val (backgroundColor, textColor) = prezelBadgeColors( @@ -33,38 +38,26 @@ fun PrezelBadge( active = active, ) - val badgeSize = when (size) { - PrezelBadgeSize.SMALL -> 8.dp - PrezelBadgeSize.REGULAR -> 20.dp - } - when (size) { - PrezelBadgeSize.SMALL -> PrezelDotBadge(modifier = modifier, badgeSize = badgeSize, backgroundColor = backgroundColor) + PrezelBadgeSize.SMALL -> PrezelDotBadge(modifier = modifier, backgroundColor = backgroundColor) PrezelBadgeSize.REGULAR -> PrezelNumberBadge( modifier = modifier, - badgeSize = badgeSize, - text = text, + count = count, backgroundColor = backgroundColor, textColor = textColor, ) } } -enum class PrezelBadgeSize { - SMALL, - REGULAR, -} - @Composable private fun PrezelDotBadge( modifier: Modifier = Modifier, - badgeSize: Dp, backgroundColor: Color, ) { Box( modifier = modifier - .size(badgeSize) + .size(8.dp) .background( color = backgroundColor, shape = PrezelTheme.shapes.V1000, @@ -74,28 +67,25 @@ private fun PrezelDotBadge( @Composable private fun PrezelNumberBadge( + count: Int, modifier: Modifier = Modifier, - badgeSize: Dp, - text: String?, backgroundColor: Color, textColor: Color, ) { Box( contentAlignment = Alignment.Center, modifier = modifier - .size(badgeSize) + .defaultMinSize(20.dp) .background( color = backgroundColor, shape = PrezelTheme.shapes.V1000, ).padding(prezelBadgeContentPadding()), ) { - if (!text.isNullOrEmpty()) { - Text( - text = text, - color = textColor, - style = PrezelTextStyles.Caption2Regular.toTextStyle(), - ) - } + Text( + text = count.toString(), + color = textColor, + style = PrezelTextStyles.Caption2Regular.toTextStyle(), + ) } } @@ -106,8 +96,8 @@ private fun prezelBadgeColors( ): Pair = when { disabled -> PrezelTheme.colors.bgLarge to PrezelTheme.colors.textDisabled - active -> PrezelTheme.colors.interactiveRegular to PrezelColorScheme.Light.bgRegular - else -> PrezelTheme.colors.solidBlack to PrezelColorScheme.Light.bgRegular + active -> PrezelTheme.colors.interactiveRegular to PrezelColorScheme.Dark.textLarge + else -> PrezelTheme.colors.solidBlack to PrezelColorScheme.Dark.textLarge } @Composable @@ -129,16 +119,16 @@ private fun PrezelSmallBadgePreview() { BadgeRowPreview( title = "Small Badge Active", badges = listOf( - { PrezelBadge(active = false, size = PrezelBadgeSize.SMALL, disabled = false) }, - { PrezelBadge(active = true, size = PrezelBadgeSize.SMALL, disabled = false) }, + { PrezelBadge(active = false, count = 0, size = PrezelBadgeSize.SMALL, disabled = false) }, + { PrezelBadge(active = true, count = 0, size = PrezelBadgeSize.SMALL, disabled = false) }, ), ) BadgeRowPreview( title = "Small Badge Disabled", badges = listOf( - { PrezelBadge(active = false, size = PrezelBadgeSize.SMALL, disabled = false) }, - { PrezelBadge(active = false, size = PrezelBadgeSize.SMALL, disabled = true) }, + { PrezelBadge(active = false, count = 0, size = PrezelBadgeSize.SMALL, disabled = false) }, + { PrezelBadge(active = false, count = 0, size = PrezelBadgeSize.SMALL, disabled = true) }, ), ) } @@ -157,16 +147,16 @@ private fun PrezelRegularBadgePreview() { BadgeRowPreview( title = "Regular Badge Active", badges = listOf( - { PrezelBadge(text = "0", active = false, disabled = false) }, - { PrezelBadge(text = "1", active = true, disabled = false) }, + { PrezelBadge(count = 0, active = false, disabled = false) }, + { PrezelBadge(count = 1, active = true, disabled = false) }, ), ) BadgeRowPreview( title = "Regular Badge Disabled", badges = listOf( - { PrezelBadge(text = "0", active = false, disabled = false) }, - { PrezelBadge(text = "9", active = false, disabled = true) }, + { PrezelBadge(count = 10, active = false, disabled = false) }, + { PrezelBadge(count = 999, active = false, disabled = true) }, ), ) } diff --git a/Prezel/detekt-config.yml b/Prezel/detekt-config.yml index 3f97a7a..4829866 100644 --- a/Prezel/detekt-config.yml +++ b/Prezel/detekt-config.yml @@ -47,6 +47,8 @@ complexity: naming: active: true + MatchingDeclarationName: + active: false FunctionNaming: active: true ignoreAnnotated: From db39f03a18c8659ba92b19b92547b9e58a495188 Mon Sep 17 00:00:00 2001 From: Ham BeomJoon Date: Sat, 24 Jan 2026 20:32:44 +0900 Subject: [PATCH 13/17] =?UTF-8?q?refactor:=20PrezelBadge=20=EC=BB=B4?= =?UTF-8?q?=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EA=B5=AC=EC=A1=B0=20=EB=B0=8F=20?= =?UTF-8?q?=EC=8A=A4=ED=83=80=EC=9D=BC=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - `PrezelDotBadge` 및 `PrezelNumberBadge`의 파라미터 순서를 변경하여 `modifier`를 뒤로 이동했습니다. - `PrezelNumberBadge`의 패딩 설정을 `prezelBadgeContentPadding` 함수 대신 직접 지정하도록 수정했습니다. - 불필요해진 `prezelBadgeContentPadding` 함수를 제거했습니다. --- .../core/designsystem/component/PrezelBadge.kt | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelBadge.kt b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelBadge.kt index 8923131..dafe72c 100644 --- a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelBadge.kt +++ b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelBadge.kt @@ -3,7 +3,6 @@ package com.team.prezel.core.designsystem.component import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.defaultMinSize import androidx.compose.foundation.layout.padding @@ -14,7 +13,6 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp -import com.team.prezel.core.designsystem.foundation.number.PrezelSpacing import com.team.prezel.core.designsystem.foundation.typography.PrezelTextStyles import com.team.prezel.core.designsystem.preview.ThemePreview import com.team.prezel.core.designsystem.theme.PrezelColorScheme @@ -52,8 +50,8 @@ fun PrezelBadge( @Composable private fun PrezelDotBadge( - modifier: Modifier = Modifier, backgroundColor: Color, + modifier: Modifier = Modifier, ) { Box( modifier = modifier @@ -68,9 +66,9 @@ private fun PrezelDotBadge( @Composable private fun PrezelNumberBadge( count: Int, - modifier: Modifier = Modifier, backgroundColor: Color, textColor: Color, + modifier: Modifier = Modifier, ) { Box( contentAlignment = Alignment.Center, @@ -79,7 +77,7 @@ private fun PrezelNumberBadge( .background( color = backgroundColor, shape = PrezelTheme.shapes.V1000, - ).padding(prezelBadgeContentPadding()), + ).padding(horizontal = PrezelTheme.spacing.V4, vertical = PrezelTheme.spacing.V2), ) { Text( text = count.toString(), @@ -100,13 +98,6 @@ private fun prezelBadgeColors( else -> PrezelTheme.colors.solidBlack to PrezelColorScheme.Dark.textLarge } -@Composable -private fun prezelBadgeContentPadding(spacing: PrezelSpacing = PrezelTheme.spacing): PaddingValues = - PaddingValues( - horizontal = spacing.V4, - vertical = spacing.V2, - ) - @ThemePreview @Composable private fun PrezelSmallBadgePreview() { From ce8b7e65e825ff3bb4cc81cacb2dda0b5d179709 Mon Sep 17 00:00:00 2001 From: Ham BeomJoon Date: Sat, 24 Jan 2026 20:38:15 +0900 Subject: [PATCH 14/17] =?UTF-8?q?refactor:=20PrezelBadge=20=ED=94=84?= =?UTF-8?q?=EB=A6=AC=EB=B7=B0=20=EC=BD=94=EB=93=9C=20=EA=B5=AC=EC=A1=B0=20?= =?UTF-8?q?=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `BadgeRowPreview` 컴포넌트의 파라미터 타입을 `List<@Composable () -> Unit>`에서 `RowScope.() -> Unit`으로 변경하여 가독성을 높였습니다. * `BadgeRowPreview`에서 `RowScope`를 사용하도록 수정 * 리스트 순회 방식에서 선언적 방식으로 프리뷰 구성 변경 * `Arrangement.spacedBy`를 사용하여 아이템 간 간격 설정 적용 --- .../designsystem/component/PrezelBadge.kt | 61 ++++++++----------- 1 file changed, 25 insertions(+), 36 deletions(-) diff --git a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelBadge.kt b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelBadge.kt index dafe72c..21da977 100644 --- a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelBadge.kt +++ b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelBadge.kt @@ -1,12 +1,16 @@ package com.team.prezel.core.designsystem.component import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.RowScope +import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.defaultMinSize import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment @@ -107,21 +111,15 @@ private fun PrezelSmallBadgePreview() { .background(PrezelTheme.colors.bgRegular) .padding(16.dp), ) { - BadgeRowPreview( - title = "Small Badge Active", - badges = listOf( - { PrezelBadge(active = false, count = 0, size = PrezelBadgeSize.SMALL, disabled = false) }, - { PrezelBadge(active = true, count = 0, size = PrezelBadgeSize.SMALL, disabled = false) }, - ), - ) + BadgeRowPreview(title = "Small Badge Active") { + PrezelBadge(active = false, count = 0, size = PrezelBadgeSize.SMALL, disabled = false) + PrezelBadge(active = true, count = 0, size = PrezelBadgeSize.SMALL, disabled = false) + } - BadgeRowPreview( - title = "Small Badge Disabled", - badges = listOf( - { PrezelBadge(active = false, count = 0, size = PrezelBadgeSize.SMALL, disabled = false) }, - { PrezelBadge(active = false, count = 0, size = PrezelBadgeSize.SMALL, disabled = true) }, - ), - ) + BadgeRowPreview(title = "Small Badge Disabled") { + PrezelBadge(active = false, count = 0, size = PrezelBadgeSize.SMALL, disabled = false) + PrezelBadge(active = false, count = 0, size = PrezelBadgeSize.SMALL, disabled = true) + } } } } @@ -135,21 +133,15 @@ private fun PrezelRegularBadgePreview() { .background(PrezelTheme.colors.bgRegular) .padding(16.dp), ) { - BadgeRowPreview( - title = "Regular Badge Active", - badges = listOf( - { PrezelBadge(count = 0, active = false, disabled = false) }, - { PrezelBadge(count = 1, active = true, disabled = false) }, - ), - ) + BadgeRowPreview(title = "Regular Badge Active") { + PrezelBadge(count = 0, active = false, disabled = false) + PrezelBadge(count = 1, active = true, disabled = false) + } - BadgeRowPreview( - title = "Regular Badge Disabled", - badges = listOf( - { PrezelBadge(count = 10, active = false, disabled = false) }, - { PrezelBadge(count = 999, active = false, disabled = true) }, - ), - ) + BadgeRowPreview(title = "Regular Badge Disabled") { + PrezelBadge(count = 10, active = false, disabled = false) + PrezelBadge(count = 999, active = false, disabled = true) + } } } } @@ -157,7 +149,7 @@ private fun PrezelRegularBadgePreview() { @Composable private fun BadgeRowPreview( title: String, - badges: List<@Composable () -> Unit>, + content: @Composable RowScope.() -> Unit, ) { Column(modifier = Modifier.padding(bottom = 16.dp)) { Text( @@ -166,12 +158,9 @@ private fun BadgeRowPreview( color = PrezelTheme.colors.textLarge, modifier = Modifier.padding(bottom = 4.dp), ) - Row { - badges.forEach { badge -> - Row(modifier = Modifier.padding(end = 8.dp)) { - badge() - } - } - } + Row( + horizontalArrangement = Arrangement.spacedBy(8.dp), + content = content, + ) } } From 5026ca228c61223d76b81fc07bce219a80c38348 Mon Sep 17 00:00:00 2001 From: Ham BeomJoon Date: Sat, 24 Jan 2026 20:39:33 +0900 Subject: [PATCH 15/17] =?UTF-8?q?chore:=20ktlint=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../team/prezel/core/designsystem/component/PrezelBadge.kt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelBadge.kt b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelBadge.kt index 21da977..e68124c 100644 --- a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelBadge.kt +++ b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelBadge.kt @@ -6,11 +6,9 @@ import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.RowScope -import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.defaultMinSize import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size -import androidx.compose.foundation.layout.width import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment @@ -81,7 +79,8 @@ private fun PrezelNumberBadge( .background( color = backgroundColor, shape = PrezelTheme.shapes.V1000, - ).padding(horizontal = PrezelTheme.spacing.V4, vertical = PrezelTheme.spacing.V2), + ) + .padding(horizontal = PrezelTheme.spacing.V4, vertical = PrezelTheme.spacing.V2), ) { Text( text = count.toString(), From b701ec84d41ee08c60604e0de0ca490d3ccb34e6 Mon Sep 17 00:00:00 2001 From: Ham BeomJoon Date: Sat, 24 Jan 2026 20:41:11 +0900 Subject: [PATCH 16/17] =?UTF-8?q?chore:=20ktlint=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/team/prezel/core/designsystem/component/PrezelBadge.kt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelBadge.kt b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelBadge.kt index e68124c..f42ec09 100644 --- a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelBadge.kt +++ b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelBadge.kt @@ -79,8 +79,7 @@ private fun PrezelNumberBadge( .background( color = backgroundColor, shape = PrezelTheme.shapes.V1000, - ) - .padding(horizontal = PrezelTheme.spacing.V4, vertical = PrezelTheme.spacing.V2), + ).padding(horizontal = PrezelTheme.spacing.V4, vertical = PrezelTheme.spacing.V2), ) { Text( text = count.toString(), From 8a814cf8153e399cfd87585a838751ad532e1025 Mon Sep 17 00:00:00 2001 From: Ham BeomJoon Date: Sat, 24 Jan 2026 20:53:14 +0900 Subject: [PATCH 17/17] =?UTF-8?q?refactor:=20PrezelBadge=20=EC=B5=9C?= =?UTF-8?q?=EC=86=8C=20=ED=81=AC=EA=B8=B0=20=EC=84=A4=EC=A0=95=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 `PrezelBadge` 컴포넌트의 `defaultMinSize` 설정을 가로와 세로 모두 20.dp가 적용되도록 명시적으로 수정했습니다. --- .../com/team/prezel/core/designsystem/component/PrezelBadge.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelBadge.kt b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelBadge.kt index f42ec09..b5ceffc 100644 --- a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelBadge.kt +++ b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/PrezelBadge.kt @@ -75,7 +75,7 @@ private fun PrezelNumberBadge( Box( contentAlignment = Alignment.Center, modifier = modifier - .defaultMinSize(20.dp) + .defaultMinSize(minWidth = 20.dp, minHeight = 20.dp) .background( color = backgroundColor, shape = PrezelTheme.shapes.V1000,