package com.craigvg.lichun_android.ui.components.feedback import androidx.compose.animation.core.animateFloatAsState import androidx.compose.animation.core.spring import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.scale 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 CelebratoryPopup( title: String, message: String, onDismiss: () -> Unit, modifier: Modifier = Modifier, emoji: String = "\uD83C\uDF89" ) { var visible by remember { mutableStateOf(false) } val scale by animateFloatAsState( targetValue = if (visible) 1f else 0.5f, animationSpec = spring(dampingRatio = 0.6f, stiffness = 300f), label = "popupScale" ) LaunchedEffect(Unit) { visible = true } Box( modifier = modifier .fillMaxSize() .background(AppColors.modalOverlay) .clickable( indication = null, interactionSource = remember { MutableInteractionSource() }, onClick = onDismiss ), contentAlignment = Alignment.Center ) { Card( modifier = Modifier .scale(scale) .fillMaxWidth(0.8f) .clickable( indication = null, interactionSource = remember { MutableInteractionSource() }, onClick = {} ), shape = RoundedCornerShape(AppSpacing.largeCornerRadius), colors = CardDefaults.cardColors(containerColor = AppColors.surfaceElevated), elevation = CardDefaults.cardElevation(defaultElevation = 8.dp) ) { Column( modifier = Modifier.padding(AppSpacing.lg), horizontalAlignment = Alignment.CenterHorizontally ) { Text(text = emoji, fontSize = 48.sp) Spacer(Modifier.height(AppSpacing.sm)) Text( text = title, style = AppTypography.headline, color = AppColors.primaryText, textAlign = TextAlign.Center ) Spacer(Modifier.height(AppSpacing.xs)) Text( text = message, style = AppTypography.body, color = AppColors.secondaryText, textAlign = TextAlign.Center ) } } } }