Compare commits
No commits in common. "499889d37373628772afdb845e1674130fc73322" and "4537a40cea22d233b305f9c9ea03fde49583e034" have entirely different histories.
499889d373
...
4537a40cea
@ -232,8 +232,6 @@ struct OnboardingFeatureRow: View {
|
|||||||
let icon: String
|
let icon: String
|
||||||
let title: String
|
let title: String
|
||||||
let subtitle: String
|
let subtitle: String
|
||||||
var showBorder: Bool = false
|
|
||||||
var debug: Bool = false
|
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
HStack(spacing: Design.Spacing.medium) {
|
HStack(spacing: Design.Spacing.medium) {
|
||||||
@ -247,13 +245,9 @@ struct OnboardingFeatureRow: View {
|
|||||||
Text(subtitle)
|
Text(subtitle)
|
||||||
.styled(.caption, emphasis: .tertiary)
|
.styled(.caption, emphasis: .tertiary)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Spacer()
|
||||||
}
|
}
|
||||||
.padding(Design.Spacing.medium)
|
|
||||||
.background(
|
|
||||||
RoundedRectangle(cornerRadius: Design.CornerRadius.medium)
|
|
||||||
.stroke(showBorder ? AppBorder.subtle : Color.clear, lineWidth: 1)
|
|
||||||
)
|
|
||||||
.debugBorder(debug, color: .blue, label: "FeatureRow")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -35,26 +35,23 @@ struct OnboardingWelcomeView: View {
|
|||||||
Spacer()
|
Spacer()
|
||||||
|
|
||||||
// Feature highlights (centered within container)
|
// Feature highlights (centered within container)
|
||||||
VStack(alignment: .leading, spacing: Design.Spacing.medium) {
|
VStack(spacing: Design.Spacing.medium) {
|
||||||
OnboardingFeatureRow(
|
OnboardingFeatureRow(
|
||||||
icon: "light.max",
|
icon: "light.max",
|
||||||
title: String(localized: "Ring Light"),
|
title: String(localized: "Ring Light"),
|
||||||
subtitle: String(localized: "Perfect lighting for every shot"),
|
subtitle: String(localized: "Perfect lighting for every shot")
|
||||||
showBorder: false
|
|
||||||
)
|
)
|
||||||
|
|
||||||
OnboardingFeatureRow(
|
OnboardingFeatureRow(
|
||||||
icon: "camera.filters",
|
icon: "camera.filters",
|
||||||
title: String(localized: "Pro Features"),
|
title: String(localized: "Pro Features"),
|
||||||
subtitle: String(localized: "HDR, skin smoothing, and more"),
|
subtitle: String(localized: "HDR, skin smoothing, and more")
|
||||||
showBorder: false
|
|
||||||
)
|
)
|
||||||
|
|
||||||
OnboardingFeatureRow(
|
OnboardingFeatureRow(
|
||||||
icon: "hand.tap.fill",
|
icon: "hand.tap.fill",
|
||||||
title: String(localized: "Easy Capture"),
|
title: String(localized: "Easy Capture"),
|
||||||
subtitle: String(localized: "Volume buttons, timers, gestures"),
|
subtitle: String(localized: "Volume buttons, timers, gestures")
|
||||||
showBorder: false
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
.frame(maxWidth: .infinity, alignment: .center)
|
.frame(maxWidth: .infinity, alignment: .center)
|
||||||
|
|||||||
@ -1,8 +1,3 @@
|
|||||||
---
|
|
||||||
name: revenuecat-ios-integration
|
|
||||||
description: Integrate RevenueCat for in-app purchases in iOS/SwiftUI apps. Covers SDK setup, xcconfig-based API key management, PremiumManager implementation, paywalls, and troubleshooting. Use when setting up RevenueCat, implementing subscriptions, configuring API keys via xcconfig/Info.plist, debugging "API key not configured" errors, or when the user mentions RevenueCat, in-app purchases, subscriptions, paywalls, or premium features.
|
|
||||||
---
|
|
||||||
|
|
||||||
# RevenueCat Integration Guide for iOS
|
# RevenueCat Integration Guide for iOS
|
||||||
|
|
||||||
A comprehensive, reusable guide for integrating RevenueCat into iOS apps with SwiftUI. This guide covers the complete flow from SDK setup to production deployment.
|
A comprehensive, reusable guide for integrating RevenueCat into iOS apps with SwiftUI. This guide covers the complete flow from SDK setup to production deployment.
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user