11package com.cornellappdev.uplift.ui.components.general
22
3+ import androidx.compose.animation.animateContentSize
34import androidx.compose.animation.core.animateFloatAsState
5+ import androidx.compose.foundation.layout.Arrangement
6+ import androidx.compose.foundation.layout.Row
7+ import androidx.compose.foundation.layout.defaultMinSize
48import androidx.compose.foundation.layout.height
5- import androidx.compose.foundation.layout.width
69import androidx.compose.foundation.layout.wrapContentSize
710import androidx.compose.foundation.shape.RoundedCornerShape
811import androidx.compose.material3.Button
912import androidx.compose.material3.ButtonDefaults
10- import androidx.compose.material3.Surface
1113import androidx.compose.material3.Text
1214import androidx.compose.runtime.Composable
1315import androidx.compose.runtime.getValue
16+ import androidx.compose.ui.Alignment
1417import androidx.compose.ui.Modifier
1518import androidx.compose.ui.draw.alpha
1619import androidx.compose.ui.graphics.Color
@@ -46,7 +49,9 @@ fun UpliftButton(
4649 disabledContainerColor : Color = GRAY02 ,
4750 contentColor : Color = PRIMARY_BLACK ,
4851 disabledContentColor : Color = PRIMARY_BLACK ,
49- elevation : Dp = 4.dp
52+ elevation : Dp = 4.dp,
53+ leadingIcon : (@Composable () -> Unit )? = null,
54+ modifier : Modifier = Modifier
5055) {
5156 val enabledAlpha by animateFloatAsState(
5257 targetValue = if (enabled) 1f else 0.5f ,
@@ -60,8 +65,8 @@ fun UpliftButton(
6065 disabledContentColor = disabledContentColor
6166 ),
6267 shape = RoundedCornerShape (38 .dp),
63- modifier = Modifier
64- .width( width)
68+ modifier = modifier
69+ .defaultMinSize(minWidth = width)
6570 .height(height)
6671 .alpha(enabledAlpha),
6772 elevation = ButtonDefaults .buttonElevation(
@@ -70,15 +75,24 @@ fun UpliftButton(
7075 onClick = { onClick() },
7176 enabled = enabled,
7277 ) {
73- Text (
74- text = text,
75- color = PRIMARY_BLACK ,
76- fontFamily = montserratFamily,
77- fontSize = fontSize.sp,
78- fontWeight = FontWeight .Bold ,
79- textAlign = TextAlign .Center ,
80- modifier = Modifier .wrapContentSize()
81- )
78+ Row (
79+ verticalAlignment = Alignment .CenterVertically ,
80+ horizontalArrangement = Arrangement .Center ,
81+ modifier = Modifier .animateContentSize()
82+ ) {
83+ leadingIcon?.let {
84+ it()
85+ }
86+ Text (
87+ text = text,
88+ color = contentColor,
89+ fontFamily = montserratFamily,
90+ fontSize = fontSize.sp,
91+ fontWeight = FontWeight .Bold ,
92+ textAlign = TextAlign .Center ,
93+ modifier = modifier.wrapContentSize()
94+ )
95+ }
8296 }
8397}
8498
0 commit comments