import SwiftUI import MapKit import UIKit /// Detail sheet for a tapped station (when Settings → Tap station = More info). /// Shows a small map preview, the station name, address, distance from the /// current location, and a Directions button that opens Apple Maps — the same /// destination a direct tap would have opened. struct StationDetailView: View { let station: FuelStation let location: Coordinate? let distanceUnit: DistanceUnit @Environment(\.dismiss) private var dismiss private var stationCoordinate: CLLocationCoordinate2D { CLLocationCoordinate2D(latitude: station.lat, longitude: station.lng) } var body: some View { NavigationStack { List { Section { Map(position: .constant(.region(MKCoordinateRegion( center: stationCoordinate, span: MKCoordinateSpan(latitudeDelta: 0.02, longitudeDelta: 0.02) )))) { Marker(station.name, coordinate: stationCoordinate) .tint(.red) } .frame(height: 180) .clipShape(RoundedRectangle(cornerRadius: 12)) .allowsHitTesting(false) .listRowInsets(EdgeInsets()) } Section { LabeledContent("Name", value: station.name) LabeledContent("Address", value: "\(station.address), \(station.postcode)") if let location { let km = FuelStore.displayDistanceKM( station: station, userLat: location.lat, userLng: location.lng ) LabeledContent("Distance", value: distanceUnit.format(km)) .monospacedDigit() } } Section { Button { if let url = station.mapsDirectionsURL { UIApplication.shared.open(url) } } label: { Label("Directions", systemImage: "arrow.triangle.turn.up.right.diamond.fill") } } } .navigationTitle(station.name) .navigationBarTitleDisplayMode(.inline) .toolbar { ToolbarItem(placement: .cancellationAction) { Button("Done") { dismiss() } } } } } }