From d5457247eff3dc89de6d5139075d6d4f906a8bb7 Mon Sep 17 00:00:00 2001 From: moondev03 Date: Fri, 20 Feb 2026 01:07:59 +0900 Subject: [PATCH 1/5] =?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/5] =?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 71f41f8c78ccdd7914be68b5006eace1d539423c Mon Sep 17 00:00:00 2001 From: moondev03 Date: Sun, 22 Feb 2026 02:34:20 +0900 Subject: [PATCH 3/5] =?UTF-8?q?refactor:=20PrezelButtonStyle=20=EB=82=B4?= =?UTF-8?q?=20=EB=B3=80=EC=88=98=EB=AA=85=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `PrezelButtonStyle`에서 `PaddingValues`를 생성하는 로직의 `spacing` 변수명을 `padding`으로 변경하여 명확성을 높였습니다. --- .../core/designsystem/component/button/PrezelButtonStyle.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 6ff5ccae..fe45c168 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 @@ -178,4 +178,4 @@ private fun prezelIconButtonContentPadding( PrezelButtonSize.XSMALL -> spacing.V8 PrezelButtonSize.SMALL -> spacing.V10 PrezelButtonSize.REGULAR -> spacing.V14 - }.let { spacing -> PaddingValues(all = spacing) } + }.let { padding -> PaddingValues(all = padding) } From 171cd36c93e987cfeec87669e388327e85d45dc5 Mon Sep 17 00:00:00 2001 From: moondev03 Date: Mon, 23 Feb 2026 08:09:47 +0900 Subject: [PATCH 4/5] =?UTF-8?q?refactor:=20PrezelButton=20=EC=BB=B4?= =?UTF-8?q?=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EB=82=B4=EB=B6=80=20=EB=B3=80?= =?UTF-8?q?=EC=88=98=EB=AA=85=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `PrezelButton` 및 관련 스타일 함수 내에서 아이콘 전용 버튼 여부를 나타내는 파라미터의 명칭을 명확하게 변경했습니다. * `prezelButtonContentPadding` 함수의 `onlyIcon` 파라미터를 `isOnlyIcon`으로 변경했습니다. * `PrezelButton` 컴포저블에서 변경된 파라미터명(`isOnlyIcon`)을 반영했습니다. --- .../prezel/core/designsystem/component/button/PrezelButton.kt | 2 +- .../core/designsystem/component/button/PrezelButtonStyle.kt | 4 ++-- 2 files changed, 3 insertions(+), 3 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 6e079f3d..728600c2 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 @@ -49,7 +49,7 @@ fun PrezelButton( LocalContentColor provides prezelButtonContentColor(type = buttonType, hierarchy = buttonHierarchy, enabled = enabled), ) { Row( - modifier = Modifier.padding(prezelButtonContentPadding(size = buttonSize, onlyIcon = isIconOnly)), + modifier = Modifier.padding(prezelButtonContentPadding(size = buttonSize, isOnlyIcon = isIconOnly)), horizontalArrangement = Arrangement.Center, verticalAlignment = Alignment.CenterVertically, ) { 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 fe45c168..4e8cb69f 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 @@ -149,10 +149,10 @@ internal fun prezelButtonContentColor( @Composable internal fun prezelButtonContentPadding( size: PrezelButtonSize, - onlyIcon: Boolean, + isOnlyIcon: Boolean, spacing: PrezelSpacing = PrezelTheme.spacing, ): PaddingValues { - if (onlyIcon) return prezelIconButtonContentPadding(size) + if (isOnlyIcon) return prezelIconButtonContentPadding(size) val horizontal = when (size) { PrezelButtonSize.XSMALL -> spacing.V10 From 332d46a74d29e637b57e3212441ddbba96725107 Mon Sep 17 00:00:00 2001 From: moondev03 Date: Mon, 23 Feb 2026 08:10:37 +0900 Subject: [PATCH 5/5] =?UTF-8?q?refactor:=20PrezelIconButton=EC=9D=98=20Pad?= =?UTF-8?q?dingValues=20=EC=83=9D=EC=84=B1=20=EB=A1=9C=EC=A7=81=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 `prezelIconButtonContentPadding` 함수에서 `PaddingValues`를 생성하는 방식을 `let` 확장 함수를 사용하는 대신 직접 생성자를 호출하도록 변경하여 코드를 단순화했습니다. --- .../component/button/PrezelButtonStyle.kt | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) 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 4e8cb69f..04f19ce0 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 @@ -174,8 +174,10 @@ private fun prezelIconButtonContentPadding( size: PrezelButtonSize, spacing: PrezelSpacing = PrezelTheme.spacing, ): PaddingValues = - when (size) { - PrezelButtonSize.XSMALL -> spacing.V8 - PrezelButtonSize.SMALL -> spacing.V10 - PrezelButtonSize.REGULAR -> spacing.V14 - }.let { padding -> PaddingValues(all = padding) } + PaddingValues( + when (size) { + PrezelButtonSize.XSMALL -> spacing.V8 + PrezelButtonSize.SMALL -> spacing.V10 + PrezelButtonSize.REGULAR -> spacing.V14 + }, + )