package com.craigvg.lichun_android.ui.screens.dating.components import androidx.compose.foundation.background import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.AccessTime import androidx.compose.material.icons.filled.Favorite import androidx.compose.material3.* import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Brush 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 data class RelationshipMoment( val id: String, val emoji: String, val description: String, val date: String, val affinityChange: Int = 0 ) /** * Card displaying recent relationship moments/history */ @Composable fun RecentMomentsCard( partnerName: String, moments: List, modifier: Modifier = Modifier ) { Card( modifier = modifier.fillMaxWidth(), shape = RoundedCornerShape(AppSpacing.cornerRadius), colors = CardDefaults.cardColors(containerColor = AppColors.surfaceElevated) ) { Column(modifier = Modifier.padding(AppSpacing.md)) { Row( verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(AppSpacing.xs) ) { Icon( imageVector = Icons.Default.AccessTime, contentDescription = null, tint = AppColors.primary, modifier = Modifier.size(18.dp) ) Text( text = "Recent Moments with $partnerName", style = AppTypography.bodyBold, color = AppColors.primaryText ) } Spacer(modifier = Modifier.height(AppSpacing.sm)) if (moments.isEmpty()) { Text( text = "No moments yet. Go on a date!", style = AppTypography.caption, color = AppColors.disabledText ) } else { moments.forEach { moment -> MomentRow(moment = moment) if (moment != moments.last()) { HorizontalDivider( color = AppColors.primary.copy(alpha = 0.1f), modifier = Modifier.padding(vertical = AppSpacing.xs) ) } } } } } } @Composable private fun MomentRow(moment: RelationshipMoment) { Row( modifier = Modifier .fillMaxWidth() .padding(vertical = AppSpacing.xs), verticalAlignment = Alignment.CenterVertically ) { Text(text = moment.emoji, modifier = Modifier.width(28.dp)) Column(modifier = Modifier.weight(1f)) { Text( text = moment.description, style = AppTypography.body, color = AppColors.primaryText ) Text( text = moment.date, style = AppTypography.micro, color = AppColors.secondaryText ) } if (moment.affinityChange != 0) { Row( verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(2.dp) ) { Icon( imageVector = Icons.Default.Favorite, contentDescription = null, tint = if (moment.affinityChange > 0) AppColors.primary else AppColors.error, modifier = Modifier.size(12.dp) ) Text( text = "${if (moment.affinityChange > 0) "+" else ""}${moment.affinityChange}", style = AppTypography.captionBold, color = if (moment.affinityChange > 0) AppColors.primary else AppColors.error ) } } } }