package com.craigvg.lichun_android.ui.components.dialogs import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Info import androidx.compose.material.icons.filled.Warning import androidx.compose.material3.* import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.shadow import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp 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 ConfirmationDialog( title: String, message: String, confirmTitle: String = "Confirm", cancelTitle: String = "Cancel", isDestructive: Boolean = false, onConfirm: () -> Unit, onCancel: () -> Unit ) { Box( modifier = Modifier .fillMaxSize() .background(AppColors.modalOverlay) .clickable(onClick = onCancel), contentAlignment = Alignment.Center ) { Card( modifier = Modifier .fillMaxWidth() .padding(horizontal = AppSpacing.xl) .clickable(enabled = false) {}, shape = RoundedCornerShape(AppSpacing.cornerRadius), colors = CardDefaults.cardColors(containerColor = AppColors.background), elevation = CardDefaults.cardElevation(defaultElevation = 20.dp) ) { Column( modifier = Modifier.padding(AppSpacing.xl), horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.spacedBy(AppSpacing.lg) ) { // Icon Icon( imageVector = if (isDestructive) Icons.Default.Warning else Icons.Default.Info, contentDescription = null, tint = if (isDestructive) AppColors.warning else AppColors.info, modifier = Modifier.size(50.dp) ) // Title Text( text = title, style = AppTypography.title, color = AppColors.primaryText, textAlign = TextAlign.Center ) // Message Text( text = message, style = AppTypography.body, color = AppColors.secondaryText, textAlign = TextAlign.Center ) // Buttons Row( modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.spacedBy(AppSpacing.md) ) { // Cancel Button( onClick = onCancel, modifier = Modifier.weight(1f).height(AppSpacing.buttonHeight), shape = RoundedCornerShape(AppSpacing.cornerRadius), colors = ButtonDefaults.buttonColors( containerColor = AppColors.cardBackground, contentColor = AppColors.secondaryText ) ) { Text(text = cancelTitle, style = AppTypography.bodyBold) } // Confirm Button( onClick = onConfirm, modifier = Modifier.weight(1f).height(AppSpacing.buttonHeight), shape = RoundedCornerShape(AppSpacing.cornerRadius), colors = ButtonDefaults.buttonColors( containerColor = if (isDestructive) AppColors.error.copy(alpha = 0.1f) else AppColors.primary, contentColor = if (isDestructive) AppColors.error else Color.White ) ) { Text(text = confirmTitle, style = AppTypography.bodyBold) } } } } } }