Compare commits
2 Commits
4537a40cea
...
499889d373
| Author | SHA1 | Date | |
|---|---|---|---|
| 499889d373 | |||
| 8ad199893a |
@ -232,6 +232,8 @@ 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) {
|
||||||
@ -245,9 +247,13 @@ 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,23 +35,26 @@ struct OnboardingWelcomeView: View {
|
|||||||
Spacer()
|
Spacer()
|
||||||
|
|
||||||
// Feature highlights (centered within container)
|
// Feature highlights (centered within container)
|
||||||
VStack(spacing: Design.Spacing.medium) {
|
VStack(alignment: .leading, 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,3 +1,8 @@
|
|||||||
|
---
|
||||||
|
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