From d5457247eff3dc89de6d5139075d6d4f906a8bb7 Mon Sep 17 00:00:00 2001 From: moondev03 Date: Fri, 20 Feb 2026 01:07:59 +0900 Subject: [PATCH 1/9] =?UTF-8?q?refactor:=20PrezelButton=20Shape=20?= =?UTF-8?q?=EB=A1=9C=EC=A7=81=20=EB=B0=8F=20=EC=95=84=EC=9D=B4=EC=BD=98=20?= =?UTF-8?q?=EC=B2=98=EB=A6=AC=20=EB=B0=A9=EC=8B=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 버튼 컴포넌트의 렌더링 로직을 개선하고 코드 스타일을 정리했습니다. * 버튼의 모서리 형태를 결정하는 `prezelButtonShape` 함수가 `buttonSize`를 받도록 변경했습니다. * `REGULAR` 사이즈 버튼은 `V8` Shape를, `SMALL` 및 `XSMALL` 사이즈는 `V4` Shape를 적용합니다. * `PrezelButtonIcon` 컴포넌트의 `icon` 파라미터를 Non-null 타입으로 변경하고, `PrezelButton` 내에서 null 체크 후 호출하도록 수정했습니다. * 전반적인 코드 포맷팅을 수정하여 가독성을 개선했습니다. --- .../component/button/PrezelButton.kt | 9 ++++++--- .../component/button/PrezelButtonStyle.kt | 19 +++++++++++++++---- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelButton.kt b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelButton.kt index ede75384..6e079f3d 100644 --- a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelButton.kt +++ b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelButton.kt @@ -34,12 +34,13 @@ fun PrezelButton( val hasIcon = icon != null require(hasText || hasIcon) { "Button은 text 또는 icon 중 하나는 반드시 필요합니다." } val (buttonType, buttonHierarchy, buttonSize, isRounded) = style + val isIconOnly = !hasText Surface( onClick = onClick, modifier = modifier.semantics { role = Role.Button }, enabled = enabled, - shape = prezelButtonShape(isRounded = isRounded), + shape = prezelButtonShape(isIconOnly = isIconOnly, isRounded = isRounded, buttonSize = buttonSize), color = prezelButtonContainerColor(type = buttonType, hierarchy = buttonHierarchy, enabled = enabled), border = prezelButtonBorderStroke(type = buttonType, hierarchy = buttonHierarchy, enabled = enabled), ) { @@ -48,11 +49,13 @@ fun PrezelButton( LocalContentColor provides prezelButtonContentColor(type = buttonType, hierarchy = buttonHierarchy, enabled = enabled), ) { Row( - modifier = Modifier.padding(prezelButtonContentPadding(size = buttonSize, onlyIcon = hasIcon && !hasText)), + modifier = Modifier.padding(prezelButtonContentPadding(size = buttonSize, onlyIcon = isIconOnly)), horizontalArrangement = Arrangement.Center, verticalAlignment = Alignment.CenterVertically, ) { - PrezelButtonIcon(icon = icon, size = buttonSize) + icon?.let { source -> + PrezelButtonIcon(icon = source, size = buttonSize) + } if (!hasText) return@Row if (hasIcon) { diff --git a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelButtonStyle.kt b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelButtonStyle.kt index 6691d930..6ff5ccae 100644 --- a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelButtonStyle.kt +++ b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelButtonStyle.kt @@ -47,11 +47,10 @@ data class PrezelButtonStyle( @Composable internal fun PrezelButtonIcon( - icon: IconSource?, + icon: IconSource, size: PrezelButtonSize, modifier: Modifier = Modifier, ) { - if (icon == null) return Icon( painter = icon.painter(), contentDescription = icon.contentDescription(), @@ -67,9 +66,21 @@ internal fun PrezelButtonIcon( @Composable internal fun prezelButtonShape( + isIconOnly: Boolean, isRounded: Boolean, + buttonSize: PrezelButtonSize, shapes: PrezelShapes = PrezelTheme.shapes, -): Shape = if (isRounded) shapes.V1000 else shapes.V4 +): Shape = + when (isRounded) { + true -> shapes.V1000 + false -> { + when (buttonSize) { + PrezelButtonSize.REGULAR -> shapes.V8 + PrezelButtonSize.SMALL -> if (isIconOnly) shapes.V6 else shapes.V4 + PrezelButtonSize.XSMALL -> shapes.V4 + } + } + } @Composable internal fun prezelButtonBorderStroke( @@ -138,7 +149,7 @@ internal fun prezelButtonContentColor( @Composable internal fun prezelButtonContentPadding( size: PrezelButtonSize, - onlyIcon: Boolean = false, + onlyIcon: Boolean, spacing: PrezelSpacing = PrezelTheme.spacing, ): PaddingValues { if (onlyIcon) return prezelIconButtonContentPadding(size) From 70299d9f254447fcd5628779baecda1e44132335 Mon Sep 17 00:00:00 2001 From: moondev03 Date: Sun, 22 Feb 2026 00:25:28 +0900 Subject: [PATCH 2/9] =?UTF-8?q?chore:=20=EB=8B=A4=ED=81=AC=20=EB=AA=A8?= =?UTF-8?q?=EB=93=9C=20=ED=94=84=EB=A6=AC=EB=B7=B0=20=EB=B9=84=ED=99=9C?= =?UTF-8?q?=EC=84=B1=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 디자인 시스템의 `ThemePreview` 어노테이션에서 다크 모드(`DarkTheme`) 미리보기를 주석 처리하여 비활성화했습니다. --- .../prezel/core/designsystem/preview/ThemePreview.kt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/preview/ThemePreview.kt b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/preview/ThemePreview.kt index f1e87aa1..cf6a59e2 100644 --- a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/preview/ThemePreview.kt +++ b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/preview/ThemePreview.kt @@ -8,9 +8,9 @@ import androidx.compose.ui.tooling.preview.Preview showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_NO, ) -@Preview( - name = "DarkTheme", - showBackground = true, - uiMode = Configuration.UI_MODE_NIGHT_YES, -) +// @Preview( +// name = "DarkTheme", +// showBackground = true, +// uiMode = Configuration.UI_MODE_NIGHT_YES, +// ) annotation class ThemePreview From 0a4838de11d4bd3ff038c028b0a7a9f3f216039b Mon Sep 17 00:00:00 2001 From: moondev03 Date: Sun, 22 Feb 2026 01:13:12 +0900 Subject: [PATCH 3/9] =?UTF-8?q?feat:=20PrezelButtonArea=20=EC=BB=B4?= =?UTF-8?q?=ED=8F=AC=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 --- .../component/button/PrezelButtonArea.kt | 188 ++++++++++++++++++ 1 file changed, 188 insertions(+) create mode 100644 Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelButtonArea.kt diff --git a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelButtonArea.kt b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelButtonArea.kt new file mode 100644 index 00000000..59dba870 --- /dev/null +++ b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelButtonArea.kt @@ -0,0 +1,188 @@ +package com.team.prezel.core.designsystem.component.button + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width +import androidx.compose.runtime.Composable +import androidx.compose.runtime.Immutable +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.unit.dp +import com.team.prezel.core.designsystem.component.PrezelDividerType +import com.team.prezel.core.designsystem.component.PrezelHorizontalDivider +import com.team.prezel.core.designsystem.icon.IconSource +import com.team.prezel.core.designsystem.icon.PrezelIcons +import com.team.prezel.core.designsystem.preview.SectionTitle +import com.team.prezel.core.designsystem.preview.ThemePreview +import com.team.prezel.core.designsystem.theme.PrezelTheme + +@Immutable +data class ButtonAreaButtonSpec( + val icon: IconSource? = null, + val label: String, + val onClick: () -> Unit, +) + +@Composable +fun PrezelButtonArea( + mainButton: ButtonAreaButtonSpec, + subButton: ButtonAreaButtonSpec?, + modifier: Modifier = Modifier, + isVertical: Boolean = true, + showBackground: Boolean = false, + isStrongStrength: Boolean = true, +) { + val buttonAreaModifier = modifier + .background(if (showBackground) PrezelTheme.colors.bgRegular else Color.Transparent) + .padding(PrezelTheme.spacing.V20) + .fillMaxWidth() + + Column { + if (showBackground) { + PrezelHorizontalDivider(type = PrezelDividerType.THICK) + } + if (isVertical) { + ButtonAreaVertical( + modifier = buttonAreaModifier, + mainButton = mainButton, + subButton = subButton, + ) + } else { + ButtonAreaHorizontal( + modifier = buttonAreaModifier, + isStringStrength = isStrongStrength, + mainButton = mainButton, + subButton = subButton, + ) + } + } +} + +@Composable +private fun ButtonAreaVertical( + modifier: Modifier, + mainButton: ButtonAreaButtonSpec, + subButton: ButtonAreaButtonSpec?, +) { + Column(modifier = modifier) { + PrezelButton( + modifier = Modifier.fillMaxWidth(), + text = mainButton.label, + icon = mainButton.icon, + onClick = mainButton.onClick, + style = PrezelButtonStyle(buttonHierarchy = PrezelButtonHierarchy.PRIMARY), + ) + + if (subButton != null) { + Spacer(modifier = Modifier.height(PrezelTheme.spacing.V12)) + PrezelButton( + modifier = Modifier.fillMaxWidth(), + text = subButton.label, + icon = subButton.icon, + onClick = subButton.onClick, + style = PrezelButtonStyle(buttonHierarchy = PrezelButtonHierarchy.SECONDARY), + ) + } + } +} + +@Composable +private fun ButtonAreaHorizontal( + modifier: Modifier, + isStringStrength: Boolean, + mainButton: ButtonAreaButtonSpec, + subButton: ButtonAreaButtonSpec?, +) { + val (mainWeight, subWeight) = if (isStringStrength) { + 107f to 47f + } else { + 1f to 1f + } + + Row(modifier = modifier) { + if (subButton != null) { + PrezelButton( + modifier = Modifier.weight(subWeight), + text = subButton.label, + icon = subButton.icon, + onClick = subButton.onClick, + style = PrezelButtonStyle(buttonHierarchy = PrezelButtonHierarchy.SECONDARY), + ) + Spacer(modifier = Modifier.width(PrezelTheme.spacing.V12)) + } + + PrezelButton( + modifier = Modifier.weight(mainWeight), + text = mainButton.label, + icon = mainButton.icon, + onClick = mainButton.onClick, + style = PrezelButtonStyle(buttonHierarchy = PrezelButtonHierarchy.PRIMARY), + ) + } +} + +@ThemePreview +@Composable +private fun PrezelButtonAreaPreview() { + val mainButton = ButtonAreaButtonSpec( + label = "Main Button", + icon = IconSource(resId = PrezelIcons.Blank), + onClick = {}, + ) + val subButton = ButtonAreaButtonSpec( + label = "Sub", + icon = IconSource(resId = PrezelIcons.Blank), + onClick = {}, + ) + + PrezelTheme { + Column( + modifier = Modifier + .background(PrezelTheme.colors.bgMedium), + verticalArrangement = Arrangement.spacedBy(16.dp), + ) { + SectionTitle("PrezelButtonArea - Vertical") + PrezelButtonArea( + isVertical = false, + isStrongStrength = true, + mainButton = mainButton, + subButton = subButton, + ) + + PrezelButtonArea( + isVertical = false, + isStrongStrength = false, + mainButton = mainButton, + subButton = subButton, + ) + + PrezelButtonArea( + isVertical = false, + isStrongStrength = true, + showBackground = true, + mainButton = mainButton, + subButton = subButton, + ) + + SectionTitle("PrezelButtonArea - Horizontal") + PrezelButtonArea( + isVertical = true, + mainButton = mainButton, + subButton = subButton, + ) + + PrezelButtonArea( + isVertical = true, + showBackground = true, + mainButton = mainButton, + subButton = subButton, + ) + } + } +} From 7624ee86fdb012b32b7f71c535d7792f2e8b258a Mon Sep 17 00:00:00 2001 From: moondev03 Date: Sun, 22 Feb 2026 01:42:54 +0900 Subject: [PATCH 4/9] =?UTF-8?q?style:=20=EB=94=94=EC=9E=90=EC=9D=B8=20?= =?UTF-8?q?=EC=8B=9C=EC=8A=A4=ED=85=9C=20=EC=83=89=EC=83=81=20=ED=86=A0?= =?UTF-8?q?=ED=81=B0=20=EA=B0=92=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 디자인 시스템의 `CoolGray10` 색상 토큰 값을 변경했습니다. * `CoolGray10`의 색상 코드를 `FAFBFC`에서 `F5F6F7`로 수정했습니다. --- .../prezel/core/designsystem/foundation/color/ColorTokens.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/foundation/color/ColorTokens.kt b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/foundation/color/ColorTokens.kt index dbe7f5ff..6dac620d 100644 --- a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/foundation/color/ColorTokens.kt +++ b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/foundation/color/ColorTokens.kt @@ -6,7 +6,7 @@ internal object ColorTokens { val Common0 = Color(0xFFFFFFFF) val Common1000 = Color(0xFF000205) - val CoolGray10 = Color(0xFFFAFBFC) + val CoolGray10 = Color(0xFFF5F6F7) val CoolGray50 = Color(0xFFEBEDF0) val CoolGray100 = Color(0xFFDCDFE3) val CoolGray200 = Color(0xFFC6C9CF) From af214b1f9faf5a4a8c2b1b76025ffd25254fe856 Mon Sep 17 00:00:00 2001 From: moondev03 Date: Sun, 22 Feb 2026 01:43:08 +0900 Subject: [PATCH 5/9] =?UTF-8?q?refactor:=20PrezelButtonArea=20=EC=98=A4?= =?UTF-8?q?=ED=83=80=20=EC=88=98=EC=A0=95=20=EB=B0=8F=20=EB=AF=B8=EB=A6=AC?= =?UTF-8?q?=EB=B3=B4=EA=B8=B0=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `PrezelButtonArea` 컴포넌트 내 파라미터의 오타를 수정하고, 다양한 버튼 조합을 확인할 수 있도록 미리보기 코드를 개선했습니다. * `isStringStrength` 파라미터명을 `isStrongStrength`로 변경했습니다. * 미리보기(`PrezelButtonAreaPreview`)의 세로 및 가로 정렬 버튼 조합과 타이틀을 명확하게 수정했습니다. * 미리보기 내 수직 버튼 그룹의 간격을 `16.dp`에서 `8.dp`로 조정했습니다. --- .../component/button/PrezelButtonArea.kt | 67 +++++++++---------- 1 file changed, 33 insertions(+), 34 deletions(-) diff --git a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelButtonArea.kt b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelButtonArea.kt index 59dba870..4778241f 100644 --- a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelButtonArea.kt +++ b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelButtonArea.kt @@ -56,7 +56,7 @@ fun PrezelButtonArea( } else { ButtonAreaHorizontal( modifier = buttonAreaModifier, - isStringStrength = isStrongStrength, + isStrongStrength = isStrongStrength, mainButton = mainButton, subButton = subButton, ) @@ -95,11 +95,11 @@ private fun ButtonAreaVertical( @Composable private fun ButtonAreaHorizontal( modifier: Modifier, - isStringStrength: Boolean, + isStrongStrength: Boolean, mainButton: ButtonAreaButtonSpec, subButton: ButtonAreaButtonSpec?, ) { - val (mainWeight, subWeight) = if (isStringStrength) { + val (mainWeight, subWeight) = if (isStrongStrength) { 107f to 47f } else { 1f to 1f @@ -129,7 +129,28 @@ private fun ButtonAreaHorizontal( @ThemePreview @Composable -private fun PrezelButtonAreaPreview() { +private fun PrezelButtonAreaVerticalPreview() { + PrezelButtonAreaTypedPreview(title = "Vertical", isVertical = true, isStrongStrength = true) +} + +@ThemePreview +@Composable +private fun PrezelButtonAreaHorizontalStrongPreview() { + PrezelButtonAreaTypedPreview(title = "Horizontal & Strong Strength", isVertical = false, isStrongStrength = true) +} + +@ThemePreview +@Composable +private fun PrezelButtonAreaHorizontalWeakPreview() { + PrezelButtonAreaTypedPreview(title = "Horizontal & Weak Strength", isVertical = false, isStrongStrength = false) +} + +@Composable +private fun PrezelButtonAreaTypedPreview( + title: String, + isVertical: Boolean, + isStrongStrength: Boolean, +) { val mainButton = ButtonAreaButtonSpec( label = "Main Button", icon = IconSource(resId = PrezelIcons.Blank), @@ -143,42 +164,20 @@ private fun PrezelButtonAreaPreview() { PrezelTheme { Column( - modifier = Modifier - .background(PrezelTheme.colors.bgMedium), - verticalArrangement = Arrangement.spacedBy(16.dp), + modifier = Modifier.background(PrezelTheme.colors.bgMedium), + verticalArrangement = Arrangement.spacedBy(8.dp), ) { - SectionTitle("PrezelButtonArea - Vertical") + SectionTitle(title = title) PrezelButtonArea( - isVertical = false, - isStrongStrength = true, + isVertical = isVertical, + isStrongStrength = isStrongStrength, + showBackground = false, mainButton = mainButton, subButton = subButton, ) - - PrezelButtonArea( - isVertical = false, - isStrongStrength = false, - mainButton = mainButton, - subButton = subButton, - ) - - PrezelButtonArea( - isVertical = false, - isStrongStrength = true, - showBackground = true, - mainButton = mainButton, - subButton = subButton, - ) - - SectionTitle("PrezelButtonArea - Horizontal") - PrezelButtonArea( - isVertical = true, - mainButton = mainButton, - subButton = subButton, - ) - PrezelButtonArea( - isVertical = true, + isVertical = isVertical, + isStrongStrength = isStrongStrength, showBackground = true, mainButton = mainButton, subButton = subButton, From 1474878e929a29b964515f7993157af1a15cf15d Mon Sep 17 00:00:00 2001 From: moondev03 Date: Sun, 22 Feb 2026 01:53:01 +0900 Subject: [PATCH 6/9] =?UTF-8?q?refactor:=20PrezelButtonArea=20=EA=B0=80?= =?UTF-8?q?=EC=A4=91=EC=B9=98=20=EB=A1=9C=EC=A7=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `PrezelButtonArea` 컴포넌트의 버튼 가중치(weight) 계산 로직을 개선했습니다. * `isStrongStrength` 값에 따라 하드코딩된 가중치(`107f`, `47f`)를 사용하는 대신, `Modifier.weight(1f)`를 기본으로 사용하도록 변경했습니다. * `subButton`이 있을 경우 `isStrongStrength`가 아닐 때만 `weight(1f)`를 적용하도록 수정하여, 유연한 레이아웃을 구현했습니다. * `mainButton`은 항상 `weight(1f)`를 갖도록 하여 일관성을 유지했습니다. --- .../component/button/PrezelButtonArea.kt | 21 ++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelButtonArea.kt b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelButtonArea.kt index 4778241f..eb4aab66 100644 --- a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelButtonArea.kt +++ b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelButtonArea.kt @@ -99,26 +99,23 @@ private fun ButtonAreaHorizontal( mainButton: ButtonAreaButtonSpec, subButton: ButtonAreaButtonSpec?, ) { - val (mainWeight, subWeight) = if (isStrongStrength) { - 107f to 47f - } else { - 1f to 1f - } - Row(modifier = modifier) { - if (subButton != null) { + val mainModifier = Modifier.weight(1f) + val subModifier = if (isStrongStrength) Modifier else Modifier.weight(1f) + + subButton?.let { button -> PrezelButton( - modifier = Modifier.weight(subWeight), - text = subButton.label, - icon = subButton.icon, - onClick = subButton.onClick, + modifier = subModifier, + text = button.label, + icon = button.icon, + onClick = button.onClick, style = PrezelButtonStyle(buttonHierarchy = PrezelButtonHierarchy.SECONDARY), ) Spacer(modifier = Modifier.width(PrezelTheme.spacing.V12)) } PrezelButton( - modifier = Modifier.weight(mainWeight), + modifier = mainModifier, text = mainButton.label, icon = mainButton.icon, onClick = mainButton.onClick, From b16e5134a0b0cb78f7c6771a9628ffdcdcce43cb Mon Sep 17 00:00:00 2001 From: moondev03 Date: Sun, 22 Feb 2026 01:55:41 +0900 Subject: [PATCH 7/9] =?UTF-8?q?refactor:=20PrezelButtonArea=20=ED=8C=A8?= =?UTF-8?q?=EB=94=A9=20=EA=B0=92=20=EC=BB=A4=EC=8A=A4=ED=85=80=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `PrezelButtonArea` 컴포넌트의 내부 패딩을 조절할 수 있도록 `contentPadding` 파라미터를 추가했습니다. * `PrezelButtonArea` 함수에 `contentPadding` 파라미터(기본값: `V20`)를 추가했습니다. * 기존에 하드코딩 되어있던 `padding(PrezelTheme.spacing.V20)`을 새로운 파라미터 `padding(contentPadding)`으로 교체했습니다. --- .../core/designsystem/component/button/PrezelButtonArea.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelButtonArea.kt b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelButtonArea.kt index eb4aab66..82d51a8f 100644 --- a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelButtonArea.kt +++ b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelButtonArea.kt @@ -3,6 +3,7 @@ package com.team.prezel.core.designsystem.component.button import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement 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.fillMaxWidth @@ -37,10 +38,11 @@ fun PrezelButtonArea( isVertical: Boolean = true, showBackground: Boolean = false, isStrongStrength: Boolean = true, + contentPadding: PaddingValues = PaddingValues(PrezelTheme.spacing.V20), ) { val buttonAreaModifier = modifier .background(if (showBackground) PrezelTheme.colors.bgRegular else Color.Transparent) - .padding(PrezelTheme.spacing.V20) + .padding(contentPadding) .fillMaxWidth() Column { From e28dac45bab3ab6e941fa8294ccfa967dd4d7d62 Mon Sep 17 00:00:00 2001 From: moondev03 Date: Sun, 22 Feb 2026 02:06:53 +0900 Subject: [PATCH 8/9] =?UTF-8?q?feat:=20PrezelButtonArea=EC=97=90=20?= =?UTF-8?q?=EB=B2=84=ED=8A=BC=20=ED=99=9C=EC=84=B1=ED=99=94=20=EC=83=81?= =?UTF-8?q?=ED=83=9C(enabled)=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `PrezelButtonArea` 컴포넌트 내의 각 버튼에 대해 활성화/비활성화 상태를 제어할 수 있는 `enabled` 속성을 추가했습니다. * `ButtonAreaButtonSpec` 데이터 클래스에 `enabled` 필드(기본값: `true`)를 추가했습니다. * `PrezelButtonArea`의 각 레이아웃(`HORIZONTAL`, `VERTICAL`, `STRONG`) 내부 `PrezelButton`에 `enabled` 상태를 전달하도록 수정했습니다. --- .../component/button/PrezelButtonArea.kt | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelButtonArea.kt b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelButtonArea.kt index 82d51a8f..c83468f1 100644 --- a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelButtonArea.kt +++ b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelButtonArea.kt @@ -27,6 +27,7 @@ import com.team.prezel.core.designsystem.theme.PrezelTheme data class ButtonAreaButtonSpec( val icon: IconSource? = null, val label: String, + val enabled: Boolean = true, val onClick: () -> Unit, ) @@ -78,6 +79,7 @@ private fun ButtonAreaVertical( text = mainButton.label, icon = mainButton.icon, onClick = mainButton.onClick, + enabled = mainButton.enabled, style = PrezelButtonStyle(buttonHierarchy = PrezelButtonHierarchy.PRIMARY), ) @@ -88,6 +90,7 @@ private fun ButtonAreaVertical( text = subButton.label, icon = subButton.icon, onClick = subButton.onClick, + enabled = subButton.enabled, style = PrezelButtonStyle(buttonHierarchy = PrezelButtonHierarchy.SECONDARY), ) } @@ -105,12 +108,13 @@ private fun ButtonAreaHorizontal( val mainModifier = Modifier.weight(1f) val subModifier = if (isStrongStrength) Modifier else Modifier.weight(1f) - subButton?.let { button -> + if (subButton != null) { PrezelButton( modifier = subModifier, - text = button.label, - icon = button.icon, - onClick = button.onClick, + text = subButton.label, + icon = subButton.icon, + onClick = subButton.onClick, + enabled = subButton.enabled, style = PrezelButtonStyle(buttonHierarchy = PrezelButtonHierarchy.SECONDARY), ) Spacer(modifier = Modifier.width(PrezelTheme.spacing.V12)) @@ -121,6 +125,7 @@ private fun ButtonAreaHorizontal( text = mainButton.label, icon = mainButton.icon, onClick = mainButton.onClick, + enabled = mainButton.enabled, style = PrezelButtonStyle(buttonHierarchy = PrezelButtonHierarchy.PRIMARY), ) } From 6b20d6e03e7078b418fa936a5393ff2ff52ad600 Mon Sep 17 00:00:00 2001 From: moondev03 Date: Sun, 22 Feb 2026 02:32:08 +0900 Subject: [PATCH 9/9] =?UTF-8?q?refactor:=20PrezelButtonArea=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?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `PrezelButtonArea` 컴포넌트의 배경 및 구분선 처리 로직을 개선하여 구조를 명확하게 변경했습니다. * `Column`을 최상위 컨테이너로 사용하고, `showBackground` 옵션에 따라 배경색과 패딩이 적용된 `contentModifier`를 내부에서만 사용하도록 수정했습니다. * 기존에 `Column` 내부에 있던 구분선(`PrezelHorizontalDivider`)을 `Column`의 자식으로 명시적으로 분리하여 가독성을 높였습니다. * `buttonAreaModifier` 변수명을 `contentModifier`로 변경하여 역할을 더 명확하게 표현했습니다. --- .../component/button/PrezelButtonArea.kt | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelButtonArea.kt b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelButtonArea.kt index c83468f1..cd94db1b 100644 --- a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelButtonArea.kt +++ b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelButtonArea.kt @@ -41,24 +41,23 @@ fun PrezelButtonArea( isStrongStrength: Boolean = true, contentPadding: PaddingValues = PaddingValues(PrezelTheme.spacing.V20), ) { - val buttonAreaModifier = modifier - .background(if (showBackground) PrezelTheme.colors.bgRegular else Color.Transparent) - .padding(contentPadding) - .fillMaxWidth() + Column(modifier = modifier) { + if (showBackground) PrezelHorizontalDivider(type = PrezelDividerType.THICK) + + val contentModifier = Modifier + .background(if (showBackground) PrezelTheme.colors.bgRegular else Color.Transparent) + .padding(contentPadding) + .fillMaxWidth() - Column { - if (showBackground) { - PrezelHorizontalDivider(type = PrezelDividerType.THICK) - } if (isVertical) { ButtonAreaVertical( - modifier = buttonAreaModifier, + modifier = contentModifier, mainButton = mainButton, subButton = subButton, ) } else { ButtonAreaHorizontal( - modifier = buttonAreaModifier, + modifier = contentModifier, isStrongStrength = isStrongStrength, mainButton = mainButton, subButton = subButton,