feat: enforce custom Theme colors app-wide, add debug sample trips and poll

Replace all system colors (.secondary, Color(.secondarySystemBackground),
etc.) with Theme.textPrimary/textSecondary/textMuted/cardBackground/
surfaceGlow across 13 views. Remove PostHog debug logging. Add debug
settings for sample trips and hardcoded group poll preview.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Trey t
2026-02-13 08:54:19 -06:00
parent ff6f4b6c2c
commit 1c97f35754
16 changed files with 580 additions and 73 deletions

View File

@@ -450,6 +450,9 @@ struct SavedTripsListView: View {
@State private var hasLoadedPolls = false
@State private var showCreatePoll = false
@State private var selectedPoll: TripPoll?
#if DEBUG
@State private var showDebugPoll = false
#endif
/// Trips sorted by most cities (stops) first
private var sortedTrips: [SavedTrip] {
@@ -489,6 +492,13 @@ struct SavedTripsListView: View {
.navigationDestination(for: TripPoll.self) { poll in
PollDetailView(pollId: poll.id)
}
#if DEBUG
.sheet(isPresented: $showDebugPoll) {
NavigationStack {
DebugPollPreviewView()
}
}
#endif
}
// MARK: - Polls Section
@@ -519,7 +529,17 @@ struct SavedTripsListView: View {
.frame(maxWidth: .infinity, alignment: .center)
.padding()
} else if polls.isEmpty {
#if DEBUG
// Debug sample poll
Button {
showDebugPoll = true
} label: {
PollRowCard(poll: DebugShareExporter.buildSamplePoll())
}
.buttonStyle(.plain)
#else
emptyPollsCard
#endif
} else {
ForEach(polls) { poll in
NavigationLink(value: poll) {
@@ -578,15 +598,16 @@ struct SavedTripsListView: View {
VStack(spacing: 16) {
Image(systemName: "suitcase")
.font(.largeTitle)
.foregroundColor(.secondary)
.foregroundStyle(Theme.textMuted(colorScheme))
.accessibilityHidden(true)
Text("No Saved Trips")
.font(.headline)
.foregroundStyle(Theme.textPrimary(colorScheme))
Text("Browse featured trips on the Home tab or create your own to get started.")
.font(.subheadline)
.foregroundColor(.secondary)
.foregroundStyle(Theme.textSecondary(colorScheme))
.multilineTextAlignment(.center)
}
.frame(maxWidth: .infinity)