package com.craigvg.lichun_android.ui.screens.dating.components import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.* 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.graphics.Color import androidx.compose.ui.unit.dp import com.craigvg.lichun_android.domain.models.Person import com.craigvg.lichun_android.ui.theme.AppColors import com.craigvg.lichun_android.ui.theme.AppSpacing import com.craigvg.lichun_android.ui.theme.AppTypography /** * Featured relationship card displayed at top of relationships tab */ @Composable fun RomanticHeroCard( partner: Person, onTap: () -> Unit = {}, onChat: () -> Unit = {}, onDate: () -> Unit = {}, modifier: Modifier = Modifier ) { Card( modifier = modifier .fillMaxWidth() .clickable { onTap() }, shape = RoundedCornerShape(AppSpacing.largeCornerRadius), colors = CardDefaults.cardColors(containerColor = AppColors.surfaceElevated), elevation = CardDefaults.cardElevation(defaultElevation = 4.dp) ) { Box { // Gradient background Box( modifier = Modifier .fillMaxWidth() .height(120.dp) .background( Brush.horizontalGradient( colors = listOf( AppColors.primary.copy(alpha = 0.3f), AppColors.secondary.copy(alpha = 0.2f) ) ) ) ) Column( modifier = Modifier .fillMaxWidth() .padding(AppSpacing.md) ) { Spacer(modifier = Modifier.height(AppSpacing.sm)) Row( verticalAlignment = Alignment.CenterVertically ) { // Avatar com.craigvg.lichun_android.ui.components.images.CharacterAvatar( imageUrl = partner.image, firstName = partner.firstname, lastName = partner.lastname, size = AppSpacing.avatarLarge, showGlow = true ) Spacer(modifier = Modifier.width(AppSpacing.md)) Column(modifier = Modifier.weight(1f)) { Text( text = partner.fullName, style = AppTypography.title, color = AppColors.primaryText ) Text( text = partner.relationship.ifEmpty { "Partner" }, style = AppTypography.caption, color = AppColors.primary ) Spacer(modifier = Modifier.height(AppSpacing.xs)) // Affinity Row( verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(4.dp) ) { Icon( imageVector = Icons.Default.Favorite, contentDescription = null, tint = AppColors.primary, modifier = Modifier.size(16.dp) ) Box( modifier = Modifier .weight(1f) .height(8.dp) .clip(RoundedCornerShape(4.dp)) .background(AppColors.primary.copy(alpha = 0.2f)) ) { Box( modifier = Modifier .fillMaxWidth((partner.affinity / 100f).coerceIn(0f, 1f)) .fillMaxHeight() .clip(RoundedCornerShape(4.dp)) .background(AppColors.primary) ) } Text( text = "${partner.affinity}%", style = AppTypography.captionBold, color = AppColors.primary ) } } } Spacer(modifier = Modifier.height(AppSpacing.md)) // Action buttons Row( modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.spacedBy(AppSpacing.sm) ) { Button( onClick = onChat, modifier = Modifier.weight(1f), shape = RoundedCornerShape(AppSpacing.cornerRadius), colors = ButtonDefaults.buttonColors(containerColor = AppColors.secondary) ) { Icon( imageVector = Icons.Default.Message, contentDescription = null, modifier = Modifier.size(18.dp) ) Spacer(modifier = Modifier.width(AppSpacing.xs)) Text("Chat", style = AppTypography.captionBold, color = Color.White) } Button( onClick = onDate, modifier = Modifier.weight(1f), shape = RoundedCornerShape(AppSpacing.cornerRadius), colors = ButtonDefaults.buttonColors(containerColor = AppColors.primary) ) { Icon( imageVector = Icons.Default.FavoriteBorder, contentDescription = null, modifier = Modifier.size(18.dp) ) Spacer(modifier = Modifier.width(AppSpacing.xs)) Text("Date", style = AppTypography.captionBold, color = Color.White) } } } } } }