// CxLLMSidebar — sidebar navigation for the CxLLM module surface, alongside the WebView.
// Phase 4 wiring: each section imports its CxLLM-SDK module and renders a status card.
// Real per-module UI lands in Phase 3.

import SwiftUI
import CxCode
import CxAWS
import CxGit
import CxAgent
import CxMCP
import CxModels
import CxChat
import CxInstrument
import CxLangBridge
import CxARA
import CxDrive

enum SidebarItem: String, Identifiable, CaseIterable, Hashable {
    case web        = "Web"
    case chat       = "Chat"
    case agent      = "Agent"
    case mcp        = "MCP"
    case models     = "Models"
    case code       = "Code"
    case aws        = "AWS"
    case drive      = "Drive"
    case git        = "Git"
    case bridge     = "LangBridge"
    case repair     = "Repair"
    case telemetry  = "Telemetry"

    var id: String { rawValue }

    var systemImage: String {
        switch self {
        case .web:       return "globe"
        case .chat:      return "bubble.left.and.bubble.right"
        case .agent:     return "person.crop.square.filled.and.at.rectangle"
        case .mcp:       return "antenna.radiowaves.left.and.right"
        case .models:    return "cube.transparent"
        case .code:      return "chevron.left.forwardslash.chevron.right"
        case .aws:       return "cloud"
        case .drive:     return "externaldrive"
        case .git:       return "arrow.triangle.branch"
        case .bridge:    return "link"
        case .repair:    return "wrench.and.screwdriver"
        case .telemetry: return "waveform.path.ecg"
        }
    }
}

struct CxLLMSectionView: View {
    let item: SidebarItem

    var body: some View {
        VStack(alignment: .leading, spacing: 16) {
            Label(item.rawValue, systemImage: item.systemImage)
                .font(.title)
            Divider()
            switch item {
            case .chat:      moduleCard(name: "CxChat",        version: "seed")
            case .agent:     moduleCard(name: "CxAgent",       version: "seed")
            case .mcp:       moduleCard(name: "CxMCP",         version: "seed")
            case .models:    moduleCard(name: "CxModels",      version: "seed")
            case .code:      moduleCard(name: "CxCode",        version: "seed")
            case .aws:       moduleCard(name: "CxAWS",         version: "seed")
            case .drive:     moduleCard(name: "CxDrive",       version: "seed")
            case .git:       moduleCard(name: "CxGit",         version: "seed")
            case .bridge:    moduleCard(name: "CxLangBridge",  version: "seed")
            case .repair:    moduleCard(name: "CxARA",         version: "seed")
            case .telemetry: moduleCard(name: "CxInstrument",  version: "seed")
            case .web:       EmptyView()
            }
            Spacer()
        }
        .padding(24)
        .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .topLeading)
    }

    @ViewBuilder
    private func moduleCard(name: String, version: String) -> some View {
        VStack(alignment: .leading, spacing: 8) {
            Text(name).font(.headline)
            Text("Imported from CxLLM-SDK. Phase 3 will replace this card with the real UI surface.")
                .font(.callout).foregroundStyle(.secondary)
            HStack(spacing: 12) {
                Text("module").font(.caption2).foregroundStyle(.tertiary)
                Text(name).font(.caption.monospaced())
                Text("•").font(.caption2).foregroundStyle(.tertiary)
                Text("v\(version)").font(.caption.monospaced())
            }
            .padding(.top, 4)
        }
        .padding(16)
        .background(.quaternary.opacity(0.4), in: RoundedRectangle(cornerRadius: 10))
    }
}
