import Foundation
import SwiftUI

public enum DashboardCard: String, CaseIterable, Identifiable, Codable, Hashable {
    case status
    case connections
    case uploadTraffic
    case downloadTraffic
    case httpProxy
    case clashMode
    case profile

    public var id: String {
        rawValue
    }

    public var title: LocalizedStringKey {
        switch self {
        case .status:
            return "Status"
        case .connections:
            return "Connections"
        case .uploadTraffic:
            return "Upload"
        case .downloadTraffic:
            return "Download"
        case .httpProxy:
            return "System HTTP Proxy"
        case .clashMode:
            return "Clash Mode"
        case .profile:
            return "Profile"
        }
    }

    public var systemImage: String {
        switch self {
        case .status:
            return "info.circle.fill"
        case .connections:
            return "link.circle.fill"
        case .uploadTraffic:
            return "arrow.up.circle.fill"
        case .downloadTraffic:
            return "arrow.down.circle.fill"
        case .httpProxy:
            return "network"
        case .clashMode:
            return "circle.grid.2x2.fill"
        case .profile:
            return "doc.text.fill"
        }
    }

    public var isHalfWidth: Bool {
        switch self {
        case .status, .connections, .uploadTraffic, .downloadTraffic:
            return true
        case .httpProxy, .clashMode, .profile:
            return false
        }
    }

    public static var defaultCards: [DashboardCard] {
        allCases
    }

    public static var defaultOrder: [DashboardCard] {
        [.uploadTraffic, .downloadTraffic, .status, .connections, .httpProxy, .clashMode, .profile]
    }
}
