Improve UI consistency and add heart save button

- Add themed background to all tab views (Schedule, Settings, My Trips)
- Remove navigation titles from all screens (tab bar provides context)
- Add empty state to My Trips view
- Remove max driving hours slider from trip planner (available in Settings)
- Replace save menu with heart button overlay on trip detail map
- Add ability to unsave trips by tapping heart again

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Trey t
2026-01-08 11:05:28 -06:00
parent 415202e7f4
commit 8bf8bb49cb
5 changed files with 86 additions and 67 deletions

View File

@@ -82,8 +82,7 @@ struct TripCreationView: View {
.padding(Theme.Spacing.md)
}
.themedBackground()
.navigationTitle("Plan Your Trip")
.toolbar {
.toolbar {
ToolbarItem(placement: .cancellationAction) {
Button("Cancel") {
dismiss()
@@ -551,21 +550,6 @@ struct TripCreationView: View {
onIncrement: { viewModel.numberOfDrivers += 1 },
onDecrement: { viewModel.numberOfDrivers -= 1 }
)
VStack(alignment: .leading, spacing: Theme.Spacing.xs) {
HStack {
Text("Max Hours/Driver/Day")
.font(.system(size: Theme.FontSize.caption))
.foregroundStyle(Theme.textSecondary(colorScheme))
Spacer()
Text("\(Int(viewModel.maxDrivingHoursPerDriver))h")
.font(.system(size: Theme.FontSize.caption, weight: .bold))
.foregroundStyle(Theme.warmOrange)
}
Slider(value: $viewModel.maxDrivingHoursPerDriver, in: 4...12, step: 1)
.tint(Theme.warmOrange)
}
}
}
}
@@ -1132,8 +1116,6 @@ struct TripOptionsView: View {
.padding(.bottom, Theme.Spacing.xxl)
}
.themedBackground()
.navigationTitle("Choose Your Trip")
.navigationBarTitleDisplayMode(.inline)
.navigationDestination(isPresented: $showTripDetail) {
if let trip = selectedTrip {
TripDetailView(trip: trip, games: games)