package com.craigvg.lichun_android.ui.screens.character.components import androidx.compose.foundation.layout.* import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Favorite import androidx.compose.material.icons.filled.ThumbDown import androidx.compose.material3.Icon import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier 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 /** * Personality traits, likes, dislikes, and interests section. * Ported from iOS PersonalitySection.swift */ @Composable fun PersonalitySection( person: Person, modifier: Modifier = Modifier ) { val hasContent = person.likes.isNotEmpty() || person.dislikes.isNotEmpty() || person.interests.isNotEmpty() || person.personalityTraits.isNotEmpty() if (!hasContent) return Column( modifier = modifier.fillMaxWidth(), verticalArrangement = Arrangement.spacedBy(AppSpacing.md) ) { if (person.likes.isNotEmpty()) { Column(verticalArrangement = Arrangement.spacedBy(AppSpacing.xs)) { Row(verticalAlignment = Alignment.CenterVertically) { Icon(Icons.Default.Favorite, null, tint = AppColors.primary, modifier = Modifier.size(16.dp)) Spacer(Modifier.width(AppSpacing.xs)) Text("Likes", style = AppTypography.captionBold, color = AppColors.secondaryText) } Text(person.likes.joinToString(", "), style = AppTypography.body, color = AppColors.primaryText) } } if (person.dislikes.isNotEmpty()) { Column(verticalArrangement = Arrangement.spacedBy(AppSpacing.xs)) { Row(verticalAlignment = Alignment.CenterVertically) { Icon(Icons.Default.ThumbDown, null, tint = AppColors.accent, modifier = Modifier.size(16.dp)) Spacer(Modifier.width(AppSpacing.xs)) Text("Dislikes", style = AppTypography.captionBold, color = AppColors.secondaryText) } Text(person.dislikes.joinToString(", "), style = AppTypography.body, color = AppColors.primaryText) } } if (person.interests.isNotEmpty()) { Column(verticalArrangement = Arrangement.spacedBy(AppSpacing.xs)) { Text("Interests", style = AppTypography.captionBold, color = AppColors.secondaryText) Text(person.interests.joinToString(", "), style = AppTypography.body, color = AppColors.primaryText) } } if (person.personalityTraits.isNotEmpty()) { Column(verticalArrangement = Arrangement.spacedBy(AppSpacing.xs)) { Text("Personality", style = AppTypography.captionBold, color = AppColors.secondaryText) Text(person.personalityTraits.joinToString(", "), style = AppTypography.body, color = AppColors.primaryText) } } } }