import SwiftUI
import Bedrock

struct RitualProgressStatsView: View {
    let currentDay: Int
    let totalDays: Int
    let habitsCompleted: Int
    let habitsTotal: Int
    let daysRemaining: Int
    let progress: Double
    
    var body: some View {
        VStack(spacing: Design.Spacing.large) {
            // Stats row - evenly distributed
            HStack(spacing: 0) {
                statColumn(
                    value: "\(currentDay)",
                    secondary: String(localized: "of \(totalDays)"),
                    label: String(localized: "Days")
                )
                .frame(maxWidth: .infinity)
                
                statColumn(
                    value: "\(habitsCompleted)",
                    secondary: String(localized: "of \(habitsTotal)"),
                    label: String(localized: "Habits")
                )
                .frame(maxWidth: .infinity)
                
                statColumn(
                    value: "\(daysRemaining)",
                    secondary: nil,
                    label: String(localized: "Remaining")
                )
                .frame(maxWidth: .infinity)
            }
            
            // Progress bar
            VStack(alignment: .leading, spacing: Design.Spacing.xSmall) {
                ProgressView(value: progress)
                    .tint(AppAccent.primary)
                
                Text("\(Int(progress * 100))% complete")
                    .font(.caption)
                    .foregroundStyle(AppTextColors.secondary)
            }
        }
        .padding(Design.Spacing.large)
        .background(AppSurface.card)
        .clipShape(.rect(cornerRadius: Design.CornerRadius.large))
        .accessibilityElement(children: .combine)
    }
    
    private func statColumn(value: String, secondary: String?, label: String) -> some View {
        VStack(spacing: Design.Spacing.xSmall) {
            Text(value)
                .font(.title)
                .fontWeight(.bold)
                .foregroundStyle(AppTextColors.primary)
            
            // Always show secondary row for consistent height
            Text(secondary ?? " ")
                .font(.caption)
                .foregroundStyle(secondary != nil ? AppTextColors.tertiary : .clear)
            
            Text(label)
                .font(.caption2)
                .foregroundStyle(AppTextColors.secondary)
        }
    }
}

#Preview {
    VStack(spacing: Design.Spacing.large) {
        RitualProgressStatsView(
            currentDay: 16,
            totalDays: 28,
            habitsCompleted: 2,
            habitsTotal: 3,
            daysRemaining: 12,
            progress: 0.57
        )
        
        RitualProgressStatsView(
            currentDay: 1,
            totalDays: 21,
            habitsCompleted: 0,
            habitsTotal: 4,
            daysRemaining: 21,
            progress: 0.0
        )
    }
    .padding(Design.Spacing.large)
    .background(AppSurface.primary)
}
