// // FeelsSubscriptionStoreView.swift // Feels // // Native StoreKit 2 subscription purchase view. // import SwiftUI import StoreKit struct FeelsSubscriptionStoreView: View { @Environment(\.dismiss) private var dismiss @EnvironmentObject var iapManager: IAPManager var body: some View { SubscriptionStoreView(groupID: IAPManager.subscriptionGroupID) { VStack(spacing: 20) { // App icon or logo ZStack { Circle() .fill( LinearGradient( colors: [.pink.opacity(0.3), .orange.opacity(0.2)], startPoint: .topLeading, endPoint: .bottomTrailing ) ) .frame(width: 100, height: 100) Image(systemName: "heart.fill") .font(.system(size: 44)) .foregroundStyle( LinearGradient( colors: [.pink, .red], startPoint: .top, endPoint: .bottom ) ) } VStack(spacing: 8) { Text("Unlock Premium") .font(.system(size: 28, weight: .bold, design: .rounded)) Text("Get unlimited access to all features") .font(.system(size: 16)) .foregroundStyle(.secondary) .multilineTextAlignment(.center) } // Feature highlights VStack(alignment: .leading, spacing: 12) { FeatureHighlight(icon: "calendar", text: "Month & Year Views") FeatureHighlight(icon: "lightbulb.fill", text: "AI-Powered Insights") FeatureHighlight(icon: "photo.fill", text: "Photos & Journal Notes") FeatureHighlight(icon: "heart.fill", text: "Health Data Correlation") } .padding(.top, 8) } .padding(.horizontal, 20) .padding(.vertical, 10) } .subscriptionStoreControlStyle(.prominentPicker) .storeButton(.visible, for: .restorePurchases) .subscriptionStoreButtonLabel(.multiline) .tint(.pink) .onInAppPurchaseCompletion { _, result in if case .success(.success(_)) = result { dismiss() } } } } // MARK: - Feature Highlight Row struct FeatureHighlight: View { let icon: String let text: String var body: some View { HStack(spacing: 12) { Image(systemName: "checkmark.circle.fill") .font(.system(size: 18)) .foregroundColor(.green) Text(text) .font(.system(size: 15, weight: .medium)) .foregroundColor(.primary) Spacer() } } } #Preview { FeelsSubscriptionStoreView() .environmentObject(IAPManager()) }