import SwiftUI enum LeadOverviewStyle { static let blue = Color(red: 0, green: 0.44, blue: 0.80) static let successGreen = Color(red: 0.12, green: 0.53, blue: 0.38) static let background = Color(uiColor: .systemGroupedBackground) } /// Formatting shared by the overview and the selected lead's detail screen. extension Lead { var displayName: String { companyName ?? [contact?.title, contact?.firstName, contact?.lastName] .compactMap { $0 }.filter { !$0.isEmpty }.joined(separator: " ") } var locality: String { "\(address.postalCode) \(address.city)" } var fullAddress: String { [address.street, locality].compactMap { $0 }.joined(separator: ", ") } } extension LeadError { var message: LocalizedStringResource { switch self { case .offline: "Keine Internetverbindung. Bitte prüfe deine Verbindung." case .timeout: "Der Server antwortet derzeit nicht. Bitte versuche es erneut." case .serviceUnavailable: "Die Interessenten konnten gerade nicht geladen werden." case .unauthorized: "Deine Sitzung ist abgelaufen. Bitte melde dich erneut an." case .forbidden: "Du hast keine Berechtigung für diesen Vorgang." case .notFound: "Dieser Interessent ist nicht mehr verfügbar. Bitte aktualisiere die Übersicht." case .invalidResponse: "Die Serverantwort konnte nicht verarbeitet werden." case .unexpected: "Ein unerwarteter Fehler ist aufgetreten. Bitte versuche es erneut." } } var allowsRetry: Bool { self != .unauthorized && self != .forbidden } } enum LeadOverviewSelection: String, CaseIterable, Identifiable { case newest, alphabetical, open var id: Self { self } var title: LocalizedStringKey { switch self { case .newest: "Neueste" case .alphabetical: "A–Z" case .open: "Offen" } } }