import SwiftUI enum NotificationSeverity: String { case critical case warning case info case success var icon: String { switch self { case .critical: return "exclamationmark.triangle.fill" case .warning: return "exclamationmark.circle.fill" case .info: return "info.circle.fill" case .success: return "checkmark.seal.fill" } } var color: Color { switch self { case .critical: return .brand case .warning: return .warning case .info: return .info case .success: return .success } } init(from metadata: [String: String]?) { let raw = metadata?["severity"]?.lowercased() ?? "" self = NotificationSeverity(rawValue: raw) ?? .info } } struct NotificationIconView: View { let severity: NotificationSeverity let isActive: Bool var body: some View { ZStack { Circle() .fill(isActive ? .white.opacity(0.25) : severity.color.opacity(0.12)) .frame(width: 40, height: 40) Image(systemName: severity.icon) .font(.body) .foregroundStyle(isActive ? .white : severity.color) } } } #Preview { HStack(spacing: 16) { NotificationIconView(severity: .critical, isActive: true) NotificationIconView(severity: .warning, isActive: false) NotificationIconView(severity: .info, isActive: false) NotificationIconView(severity: .success, isActive: false) } .padding() }