//
//  MatchCard.swift
//  lichunWebsocket
//
//  Cozy card for displaying a dating match
//

import SwiftUI

struct MatchCard: View {
    let person: Person

    var body: some View {
        BaseCard {
            ZStack {
                // Subtle romantic gradient
                LinearGradient(
                    colors: [
                        AppColors.primary.opacity(0.05),
                        Color.clear
                    ],
                    startPoint: .leading,
                    endPoint: .trailing
                )
                .cornerRadius(AppSpacing.cornerRadius)

                HStack(spacing: AppSpacing.md) {
                    // Avatar
                    CharacterAvatar(
                        person: person,
                        size: 60,
                        showBorder: true,
                        borderGradient: [AppColors.primary.opacity(0.6), AppColors.primary.opacity(0.3)],
                        showGlow: true
                    )

                // Info
                VStack(alignment: .leading, spacing: AppSpacing.xs) {
                    Text("\(person.firstname) \(person.lastname)")
                        .font(.appHeadline)
                        .foregroundColor(AppColors.primaryText)

                    HStack(spacing: AppSpacing.xs) {
                        Text("\(person.ageYears) years old")
                            .font(.appBody)
                            .foregroundColor(AppColors.secondaryText)

                        if !person.occupation.isEmpty {
                            Text("•")
                                .foregroundColor(AppColors.secondaryText)

                            Text(person.occupation)
                                .font(.appBody)
                                .foregroundColor(AppColors.secondaryText)
                                .lineLimit(1)
                        }
                    }

                    // Match indicator
                    HStack(spacing: AppSpacing.xs) {
                        Image(systemName: "heart.fill")
                            .font(.system(size: 12))
                            .foregroundColor(AppColors.primary)

                        Text("It's a Match!")
                            .font(.appCaption)
                            .foregroundColor(AppColors.primary)
                    }
                    .padding(.horizontal, AppSpacing.sm)
                    .padding(.vertical, 4)
                    .background(AppColors.primary.opacity(0.15))
                    .cornerRadius(12)
                }

                Spacer()

                // Chat arrow
                Image(systemName: "message.fill")
                    .font(.system(size: 20))
                    .foregroundColor(AppColors.accent)
                }
                .padding(AppSpacing.sm)
            }
        }
    }
}

// MARK: - Preview

#if DEBUG
struct MatchCard_Previews: PreviewProvider {
    static var previews: some View {
        VStack(spacing: AppSpacing.md) {
            MatchCard(person: mockPerson(name: "Sarah Johnson", age: 28, occupation: "Software Engineer"))
            MatchCard(person: mockPerson(name: "Emily Chen", age: 25, occupation: "Artist"))
            MatchCard(person: mockPerson(name: "Alex Rivera", age: 30, occupation: ""))
        }
        .padding()
        .background(AppColors.primaryBackground)
    }

    static func mockPerson(name: String, age: Int, occupation: String) -> Person {
        let person = Person()
        let names = name.split(separator: " ")
        person.firstname = String(names[0])
        person.lastname = names.count > 1 ? String(names[1]) : ""
        person.ageYears = age
        person.occupation = occupation
        person.image = "https://api.dicebear.com/7.x/avataaars/svg?seed=\(name)"
        return person
    }
}
#endif
