package com.craigvg.lichun_android.ui.components.buttons import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp import com.craigvg.lichun_android.ui.theme.AppColors import com.craigvg.lichun_android.ui.theme.AppSpacing import com.craigvg.lichun_android.ui.theme.AppTypography @Composable fun PrimaryButton( text: String, onClick: () -> Unit, modifier: Modifier = Modifier, enabled: Boolean = true, isLoading: Boolean = false, icon: (@Composable () -> Unit)? = null ) { Button( onClick = onClick, modifier = modifier.height(AppSpacing.buttonHeight), enabled = enabled && !isLoading, shape = RoundedCornerShape(AppSpacing.pillCornerRadius), colors = ButtonDefaults.buttonColors( containerColor = AppColors.primary, contentColor = Color.White, disabledContainerColor = AppColors.primary.copy(alpha = 0.4f), disabledContentColor = Color.White.copy(alpha = 0.6f) ) ) { if (isLoading) { CircularProgressIndicator( modifier = Modifier.size(20.dp), color = Color.White, strokeWidth = 2.dp ) } else { icon?.let { it() Spacer(Modifier.width(AppSpacing.xs)) } Text(text = text, style = AppTypography.button) } } }