import SwiftUI import AppKit // MARK: - Native Apple Model Card View struct NativeAppleModelCardView: View { let model: NativeAppleModel let isCurrent: Bool var setDefaultAction: () -> Void var body: some View { HStack(alignment: .top, spacing: 16) { // Main Content VStack(alignment: .leading, spacing: 6) { headerSection metadataSection descriptionSection } .frame(maxWidth: .infinity, alignment: .leading) // Action Controls actionSection } .padding(16) .background(CardBackground(isSelected: isCurrent, useAccentGradientWhenSelected: isCurrent)) } private var headerSection: some View { HStack(alignment: .firstTextBaseline) { Text(model.displayName) .font(.system(size: 13, weight: .semibold)) .foregroundColor(Color(.labelColor)) statusBadge Spacer() } } private var statusBadge: some View { Group { if isCurrent { Text("Default") .font(.system(size: 11, weight: .medium)) .padding(.horizontal, 6) .padding(.vertical, 2) .background(Capsule().fill(Color.accentColor)) .foregroundColor(.white) } else { Text("Built-in") .font(.system(size: 11, weight: .medium)) .padding(.horizontal, 6) .padding(.vertical, 2) .background(Capsule().fill(Color.blue.opacity(0.2))) .foregroundColor(Color.blue) } } } private var metadataSection: some View { HStack(spacing: 12) { // Native Apple Label("Native Apple", systemImage: "apple.logo") .font(.system(size: 11)) .foregroundColor(Color(.secondaryLabelColor)) .lineLimit(1) // Language Label(model.language, systemImage: "globe") .font(.system(size: 11)) .foregroundColor(Color(.secondaryLabelColor)) .lineLimit(1) // On-Device Label("On-Device", systemImage: "checkmark.shield") .font(.system(size: 11)) .foregroundColor(Color(.secondaryLabelColor)) .lineLimit(1) // Requires macOS 26+ Label("macOS 26+", systemImage: "macbook") .font(.system(size: 11)) .foregroundColor(Color(.secondaryLabelColor)) .lineLimit(1) } .lineLimit(1) } private var descriptionSection: some View { Text(model.description) .font(.system(size: 11)) .foregroundColor(Color(.secondaryLabelColor)) .lineLimit(2) .fixedSize(horizontal: false, vertical: true) .padding(.top, 4) } private var actionSection: some View { HStack(spacing: 8) { if isCurrent { Text("Default Model") .font(.system(size: 12)) .foregroundColor(Color(.secondaryLabelColor)) } else { Button(action: setDefaultAction) { Text("Set as Default") .font(.system(size: 12)) } .buttonStyle(.bordered) .controlSize(.small) } } } }