feat(paywall): enhance onboarding with rich backgrounds and intro pricing
- Add themed backgrounds for each onboarding feature page: - Unlimited Trips: animated route map with dotted paths and traveling car - Export & Share: floating documents with radiating share lines - Track Your Journey: stadium map with pins and achievement badges - Add sports-themed pricing page background with random glow effects - Display introductory offer pricing in subscription rows - Add feature bullets to each onboarding page for better value prop - Add crown icon header and feature pills to pricing page - Add debug button in Settings to preview onboarding flow - Create StoreKit configuration file for testing IAP Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -10,6 +10,7 @@ struct SettingsView: View {
|
||||
@State private var viewModel = SettingsViewModel()
|
||||
@State private var showResetConfirmation = false
|
||||
@State private var showPaywall = false
|
||||
@State private var showOnboardingPaywall = false
|
||||
|
||||
var body: some View {
|
||||
List {
|
||||
@@ -33,6 +34,11 @@ struct SettingsView: View {
|
||||
|
||||
// Reset
|
||||
resetSection
|
||||
|
||||
#if DEBUG
|
||||
// Debug
|
||||
debugSection
|
||||
#endif
|
||||
}
|
||||
.scrollContentBackground(.hidden)
|
||||
.themedBackground()
|
||||
@@ -44,6 +50,9 @@ struct SettingsView: View {
|
||||
} message: {
|
||||
Text("This will reset all settings to their default values.")
|
||||
}
|
||||
.sheet(isPresented: $showOnboardingPaywall) {
|
||||
OnboardingPaywallView(isPresented: $showOnboardingPaywall)
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Theme Section
|
||||
@@ -246,6 +255,31 @@ struct SettingsView: View {
|
||||
.listRowBackground(Theme.cardBackground(colorScheme))
|
||||
}
|
||||
|
||||
// MARK: - Debug Section
|
||||
|
||||
#if DEBUG
|
||||
private var debugSection: some View {
|
||||
Section {
|
||||
Button {
|
||||
showOnboardingPaywall = true
|
||||
} label: {
|
||||
Label("Show Onboarding Flow", systemImage: "play.circle")
|
||||
}
|
||||
|
||||
Button {
|
||||
UserDefaults.standard.removeObject(forKey: "hasSeenOnboardingPaywall")
|
||||
} label: {
|
||||
Label("Reset Onboarding Flag", systemImage: "arrow.counterclockwise")
|
||||
}
|
||||
} header: {
|
||||
Text("Debug")
|
||||
} footer: {
|
||||
Text("These options are only visible in debug builds.")
|
||||
}
|
||||
.listRowBackground(Theme.cardBackground(colorScheme))
|
||||
}
|
||||
#endif
|
||||
|
||||
// MARK: - Subscription Section
|
||||
|
||||
private var subscriptionSection: some View {
|
||||
|
||||
Reference in New Issue
Block a user