11package to.bitkit.ui.components
22
33import androidx.compose.foundation.BorderStroke
4+ import androidx.compose.foundation.interaction.MutableInteractionSource
5+ import androidx.compose.foundation.interaction.collectIsPressedAsState
46import androidx.compose.foundation.layout.Arrangement
57import androidx.compose.foundation.layout.Box
68import androidx.compose.foundation.layout.Column
@@ -16,10 +18,13 @@ import androidx.compose.material.icons.filled.Home
1618import androidx.compose.material3.Button
1719import androidx.compose.material3.CircularProgressIndicator
1820import androidx.compose.material3.Icon
21+ import androidx.compose.material3.MaterialTheme
1922import androidx.compose.material3.OutlinedButton
2023import androidx.compose.material3.Text
2124import androidx.compose.material3.TextButton
2225import androidx.compose.runtime.Composable
26+ import androidx.compose.runtime.getValue
27+ import androidx.compose.runtime.remember
2328import androidx.compose.ui.Alignment
2429import androidx.compose.ui.Modifier
2530import androidx.compose.ui.draw.alpha
@@ -28,6 +33,7 @@ import androidx.compose.ui.text.style.TextOverflow
2833import androidx.compose.ui.tooling.preview.Preview
2934import androidx.compose.ui.unit.Dp
3035import androidx.compose.ui.unit.dp
36+ import to.bitkit.ui.shared.util.primaryButtonStyle
3137import to.bitkit.ui.theme.AppButtonDefaults
3238import to.bitkit.ui.theme.AppThemeSurface
3339import to.bitkit.ui.theme.Colors
@@ -47,6 +53,7 @@ enum class ButtonSize {
4753 }
4854}
4955
56+ @Suppress(" UnusedParameter" )
5057@Composable
5158fun PrimaryButton (
5259 text : String? ,
@@ -57,17 +64,31 @@ fun PrimaryButton(
5764 size : ButtonSize = ButtonSize .Large ,
5865 enabled : Boolean = true,
5966 fullWidth : Boolean = true,
60- color : Color = Colors .White16 ,
67+ color : Color = Colors .White16 , // Deprecated: Color customization no longer supported
6168) {
6269 val contentPadding = PaddingValues (horizontal = size.horizontalPadding.takeIf { text != null } ? : 0 .dp)
70+ val interactionSource = remember { MutableInteractionSource () }
71+ val isPressed by interactionSource.collectIsPressedAsState()
72+ val buttonShape = MaterialTheme .shapes.large
73+
6374 Button (
6475 onClick = onClick,
6576 enabled = enabled && ! isLoading,
66- colors = AppButtonDefaults .primaryColors.copy(containerColor = color),
77+ colors = AppButtonDefaults .primaryColors.copy(
78+ containerColor = Color .Transparent ,
79+ disabledContainerColor = Color .Transparent
80+ ),
6781 contentPadding = contentPadding,
82+ interactionSource = interactionSource,
83+ shape = buttonShape,
6884 modifier = Modifier
6985 .then(if (fullWidth) Modifier .fillMaxWidth() else Modifier )
7086 .requiredHeight(size.height)
87+ .primaryButtonStyle(
88+ isPressed = isPressed,
89+ isEnabled = enabled && ! isLoading,
90+ shape = buttonShape
91+ )
7192 .then(modifier)
7293 ) {
7394 if (isLoading) {
0 commit comments