//
//  RecentMomentsCard.swift
//  lichunWebsocket
//
//  Shows recent relationship timeline events with romantic icons
//

import SwiftUI

struct RecentMomentsCard: View {
    let events: [String]
    let onViewAllTap: () -> Void

    var body: some View {
        BaseCard {
            ZStack {
                // Warm background gradient
                LinearGradient(
                    colors: [
                        AppColors.accent.opacity(0.06),
                        Color.clear
                    ],
                    startPoint: .top,
                    endPoint: .bottom
                )
                .cornerRadius(AppSpacing.cornerRadius)

                VStack(alignment: .leading, spacing: AppSpacing.sm) {
                    // Header
                    HStack {
                        ZStack {
                            Circle()
                                .fill(AppColors.accent.opacity(0.15))
                                .frame(width: 32, height: 32)

                            Image(systemName: "clock.fill")
                                .foregroundColor(AppColors.accent)
                                .font(.system(size: 16))
                        }

                        Text("Recent Moments")
                            .font(.appHeadline)
                            .foregroundColor(AppColors.primaryText)
                    }

                    Divider()
                        .background(AppColors.secondaryText.opacity(0.2))

                // Events or Empty State
                if events.isEmpty {
                    Text("No moments yet. Start creating memories together!")
                        .font(.appBody)
                        .foregroundColor(AppColors.secondaryText)
                        .padding(.vertical, AppSpacing.sm)
                } else {
                    VStack(alignment: .leading, spacing: AppSpacing.md) {
                        ForEach(Array(events.prefix(3).enumerated()), id: \.offset) { index, event in
                            MomentRow(event: event)
                        }
                    }
                }

                    // View All Button
                    Button(action: {
                        hapticFeedback(style: .light)
                        onViewAllTap()
                    }) {
                        HStack {
                            Text("View All Moments")
                                .font(.appBody)
                                .foregroundColor(AppColors.primary)
                                .minimumScaleFactor(0.8)
                                .lineLimit(1)

                            Image(systemName: "arrow.right")
                                .font(.appCaption)
                                .foregroundColor(AppColors.primary)
                        }
                        .padding(.horizontal, AppSpacing.md)
                        .padding(.vertical, AppSpacing.sm)
                        .background(AppColors.primary.opacity(0.1))
                        .cornerRadius(AppSpacing.smallCornerRadius)
                    }
                    .padding(.top, AppSpacing.xs)
                }
            }
        }
    }
}

// MARK: - Moment Row Subcomponent

private struct MomentRow: View {
    let event: String

    var body: some View {
        HStack(alignment: .top, spacing: AppSpacing.sm) {
            Image(systemName: iconForEvent(event))
                .font(.system(size: AppSpacing.iconSizeSmall))
                .foregroundColor(AppColors.accent)
                .frame(width: 24)

            Text(event)
                .font(.appBody)
                .foregroundColor(AppColors.secondaryText)
                .fixedSize(horizontal: false, vertical: true)
        }
    }

    private func iconForEvent(_ event: String) -> String {
        let lowercased = event.lowercased()

        if lowercased.contains("date") || lowercased.contains("dinner") {
            return "fork.knife"
        }
        if lowercased.contains("gift") {
            return "gift.fill"
        }
        if lowercased.contains("anniversary") {
            return "sparkles"
        }
        if lowercased.contains("message") || lowercased.contains("chat") {
            return "message.fill"
        }
        if lowercased.contains("travel") || lowercased.contains("trip") {
            return "airplane"
        }
        if lowercased.contains("movie") || lowercased.contains("film") {
            return "film.fill"
        }
        if lowercased.contains("walk") || lowercased.contains("hiking") {
            return "figure.walk"
        }

        return "heart.fill" // Default romantic icon
    }
}

// MARK: - Preview

#if DEBUG
struct RecentMomentsCard_Previews: PreviewProvider {
    static var previews: some View {
        VStack(spacing: AppSpacing.lg) {
            // With events
            RecentMomentsCard(
                events: [
                    "Had a wonderful dinner at the Italian restaurant",
                    "Celebrated 6 month anniversary together",
                    "Sent a thoughtful gift for her birthday",
                    "Went hiking in the mountains",
                    "Watched a romantic movie together"
                ],
                onViewAllTap: { print("View all tapped") }
            )

            // Empty state
            RecentMomentsCard(
                events: [],
                onViewAllTap: { print("View all tapped") }
            )

            // Single event
            RecentMomentsCard(
                events: ["Just started dating!"],
                onViewAllTap: { print("View all tapped") }
            )
        }
        .padding()
        .background(AppColors.primaryBackground)
    }
}
#endif
