import SiliconPulseCore
import SwiftUI

struct DetailPopoverView: View {
    let model: SystemHealthModel

    var body: some View {
        VStack(alignment: .leading, spacing: 14) {
            HStack {
                Text("SiliconPulse")
                    .font(.headline)
                Spacer()
                Text(model.menubar.bucket.label)
                    .font(.caption.weight(.semibold))
                    .foregroundStyle(model.menubar.bucket.swiftUIColor)
            }

            HStack(spacing: 18) {
                DetailGauge(title: "CPU", model: model.cpu)
                DetailGauge(title: "GPU", model: model.gpu)
                DetailGauge(title: "Memory", model: model.memory)
            }
        }
        .padding(16)
        .frame(width: 330)
    }
}

private struct DetailGauge: View {
    let title: String
    let model: GaugeModel

    var body: some View {
        VStack(spacing: 7) {
            GaugeView(model: model, showsValue: true)
                .frame(width: 78, height: 78)
            Text(title)
                .font(.caption.weight(.medium))
                .foregroundStyle(.secondary)
        }
        .frame(width: 88)
    }
}

private extension HealthColorBucket {
    var label: String {
        switch self {
        case .white:
            "Normal"
        case .yellow:
            "High"
        case .red:
            "Extreme"
        }
    }

    var swiftUIColor: Color {
        switch self {
        case .white:
            .primary
        case .yellow:
            Color(red: 1.0, green: 0.82, blue: 0.18)
        case .red:
            Color(red: 0.92, green: 0.18, blue: 0.22)
        }
    }
}
