Compare commits

...

2 Commits

3 changed files with 20 additions and 6 deletions

View File

@ -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")
} }
} }

View File

@ -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)

View File

@ -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.