Detail sheet: reorder to title → route → photo

User asked for this order. Photo now slots between routeSection and
LIVE STATE rather than living as a hero above the title. Used a -16
horizontal padding so the photo still goes full-bleed inside the
otherwise-16pt-padded content stack.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Trey T
2026-05-27 08:51:11 -05:00
parent 16b874a7ad
commit a1831d0034
+34 -32
View File
@@ -38,52 +38,54 @@ struct LiveFlightDetailSheet: View {
var body: some View { var body: some View {
NavigationStack { NavigationStack {
ScrollView { ScrollView {
VStack(alignment: .leading, spacing: 0) { VStack(alignment: .leading, spacing: 16) {
header
// Depart Arrival sits directly under the callsign
// header it's the single most important thing the
// user opened the sheet to see.
routeSection
// Aircraft photo follows the route. Negative
// horizontal padding lets the photo break out of the
// 16pt content padding to be full-bleed edge-to-edge.
photoBanner photoBanner
.padding(.horizontal, -16)
VStack(alignment: .leading, spacing: 16) { if let photo = aircraftPhoto, let credit = photo.photographer {
header photoCredit(name: credit, link: photo.detailLink)
}
// Depart Arrival lives directly under the callsign Divider()
// header it's the single most important thing the
// user opened the sheet to see.
routeSection
Divider() Text("LIVE STATE")
.font(FlightTheme.label())
.foregroundStyle(FlightTheme.textTertiary)
.tracking(1)
Text("LIVE STATE") liveStateGrid
.font(FlightTheme.label())
.foregroundStyle(FlightTheme.textTertiary)
.tracking(1)
liveStateGrid if recentFlights.count > 1 {
Text("RECENT FLIGHTS")
if recentFlights.count > 1 {
Text("RECENT FLIGHTS")
.font(FlightTheme.label())
.foregroundStyle(FlightTheme.textTertiary)
.tracking(1)
.padding(.top, 4)
ForEach(recentFlights.prefix(8), id: \.self) { flight in
recentFlightRow(flight)
}
}
Text("AIRCRAFT")
.font(FlightTheme.label()) .font(FlightTheme.label())
.foregroundStyle(FlightTheme.textTertiary) .foregroundStyle(FlightTheme.textTertiary)
.tracking(1) .tracking(1)
.padding(.top, 4) .padding(.top, 4)
aircraftCard ForEach(recentFlights.prefix(8), id: \.self) { flight in
recentFlightRow(flight)
if let photo = aircraftPhoto, let credit = photo.photographer {
photoCredit(name: credit, link: photo.detailLink)
} }
} }
.padding(16)
Text("AIRCRAFT")
.font(FlightTheme.label())
.foregroundStyle(FlightTheme.textTertiary)
.tracking(1)
.padding(.top, 4)
aircraftCard
} }
.padding(16)
} }
.background(FlightTheme.background.ignoresSafeArea()) .background(FlightTheme.background.ignoresSafeArea())
.toolbar { .toolbar {