From c23a00db796e0ed02541a28cf3125c3fad9707ae Mon Sep 17 00:00:00 2001 From: moondev03 Date: Mon, 9 Mar 2026 03:03:11 +0900 Subject: [PATCH 01/11] =?UTF-8?q?refactor:=20PrezelButton=20=EB=A6=AC?= =?UTF-8?q?=ED=8C=A9=ED=84=B0=EB=A7=81=20=EB=B0=8F=20=EB=82=B4=EB=B6=80=20?= =?UTF-8?q?=EA=B5=AC=EC=A1=B0=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../component/button/PrezelButton.kt | 97 +++++++++------ .../component/button/PrezelButtonPreview.kt | 10 +- .../component/button/PrezelButtonStyle.kt | 115 ++++++++++++++---- 3 files changed, 148 insertions(+), 74 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 56a96bad..854804d4 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 @@ -1,14 +1,17 @@ package com.team.prezel.core.designsystem.component.button +import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer 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.LocalContentColor -import androidx.compose.material3.LocalTextStyle -import androidx.compose.material3.Surface import androidx.compose.material3.Text +import androidx.compose.material3.ripple import androidx.compose.runtime.Composable import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.ui.Alignment @@ -17,8 +20,6 @@ import androidx.compose.ui.draw.drawBehind import androidx.compose.ui.geometry.Offset import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.semantics.Role -import androidx.compose.ui.semantics.role -import androidx.compose.ui.semantics.semantics import androidx.compose.ui.unit.dp import com.team.prezel.core.designsystem.icon.IconSource import com.team.prezel.core.designsystem.icon.PrezelIcons @@ -34,42 +35,60 @@ fun PrezelButton( enabled: Boolean = true, style: PrezelButtonStyle = PrezelButtonStyle(), ) { - val hasText = text != null - val hasIcon = icon != null - require(hasText || hasIcon) { "Button은 text 또는 icon 중 하나는 반드시 필요합니다." } - val (buttonType, buttonHierarchy, buttonSize, isRounded) = style - val isIconOnly = !hasText + require(text != null || icon != null) { "버튼은 텍스트 또는 아이콘 중 하나는 반드시 필요합니다." } + val appearance = PrezelButtonAppearance.of(style = style, isIconOnly = text == null, enabled = enabled) - Surface( - onClick = onClick, - modifier = modifier.semantics { role = Role.Button }, - enabled = enabled, - shape = prezelButtonShape(isIconOnly = isIconOnly, isRounded = isRounded, buttonSize = buttonSize), - color = prezelButtonContainerColor(type = buttonType, hierarchy = buttonHierarchy, enabled = enabled), - border = prezelButtonBorderStroke(type = buttonType, hierarchy = buttonHierarchy, enabled = enabled), + Box( + modifier = modifier + .applyButtonAppearance(appearance) + .clickable( + enabled = enabled, + onClick = onClick, + role = Role.Button, + indication = ripple(), + interactionSource = null, + ), ) { - CompositionLocalProvider( - LocalTextStyle provides prezelButtonTextStyle(buttonSize), - LocalContentColor provides prezelButtonContentColor(type = buttonType, hierarchy = buttonHierarchy, enabled = enabled), + PrezelButtonContent( + text = text, + icon = icon, + showUnderline = style.showUnderline, + buttonSize = style.buttonSize, + appearance = appearance, + ) + } +} + +@Composable +private fun PrezelButtonContent( + text: String?, + icon: IconSource?, + showUnderline: Boolean, + buttonSize: PrezelButtonSize, + appearance: PrezelButtonAppearance, +) { + CompositionLocalProvider(LocalContentColor provides appearance.contentColor) { + Row( + modifier = Modifier.padding(appearance.contentPadding), + horizontalArrangement = Arrangement.Center, + verticalAlignment = Alignment.CenterVertically, ) { - Row( - modifier = Modifier.padding(prezelButtonContentPadding(size = buttonSize, isOnlyIcon = isIconOnly)), - horizontalArrangement = Arrangement.Center, - verticalAlignment = Alignment.CenterVertically, - ) { - icon?.let { source -> - PrezelButtonIcon(icon = source, size = buttonSize) - } + icon?.let { source -> + Icon( + painter = source.painter(), + contentDescription = source.contentDescription(), + modifier = Modifier.size(prezelButtonIconSize(size = buttonSize)), + ) + } - if (!hasText) return@Row - if (hasIcon) { - val spacing = if (buttonSize == PrezelButtonSize.REGULAR) PrezelTheme.spacing.V8 else PrezelTheme.spacing.V4 - Spacer(modifier = Modifier.width(width = spacing)) + text?.let { label -> + if (icon != null) { + Spacer(modifier = Modifier.width(width = appearance.iconSpacing)) } - Text( - text = text, - modifier = Modifier.applyButtonTextStyle(style), + text = label, + style = appearance.textStyle, + modifier = if (showUnderline) Modifier.prezelButtonUnderline() else Modifier, ) } } @@ -77,19 +96,17 @@ fun PrezelButton( } @Composable -private fun Modifier.applyButtonTextStyle(style: PrezelButtonStyle): Modifier { - if (!style.showUnderline) return this - - val px = with(LocalDensity.current) { 1.dp.toPx() } +private fun Modifier.prezelButtonUnderline(): Modifier { + val underlineThickness = with(LocalDensity.current) { 1.dp.toPx() } val underlineColor = PrezelTheme.colors.borderLarge return this.drawBehind { - val y = size.height - (px / 2) + val y = size.height - (underlineThickness / 2) drawLine( color = underlineColor, start = Offset(0f, y), end = Offset(size.width, y), - strokeWidth = px, + strokeWidth = underlineThickness, ) } } diff --git a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelButtonPreview.kt b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelButtonPreview.kt index 0694e425..7b8ab6b0 100644 --- a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelButtonPreview.kt +++ b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelButtonPreview.kt @@ -7,6 +7,7 @@ import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.Immutable +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import com.team.prezel.core.designsystem.preview.PreviewScaffold @@ -28,12 +29,6 @@ private val PreviewVariants = persistentListOf( PreviewVariant(enabled = false, isRounded = false), ) -private val PreviewSizes = persistentListOf( - PrezelButtonSize.XSMALL, - PrezelButtonSize.SMALL, - PrezelButtonSize.REGULAR, -) - @Composable internal fun PrezelButtonPreviewByType( type: PrezelButtonType, @@ -97,8 +92,9 @@ private fun PrezelButtonPreviewHierarchyBlock( Row( modifier = modifier, horizontalArrangement = Arrangement.spacedBy(8.dp), + verticalAlignment = Alignment.CenterVertically, ) { - PreviewSizes.forEach { size -> + PrezelButtonSize.entries.forEach { size -> content( PrezelButtonStyle( buttonType = type, 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 50bdf880..3078c1dc 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 @@ -1,22 +1,23 @@ package com.team.prezel.core.designsystem.component.button import androidx.compose.foundation.BorderStroke +import androidx.compose.foundation.background +import androidx.compose.foundation.border import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.foundation.layout.PaddingValues -import androidx.compose.foundation.layout.size -import androidx.compose.material3.Icon import androidx.compose.runtime.Composable import androidx.compose.runtime.Immutable import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Shape import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import com.team.prezel.core.designsystem.foundation.color.PrezelColors import com.team.prezel.core.designsystem.foundation.number.PrezelShapes import com.team.prezel.core.designsystem.foundation.number.PrezelSpacing import com.team.prezel.core.designsystem.foundation.number.PrezelStroke -import com.team.prezel.core.designsystem.icon.IconSource import com.team.prezel.core.designsystem.theme.PrezelColorScheme import com.team.prezel.core.designsystem.theme.PrezelTheme @@ -46,27 +47,87 @@ data class PrezelButtonStyle( val showUnderline: Boolean = false, ) -@Composable -internal fun PrezelButtonIcon( - icon: IconSource, - size: PrezelButtonSize, - modifier: Modifier = Modifier, +@Immutable +internal data class PrezelButtonAppearance private constructor( + val textStyle: TextStyle, + val contentColor: Color, + val contentPadding: PaddingValues, + val iconSpacing: Dp, + val shape: Shape, + val containerColor: Color, + val borderStroke: BorderStroke, ) { - Icon( - painter = icon.painter(), - contentDescription = icon.contentDescription(), - modifier = modifier.size( - when (size) { - PrezelButtonSize.XSMALL -> 14.dp - PrezelButtonSize.SMALL -> 16.dp - PrezelButtonSize.REGULAR -> 20.dp - }, - ), - ) + companion object { + @Composable + fun of( + style: PrezelButtonStyle, + isIconOnly: Boolean, + enabled: Boolean, + ): PrezelButtonAppearance { + val (buttonType, buttonHierarchy, buttonSize, isRounded) = style + + return PrezelButtonAppearance( + textStyle = prezelButtonTextStyle(size = buttonSize), + contentColor = prezelButtonContentColor( + type = buttonType, + hierarchy = buttonHierarchy, + enabled = enabled, + ), + contentPadding = prezelButtonContentPadding( + size = buttonSize, + isIconOnly = isIconOnly, + ), + iconSpacing = prezelButtonIconSpacing(size = buttonSize), + shape = prezelButtonShape( + isIconOnly = isIconOnly, + isRounded = isRounded, + buttonSize = buttonSize, + ), + containerColor = prezelButtonContainerColor( + type = buttonType, + hierarchy = buttonHierarchy, + enabled = enabled, + ), + borderStroke = prezelButtonBorderStroke( + type = buttonType, + hierarchy = buttonHierarchy, + enabled = enabled, + ), + ) + } + } } +internal fun Modifier.applyButtonAppearance(appearance: PrezelButtonAppearance): Modifier = + this + .clip(appearance.shape) + .background(appearance.containerColor) + .border( + border = appearance.borderStroke, + shape = appearance.shape, + ) + +@Composable +internal fun prezelButtonIconSize(size: PrezelButtonSize): Dp = + when (size) { + PrezelButtonSize.XSMALL -> 14.dp + PrezelButtonSize.SMALL -> 16.dp + PrezelButtonSize.REGULAR -> 20.dp + } + @Composable -internal fun prezelButtonShape( +private fun prezelButtonIconSpacing( + size: PrezelButtonSize, + spacing: PrezelSpacing = PrezelTheme.spacing, +): Dp = + when (size) { + PrezelButtonSize.XSMALL -> spacing.V4 + PrezelButtonSize.SMALL -> spacing.V4 + PrezelButtonSize.REGULAR -> spacing.V8 + } + +@Composable +private fun prezelButtonShape( isIconOnly: Boolean, isRounded: Boolean, buttonSize: PrezelButtonSize, @@ -84,7 +145,7 @@ internal fun prezelButtonShape( } @Composable -internal fun prezelButtonBorderStroke( +private fun prezelButtonBorderStroke( type: PrezelButtonType, hierarchy: PrezelButtonHierarchy, enabled: Boolean, @@ -103,7 +164,7 @@ internal fun prezelButtonBorderStroke( } @Composable -internal fun prezelButtonTextStyle(size: PrezelButtonSize): TextStyle = +private fun prezelButtonTextStyle(size: PrezelButtonSize): TextStyle = when (size) { PrezelButtonSize.XSMALL -> PrezelTheme.typography.caption2Medium PrezelButtonSize.SMALL -> PrezelTheme.typography.body3Medium @@ -111,7 +172,7 @@ internal fun prezelButtonTextStyle(size: PrezelButtonSize): TextStyle = } @Composable -internal fun prezelButtonContainerColor( +private fun prezelButtonContainerColor( type: PrezelButtonType, hierarchy: PrezelButtonHierarchy, enabled: Boolean, @@ -131,7 +192,7 @@ internal fun prezelButtonContainerColor( } @Composable -internal fun prezelButtonContentColor( +private fun prezelButtonContentColor( type: PrezelButtonType, hierarchy: PrezelButtonHierarchy, enabled: Boolean, @@ -148,12 +209,12 @@ internal fun prezelButtonContentColor( } @Composable -internal fun prezelButtonContentPadding( +private fun prezelButtonContentPadding( size: PrezelButtonSize, - isOnlyIcon: Boolean, + isIconOnly: Boolean, spacing: PrezelSpacing = PrezelTheme.spacing, ): PaddingValues { - if (isOnlyIcon) return prezelIconButtonContentPadding(size) + if (isIconOnly) return prezelIconButtonContentPadding(size) val horizontal = when (size) { PrezelButtonSize.XSMALL -> spacing.V10 From eb818231a3787c63018d0997f1acbcc88e9438c0 Mon Sep 17 00:00:00 2001 From: moondev03 Date: Mon, 9 Mar 2026 03:27:59 +0900 Subject: [PATCH 02/11] =?UTF-8?q?refactor:=20DrawDashBorder=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20=EA=B0=9C=EC=84=A0=20=EB=B0=8F=20=ED=8C=8C=EC=9D=BC?= =?UTF-8?q?=EB=AA=85=20=EC=98=A4=ED=83=80=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{DrowDashBorder.kt => DrawDashBorder.kt} | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) rename Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/util/{DrowDashBorder.kt => DrawDashBorder.kt} (74%) diff --git a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/util/DrowDashBorder.kt b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/util/DrawDashBorder.kt similarity index 74% rename from Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/util/DrowDashBorder.kt rename to Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/util/DrawDashBorder.kt index 8d09b336..55a1daa5 100644 --- a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/util/DrowDashBorder.kt +++ b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/util/DrawDashBorder.kt @@ -6,7 +6,7 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.drawBehind +import androidx.compose.ui.draw.drawWithCache import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.PathEffect import androidx.compose.ui.graphics.drawscope.Stroke @@ -19,14 +19,18 @@ fun Modifier.drawDashBorder( width: Float = 1f, interval: Float = 10f, phase: Float = 0f, -) = this.drawBehind { - drawRoundRect( - color = color, - style = Stroke( - width = width, - pathEffect = PathEffect.dashPathEffect(floatArrayOf(interval, interval), phase), - ), - ) +) = this.drawWithCache { + onDrawBehind { + val pathEffect = PathEffect.dashPathEffect(floatArrayOf(interval, interval), phase) + + drawRoundRect( + color = color, + style = Stroke( + width = width, + pathEffect = pathEffect, + ), + ) + } } @ThemePreview From 5866d74ede70b1be0042ba05ec6d40658790442d Mon Sep 17 00:00:00 2001 From: moondev03 Date: Mon, 9 Mar 2026 03:29:03 +0900 Subject: [PATCH 03/11] =?UTF-8?q?refactor:=20PrezelButton=20=EB=82=B4?= =?UTF-8?q?=EB=B6=80=20=EC=95=84=EC=9D=B4=EC=BD=98=20=ED=81=AC=EA=B8=B0=20?= =?UTF-8?q?=EA=B4=80=EB=A6=AC=20=EB=A1=9C=EC=A7=81=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `PrezelButton`의 아이콘 크기 결정 로직을 `PrezelButtonAppearance`로 캡슐화하여 컴포넌트 구조를 개선했습니다. * `PrezelButtonAppearance` 데이터 클래스에 `iconSize` 프로퍼티를 추가했습니다. * `PrezelButton` 컴포저블 내부에서 `buttonSize`를 직접 참조하여 아이콘 크기를 계산하던 방식에서, 생성된 `appearance.iconSize`를 사용하도록 변경했습니다. * `prezelButtonIconSize` 함수의 가시성을 `private`으로 변경하고 위치를 조정했습니다. * `PrezelButtonIcon` 컴포저블의 불필요한 `buttonSize` 파라미터를 제거했습니다. --- .../component/button/PrezelButton.kt | 4 +--- .../component/button/PrezelButtonStyle.kt | 18 ++++++++++-------- 2 files changed, 11 insertions(+), 11 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 854804d4..ca87bf2f 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 @@ -53,7 +53,6 @@ fun PrezelButton( text = text, icon = icon, showUnderline = style.showUnderline, - buttonSize = style.buttonSize, appearance = appearance, ) } @@ -64,7 +63,6 @@ private fun PrezelButtonContent( text: String?, icon: IconSource?, showUnderline: Boolean, - buttonSize: PrezelButtonSize, appearance: PrezelButtonAppearance, ) { CompositionLocalProvider(LocalContentColor provides appearance.contentColor) { @@ -77,7 +75,7 @@ private fun PrezelButtonContent( Icon( painter = source.painter(), contentDescription = source.contentDescription(), - modifier = Modifier.size(prezelButtonIconSize(size = buttonSize)), + modifier = Modifier.size(appearance.iconSize), ) } 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 3078c1dc..901dfd2f 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 @@ -56,6 +56,7 @@ internal data class PrezelButtonAppearance private constructor( val shape: Shape, val containerColor: Color, val borderStroke: BorderStroke, + val iconSize: Dp, ) { companion object { @Composable @@ -93,6 +94,7 @@ internal data class PrezelButtonAppearance private constructor( hierarchy = buttonHierarchy, enabled = enabled, ), + iconSize = prezelButtonIconSize(size = buttonSize), ) } } @@ -107,14 +109,6 @@ internal fun Modifier.applyButtonAppearance(appearance: PrezelButtonAppearance): shape = appearance.shape, ) -@Composable -internal fun prezelButtonIconSize(size: PrezelButtonSize): Dp = - when (size) { - PrezelButtonSize.XSMALL -> 14.dp - PrezelButtonSize.SMALL -> 16.dp - PrezelButtonSize.REGULAR -> 20.dp - } - @Composable private fun prezelButtonIconSpacing( size: PrezelButtonSize, @@ -243,3 +237,11 @@ private fun prezelIconButtonContentPadding( PrezelButtonSize.REGULAR -> spacing.V14 }, ) + +@Composable +private fun prezelButtonIconSize(size: PrezelButtonSize): Dp = + when (size) { + PrezelButtonSize.XSMALL -> 14.dp + PrezelButtonSize.SMALL -> 16.dp + PrezelButtonSize.REGULAR -> 20.dp + } From ce38f1190b3831ea02e5a31dd4b8155346129242 Mon Sep 17 00:00:00 2001 From: moondev03 Date: Mon, 9 Mar 2026 03:56:12 +0900 Subject: [PATCH 04/11] =?UTF-8?q?refactor:=20drawDashBorder=20=ED=99=95?= =?UTF-8?q?=EC=9E=A5=20=ED=95=A8=EC=88=98=20=EA=B0=9C=EC=84=A0=20=EB=B0=8F?= =?UTF-8?q?=20Shape=20=EC=A7=80=EC=9B=90=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/designsystem/util/DrawDashBorder.kt | 53 ++++++++++++++++--- 1 file changed, 45 insertions(+), 8 deletions(-) diff --git a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/util/DrawDashBorder.kt b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/util/DrawDashBorder.kt index 55a1daa5..2c794cb4 100644 --- a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/util/DrawDashBorder.kt +++ b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/util/DrawDashBorder.kt @@ -8,28 +8,65 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.draw.drawWithCache import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.Outline +import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.PathEffect +import androidx.compose.ui.graphics.RectangleShape +import androidx.compose.ui.graphics.Shape import androidx.compose.ui.graphics.drawscope.Stroke import androidx.compose.ui.unit.dp import com.team.prezel.core.designsystem.preview.ThemePreview import com.team.prezel.core.designsystem.theme.PrezelTheme +/** + * 점선 테두리를 그리는 [Modifier] 확장 함수. + * + * [shape] 형태의 외곽선을 기준으로 점선(border)을 렌더링한다. + * + * @param color 테두리 색상 + * @param shape 테두리 모양 + * @param width 테두리 두께(px) + * @param interval 대시와 간격의 길이(px) + * @param phase 대시 패턴 시작 오프셋(px) + */ fun Modifier.drawDashBorder( color: Color = Color.Gray, + shape: Shape = RectangleShape, width: Float = 1f, interval: Float = 10f, phase: Float = 0f, ) = this.drawWithCache { + val outline = shape.createOutline(size, layoutDirection, this) + val pathEffect = PathEffect.dashPathEffect(floatArrayOf(interval, interval), phase) + val stroke = Stroke(width = width, pathEffect = pathEffect) + onDrawBehind { - val pathEffect = PathEffect.dashPathEffect(floatArrayOf(interval, interval), phase) + when (outline) { + is Outline.Rectangle -> { + drawRect( + color = color, + topLeft = outline.rect.topLeft, + size = outline.rect.size, + style = stroke, + ) + } - drawRoundRect( - color = color, - style = Stroke( - width = width, - pathEffect = pathEffect, - ), - ) + is Outline.Rounded -> { + drawPath( + path = Path().apply { addRoundRect(outline.roundRect) }, + color = color, + style = stroke, + ) + } + + is Outline.Generic -> { + drawPath( + path = outline.path, + color = color, + style = stroke, + ) + } + } } } From 9b1a209be649c29a861f79251dbf21a156ac4361 Mon Sep 17 00:00:00 2001 From: moondev03 Date: Mon, 9 Mar 2026 03:57:15 +0900 Subject: [PATCH 05/11] =?UTF-8?q?refactor:=20=EB=B2=84=ED=8A=BC=20?= =?UTF-8?q?=ED=94=84=EB=A6=AC=EB=B7=B0=20=EC=BB=B4=ED=8F=AC=EB=84=8C?= =?UTF-8?q?=ED=8A=B8=EC=9D=98=20=EC=9C=A0=EC=97=B0=EC=84=B1=20=EB=B0=8F=20?= =?UTF-8?q?=EC=8B=9C=EA=B0=81=EC=A0=81=20=ED=94=BC=EB=93=9C=EB=B0=B1=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 --- .../component/button/PrezelButton.kt | 2 ++ .../component/button/PrezelButtonPreview.kt | 26 ++++++++++++++----- .../component/button/PrezelIconButton.kt | 2 ++ .../component/button/PrezelTextButton.kt | 2 ++ 4 files changed, 25 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 ca87bf2f..76e161fd 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 @@ -137,6 +137,7 @@ private fun PrezelButtonPreviewGhost() { private fun PrezelButtonPreviewItem( style: PrezelButtonStyle, enabled: Boolean, + modifier: Modifier = Modifier, ) { PrezelButton( text = "Label", @@ -144,5 +145,6 @@ private fun PrezelButtonPreviewItem( onClick = {}, enabled = enabled, style = style, + modifier = modifier, ) } diff --git a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelButtonPreview.kt b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelButtonPreview.kt index 7b8ab6b0..65f730d8 100644 --- a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelButtonPreview.kt +++ b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelButtonPreview.kt @@ -12,9 +12,10 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import com.team.prezel.core.designsystem.preview.PreviewScaffold import com.team.prezel.core.designsystem.theme.PrezelTheme +import com.team.prezel.core.designsystem.util.drawDashBorder import kotlinx.collections.immutable.persistentListOf -internal typealias PrezelButtonPreviewContent = @Composable (PrezelButtonStyle, Boolean) -> Unit +internal typealias PrezelButtonPreviewContent = @Composable (PrezelButtonStyle, Boolean, Modifier) -> Unit @Immutable private data class PreviewVariant( @@ -56,6 +57,7 @@ private fun PrezelButtonVariantSection( isRounded: Boolean, content: PrezelButtonPreviewContent, modifier: Modifier = Modifier, + contentModifier: Modifier = Modifier, ) { Column( modifier = modifier, @@ -68,6 +70,7 @@ private fun PrezelButtonVariantSection( enabled = enabled, isRounded = isRounded, content = content, + contentModifier = contentModifier, ) Text(text = "Hierarchy: Secondary | Enabled: $enabled | Radius: $isRounded", style = PrezelTheme.typography.body3Medium) PrezelButtonPreviewHierarchyBlock( @@ -76,6 +79,7 @@ private fun PrezelButtonVariantSection( enabled = enabled, isRounded = isRounded, content = content, + contentModifier = contentModifier, ) } } @@ -88,6 +92,7 @@ private fun PrezelButtonPreviewHierarchyBlock( isRounded: Boolean, content: PrezelButtonPreviewContent, modifier: Modifier = Modifier, + contentModifier: Modifier = Modifier, ) { Row( modifier = modifier, @@ -95,14 +100,21 @@ private fun PrezelButtonPreviewHierarchyBlock( verticalAlignment = Alignment.CenterVertically, ) { PrezelButtonSize.entries.forEach { size -> + val style = PrezelButtonStyle( + buttonType = type, + buttonHierarchy = hierarchy, + buttonSize = size, + isRounded = isRounded, + ) + val appearance = PrezelButtonAppearance.of(style = style, isIconOnly = false, enabled = enabled) + content( - PrezelButtonStyle( - buttonType = type, - buttonHierarchy = hierarchy, - buttonSize = size, - isRounded = isRounded, - ), + style, enabled, + contentModifier + .then( + if (type == PrezelButtonType.GHOST) Modifier.drawDashBorder(shape = appearance.shape) else Modifier, + ), ) } } diff --git a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelIconButton.kt b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelIconButton.kt index 0401b74d..1cb9024f 100644 --- a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelIconButton.kt +++ b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelIconButton.kt @@ -52,11 +52,13 @@ private fun PrezelIconButtonPreviewGhost() { private fun PrezelIconButtonPreviewItem( style: PrezelButtonStyle, enabled: Boolean, + modifier: Modifier = Modifier, ) { PrezelIconButton( icon = IconSource(resId = PrezelIcons.Blank), onClick = {}, enabled = enabled, style = style, + modifier = modifier, ) } diff --git a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelTextButton.kt b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelTextButton.kt index 3973f499..0c60503d 100644 --- a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelTextButton.kt +++ b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelTextButton.kt @@ -50,11 +50,13 @@ private fun PrezelTextButtonPreviewGhost() { private fun PrezelTextButtonPreviewItem( style: PrezelButtonStyle, enabled: Boolean, + modifier: Modifier = Modifier, ) { PrezelTextButton( text = "Label", onClick = {}, enabled = enabled, style = style, + modifier = modifier, ) } From d2f3071ed9188b41c7d925ac72395c703960667e Mon Sep 17 00:00:00 2001 From: moondev03 Date: Mon, 9 Mar 2026 04:26:01 +0900 Subject: [PATCH 06/11] =?UTF-8?q?refactor:=20PrezelButton=20=EB=82=B4?= =?UTF-8?q?=EB=B6=80=20=EC=A0=95=EB=A0=AC=20=EB=B0=A9=EC=8B=9D=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 `PrezelButton` 컴포넌트의 최상위 `Box` 컨테이너에 `contentAlignment = Alignment.Center` 속성을 추가하여 내부 콘텐츠가 중앙에 정렬되도록 수정하였습니다. --- .../prezel/core/designsystem/component/button/PrezelButton.kt | 1 + 1 file changed, 1 insertion(+) 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 76e161fd..acd2cbf4 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 @@ -48,6 +48,7 @@ fun PrezelButton( indication = ripple(), interactionSource = null, ), + contentAlignment = Alignment.Center, ) { PrezelButtonContent( text = text, From 422ddd02de3d65cc61576484a01fe85187f6ce7c Mon Sep 17 00:00:00 2001 From: moondev03 Date: Mon, 9 Mar 2026 04:39:12 +0900 Subject: [PATCH 07/11] =?UTF-8?q?refactor:=20PrezelButton=20=ED=94=84?= =?UTF-8?q?=EB=A6=AC=EB=B7=B0=20=EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8=20?= =?UTF-8?q?=EA=B5=AC=EC=A1=B0=20=EB=B0=8F=20=EC=95=84=EC=9D=B4=EC=BD=98=20?= =?UTF-8?q?=EB=B2=84=ED=8A=BC=20=EB=A0=8C=EB=8D=94=EB=A7=81=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 --- .../component/button/PrezelButtonPreview.kt | 10 ++++++++-- .../designsystem/component/button/PrezelIconButton.kt | 6 +++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelButtonPreview.kt b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelButtonPreview.kt index 65f730d8..70d4fa73 100644 --- a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelButtonPreview.kt +++ b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelButtonPreview.kt @@ -15,7 +15,7 @@ import com.team.prezel.core.designsystem.theme.PrezelTheme import com.team.prezel.core.designsystem.util.drawDashBorder import kotlinx.collections.immutable.persistentListOf -internal typealias PrezelButtonPreviewContent = @Composable (PrezelButtonStyle, Boolean, Modifier) -> Unit +internal typealias PrezelButtonPreviewContent = @Composable (style: PrezelButtonStyle, enabled: Boolean, contentModifier: Modifier) -> Unit @Immutable private data class PreviewVariant( @@ -34,6 +34,7 @@ private val PreviewVariants = persistentListOf( internal fun PrezelButtonPreviewByType( type: PrezelButtonType, content: PrezelButtonPreviewContent, + isIconOnly: Boolean = false, ) { PreviewScaffold { Text(text = type.name, style = PrezelTheme.typography.title2Medium) @@ -44,6 +45,7 @@ internal fun PrezelButtonPreviewByType( type = type, enabled = variant.enabled, isRounded = variant.isRounded, + isIconOnly = isIconOnly, content = content, ) } @@ -55,6 +57,7 @@ private fun PrezelButtonVariantSection( type: PrezelButtonType, enabled: Boolean, isRounded: Boolean, + isIconOnly: Boolean, content: PrezelButtonPreviewContent, modifier: Modifier = Modifier, contentModifier: Modifier = Modifier, @@ -69,6 +72,7 @@ private fun PrezelButtonVariantSection( hierarchy = PrezelButtonHierarchy.PRIMARY, enabled = enabled, isRounded = isRounded, + isIconOnly = isIconOnly, content = content, contentModifier = contentModifier, ) @@ -78,6 +82,7 @@ private fun PrezelButtonVariantSection( hierarchy = PrezelButtonHierarchy.SECONDARY, enabled = enabled, isRounded = isRounded, + isIconOnly = isIconOnly, content = content, contentModifier = contentModifier, ) @@ -90,6 +95,7 @@ private fun PrezelButtonPreviewHierarchyBlock( hierarchy: PrezelButtonHierarchy, enabled: Boolean, isRounded: Boolean, + isIconOnly: Boolean, content: PrezelButtonPreviewContent, modifier: Modifier = Modifier, contentModifier: Modifier = Modifier, @@ -106,7 +112,7 @@ private fun PrezelButtonPreviewHierarchyBlock( buttonSize = size, isRounded = isRounded, ) - val appearance = PrezelButtonAppearance.of(style = style, isIconOnly = false, enabled = enabled) + val appearance = PrezelButtonAppearance.of(style = style, isIconOnly = isIconOnly, enabled = enabled) content( style, diff --git a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelIconButton.kt b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelIconButton.kt index 1cb9024f..8fc52ff4 100644 --- a/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelIconButton.kt +++ b/Prezel/core/designsystem/src/main/java/com/team/prezel/core/designsystem/component/button/PrezelIconButton.kt @@ -28,7 +28,7 @@ fun PrezelIconButton( @Composable private fun PrezelIconButtonPreviewFilled() { PrezelTheme { - PrezelButtonPreviewByType(type = PrezelButtonType.FILLED, content = ::PrezelIconButtonPreviewItem) + PrezelButtonPreviewByType(type = PrezelButtonType.FILLED, content = ::PrezelIconButtonPreviewItem, isIconOnly = true) } } @@ -36,7 +36,7 @@ private fun PrezelIconButtonPreviewFilled() { @Composable private fun PrezelIconButtonPreviewOutlined() { PrezelTheme { - PrezelButtonPreviewByType(type = PrezelButtonType.OUTLINED, content = ::PrezelIconButtonPreviewItem) + PrezelButtonPreviewByType(type = PrezelButtonType.OUTLINED, content = ::PrezelIconButtonPreviewItem, isIconOnly = true) } } @@ -44,7 +44,7 @@ private fun PrezelIconButtonPreviewOutlined() { @Composable private fun PrezelIconButtonPreviewGhost() { PrezelTheme { - PrezelButtonPreviewByType(type = PrezelButtonType.GHOST, content = ::PrezelIconButtonPreviewItem) + PrezelButtonPreviewByType(type = PrezelButtonType.GHOST, content = ::PrezelIconButtonPreviewItem, isIconOnly = true) } } From e26a135badff3d96a0ea36d7f8d46a8eb3107181 Mon Sep 17 00:00:00 2001 From: moondev03 Date: Sun, 15 Mar 2026 13:51:10 +0900 Subject: [PATCH 08/11] =?UTF-8?q?refactor:=20PrezelButtonAppearance=20?= =?UTF-8?q?=EC=A0=91=EA=B7=BC=20=EC=A0=9C=EC=96=B4=EC=9E=90=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 * `PrezelButtonAppearance` 데이터 클래스의 생성자에서 `private` 키워드를 제거하여 내부(internal) 패키지 내에서의 가시성을 확보했습니다. --- .../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 901dfd2f..3964ea1f 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 @@ -48,7 +48,7 @@ data class PrezelButtonStyle( ) @Immutable -internal data class PrezelButtonAppearance private constructor( +internal data class PrezelButtonAppearance( val textStyle: TextStyle, val contentColor: Color, val contentPadding: PaddingValues, From 0a763c53ddb25caabd0a5bcbae1b96f44e2c91eb Mon Sep 17 00:00:00 2001 From: moondev03 Date: Sun, 15 Mar 2026 14:08:48 +0900 Subject: [PATCH 09/11] =?UTF-8?q?refactor:=20PrezelButton=20=EC=83=89?= =?UTF-8?q?=EC=83=81=20=EA=B2=B0=EC=A0=95=20=EB=A1=9C=EC=A7=81=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 `PrezelButton` 컴포넌트의 텍스트 색상 결정 로직에서 불필요한 테마 체크와 의존성을 제거하였습니다. * `FILLED` 타입 버튼의 텍스트 색상을 결정할 때 `isSystemInDarkTheme()` 체크 및 `PrezelColorScheme.Dark` 직접 참조를 제거하고, 현재 테마의 `colors.textLarge`를 사용하도록 수정했습니다. * 사용되지 않는 `isSystemInDarkTheme` 및 `PrezelColorScheme` 임포트 문을 정리했습니다. --- .../core/designsystem/component/button/PrezelButtonStyle.kt | 4 +--- 1 file changed, 1 insertion(+), 3 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 3964ea1f..ec76e6e9 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 @@ -3,7 +3,6 @@ package com.team.prezel.core.designsystem.component.button import androidx.compose.foundation.BorderStroke import androidx.compose.foundation.background import androidx.compose.foundation.border -import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.foundation.layout.PaddingValues import androidx.compose.runtime.Composable import androidx.compose.runtime.Immutable @@ -18,7 +17,6 @@ import com.team.prezel.core.designsystem.foundation.color.PrezelColors import com.team.prezel.core.designsystem.foundation.number.PrezelShapes import com.team.prezel.core.designsystem.foundation.number.PrezelSpacing import com.team.prezel.core.designsystem.foundation.number.PrezelStroke -import com.team.prezel.core.designsystem.theme.PrezelColorScheme import com.team.prezel.core.designsystem.theme.PrezelTheme enum class PrezelButtonType { @@ -196,7 +194,7 @@ private fun prezelButtonContentColor( if (hierarchy == PrezelButtonHierarchy.SECONDARY) return colors.textMedium return when (type) { - PrezelButtonType.FILLED -> if (isSystemInDarkTheme()) colors.textLarge else PrezelColorScheme.Dark.textLarge + PrezelButtonType.FILLED -> colors.textLarge PrezelButtonType.OUTLINED -> colors.interactiveRegular PrezelButtonType.GHOST -> colors.interactiveRegular } From b5ff95565c4da1f961f841c97bdaef397413ad12 Mon Sep 17 00:00:00 2001 From: moondev03 Date: Sun, 15 Mar 2026 16:09:40 +0900 Subject: [PATCH 10/11] =?UTF-8?q?fix:=20PrezelButton=20FILLED=20=ED=83=80?= =?UTF-8?q?=EC=9E=85=EC=9D=98=20=ED=85=8D=EC=8A=A4=ED=8A=B8=20=EC=83=89?= =?UTF-8?q?=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 --- .../core/designsystem/component/button/PrezelButtonStyle.kt | 3 ++- 1 file changed, 2 insertions(+), 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 ec76e6e9..1eb89ddb 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 @@ -17,6 +17,7 @@ import com.team.prezel.core.designsystem.foundation.color.PrezelColors import com.team.prezel.core.designsystem.foundation.number.PrezelShapes import com.team.prezel.core.designsystem.foundation.number.PrezelSpacing import com.team.prezel.core.designsystem.foundation.number.PrezelStroke +import com.team.prezel.core.designsystem.theme.PrezelColorScheme import com.team.prezel.core.designsystem.theme.PrezelTheme enum class PrezelButtonType { @@ -194,7 +195,7 @@ private fun prezelButtonContentColor( if (hierarchy == PrezelButtonHierarchy.SECONDARY) return colors.textMedium return when (type) { - PrezelButtonType.FILLED -> colors.textLarge + PrezelButtonType.FILLED -> PrezelColorScheme.Dark.textLarge PrezelButtonType.OUTLINED -> colors.interactiveRegular PrezelButtonType.GHOST -> colors.interactiveRegular } From b469857c1a0e88665e89587e793796f0723ceaaf Mon Sep 17 00:00:00 2001 From: moondev03 Date: Sun, 15 Mar 2026 16:10:54 +0900 Subject: [PATCH 11/11] =?UTF-8?q?refactor:=20PrezelButtonStyle=20=EB=82=B4?= =?UTF-8?q?=EB=B6=80=20=ED=94=84=EB=A1=9C=ED=8D=BC=ED=8B=B0=20=EC=A0=91?= =?UTF-8?q?=EA=B7=BC=20=EB=B0=A9=EC=8B=9D=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../component/button/PrezelButtonStyle.kt | 31 +++++++++---------- 1 file changed, 14 insertions(+), 17 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 1eb89ddb..2f5d73aa 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 @@ -63,39 +63,36 @@ internal data class PrezelButtonAppearance( style: PrezelButtonStyle, isIconOnly: Boolean, enabled: Boolean, - ): PrezelButtonAppearance { - val (buttonType, buttonHierarchy, buttonSize, isRounded) = style - - return PrezelButtonAppearance( - textStyle = prezelButtonTextStyle(size = buttonSize), + ): PrezelButtonAppearance = + PrezelButtonAppearance( + textStyle = prezelButtonTextStyle(size = style.buttonSize), contentColor = prezelButtonContentColor( - type = buttonType, - hierarchy = buttonHierarchy, + type = style.buttonType, + hierarchy = style.buttonHierarchy, enabled = enabled, ), contentPadding = prezelButtonContentPadding( - size = buttonSize, + size = style.buttonSize, isIconOnly = isIconOnly, ), - iconSpacing = prezelButtonIconSpacing(size = buttonSize), + iconSpacing = prezelButtonIconSpacing(size = style.buttonSize), shape = prezelButtonShape( isIconOnly = isIconOnly, - isRounded = isRounded, - buttonSize = buttonSize, + isRounded = style.isRounded, + buttonSize = style.buttonSize, ), containerColor = prezelButtonContainerColor( - type = buttonType, - hierarchy = buttonHierarchy, + type = style.buttonType, + hierarchy = style.buttonHierarchy, enabled = enabled, ), borderStroke = prezelButtonBorderStroke( - type = buttonType, - hierarchy = buttonHierarchy, + type = style.buttonType, + hierarchy = style.buttonHierarchy, enabled = enabled, ), - iconSize = prezelButtonIconSize(size = buttonSize), + iconSize = prezelButtonIconSize(size = style.buttonSize), ) - } } }