Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
This commit is contained in:
parent
7f45041b52
commit
e434c52e78
@ -335,6 +335,7 @@
|
|||||||
"isCommentAutoGenerated" : true
|
"isCommentAutoGenerated" : true
|
||||||
},
|
},
|
||||||
"Adjust arc duration" : {
|
"Adjust arc duration" : {
|
||||||
|
"extractionState" : "stale",
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
"en" : {
|
"en" : {
|
||||||
"stringUnit" : {
|
"stringUnit" : {
|
||||||
@ -2178,6 +2179,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Ritual length" : {
|
"Ritual length" : {
|
||||||
|
"extractionState" : "stale",
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
"en" : {
|
"en" : {
|
||||||
"stringUnit" : {
|
"stringUnit" : {
|
||||||
@ -2204,6 +2206,7 @@
|
|||||||
"isCommentAutoGenerated" : true
|
"isCommentAutoGenerated" : true
|
||||||
},
|
},
|
||||||
"Ritual pacing" : {
|
"Ritual pacing" : {
|
||||||
|
"extractionState" : "stale",
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
"en" : {
|
"en" : {
|
||||||
"stringUnit" : {
|
"stringUnit" : {
|
||||||
|
|||||||
@ -1,129 +0,0 @@
|
|||||||
import SwiftUI
|
|
||||||
import Bedrock
|
|
||||||
|
|
||||||
struct ProUpgradeView: View {
|
|
||||||
var body: some View {
|
|
||||||
ScrollView(.vertical, showsIndicators: false) {
|
|
||||||
VStack(spacing: Design.Spacing.xxLarge) {
|
|
||||||
headerSection
|
|
||||||
|
|
||||||
featuresSection
|
|
||||||
|
|
||||||
comingSoonSection
|
|
||||||
}
|
|
||||||
.padding(Design.Spacing.large)
|
|
||||||
}
|
|
||||||
.background(AppSurface.primary)
|
|
||||||
.navigationTitle(String(localized: "Rituals Pro"))
|
|
||||||
.navigationBarTitleDisplayMode(.inline)
|
|
||||||
}
|
|
||||||
|
|
||||||
private var headerSection: some View {
|
|
||||||
VStack(spacing: Design.Spacing.medium) {
|
|
||||||
Image(systemName: "crown.fill")
|
|
||||||
.font(.system(size: Design.BaseFontSize.title))
|
|
||||||
.foregroundStyle(AppAccent.primary)
|
|
||||||
.accessibilityHidden(true)
|
|
||||||
|
|
||||||
Text(String(localized: "Unlock Your Full Potential"))
|
|
||||||
.font(.title2)
|
|
||||||
.bold()
|
|
||||||
.foregroundStyle(AppTextColors.primary)
|
|
||||||
.multilineTextAlignment(.center)
|
|
||||||
|
|
||||||
Text(String(localized: "Rituals Pro gives you everything you need to build lasting habits."))
|
|
||||||
.font(.body)
|
|
||||||
.foregroundStyle(AppTextColors.secondary)
|
|
||||||
.multilineTextAlignment(.center)
|
|
||||||
}
|
|
||||||
.padding(.top, Design.Spacing.large)
|
|
||||||
}
|
|
||||||
|
|
||||||
private var featuresSection: some View {
|
|
||||||
VStack(alignment: .leading, spacing: Design.Spacing.medium) {
|
|
||||||
ProFeatureRowView(
|
|
||||||
icon: "infinity",
|
|
||||||
title: String(localized: "Unlimited Rituals"),
|
|
||||||
subtitle: String(localized: "Create as many arcs as you need")
|
|
||||||
)
|
|
||||||
|
|
||||||
ProFeatureRowView(
|
|
||||||
icon: "chart.line.uptrend.xyaxis",
|
|
||||||
title: String(localized: "Advanced Insights"),
|
|
||||||
subtitle: String(localized: "Deeper analytics on your progress")
|
|
||||||
)
|
|
||||||
|
|
||||||
ProFeatureRowView(
|
|
||||||
icon: "icloud.fill",
|
|
||||||
title: String(localized: "Priority Sync"),
|
|
||||||
subtitle: String(localized: "Faster iCloud synchronization")
|
|
||||||
)
|
|
||||||
|
|
||||||
ProFeatureRowView(
|
|
||||||
icon: "heart.fill",
|
|
||||||
title: String(localized: "Support Development"),
|
|
||||||
subtitle: String(localized: "Help us build more features")
|
|
||||||
)
|
|
||||||
}
|
|
||||||
.padding(Design.Spacing.large)
|
|
||||||
.background(AppSurface.card)
|
|
||||||
.clipShape(.rect(cornerRadius: Design.CornerRadius.large))
|
|
||||||
}
|
|
||||||
|
|
||||||
private var comingSoonSection: some View {
|
|
||||||
VStack(spacing: Design.Spacing.medium) {
|
|
||||||
Button {
|
|
||||||
// No action - coming soon
|
|
||||||
} label: {
|
|
||||||
Text(String(localized: "Coming Soon"))
|
|
||||||
.font(.headline)
|
|
||||||
.foregroundStyle(AppTextColors.disabled)
|
|
||||||
.frame(maxWidth: .infinity)
|
|
||||||
.frame(height: AppMetrics.Size.buttonHeight)
|
|
||||||
.background(AppSurface.tertiary)
|
|
||||||
.clipShape(.rect(cornerRadius: Design.CornerRadius.medium))
|
|
||||||
}
|
|
||||||
.disabled(true)
|
|
||||||
|
|
||||||
Text(String(localized: "Pro features are in development"))
|
|
||||||
.font(.caption)
|
|
||||||
.foregroundStyle(AppTextColors.secondary)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private struct ProFeatureRowView: View {
|
|
||||||
let icon: String
|
|
||||||
let title: String
|
|
||||||
let subtitle: String
|
|
||||||
|
|
||||||
var body: some View {
|
|
||||||
HStack(spacing: Design.Spacing.medium) {
|
|
||||||
Image(systemName: icon)
|
|
||||||
.font(.title3)
|
|
||||||
.foregroundStyle(AppAccent.primary)
|
|
||||||
.frame(width: AppMetrics.Size.iconLarge)
|
|
||||||
.accessibilityHidden(true)
|
|
||||||
|
|
||||||
VStack(alignment: .leading, spacing: Design.Spacing.xxxSmall) {
|
|
||||||
Text(title)
|
|
||||||
.font(.subheadline)
|
|
||||||
.bold()
|
|
||||||
.foregroundStyle(AppTextColors.primary)
|
|
||||||
|
|
||||||
Text(subtitle)
|
|
||||||
.font(.caption)
|
|
||||||
.foregroundStyle(AppTextColors.secondary)
|
|
||||||
}
|
|
||||||
|
|
||||||
Spacer(minLength: Design.Spacing.small)
|
|
||||||
}
|
|
||||||
.accessibilityElement(children: .combine)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#Preview {
|
|
||||||
NavigationStack {
|
|
||||||
ProUpgradeView()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -54,22 +54,6 @@ struct SettingsView: View {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
SettingsSectionHeader(
|
|
||||||
title: String(localized: "Rituals Pro"),
|
|
||||||
systemImage: "crown.fill",
|
|
||||||
accentColor: AppAccent.secondary
|
|
||||||
)
|
|
||||||
|
|
||||||
SettingsCard(backgroundColor: AppSurface.card, borderColor: AppBorder.subtle) {
|
|
||||||
SettingsNavigationRow(
|
|
||||||
title: String(localized: "Upgrade to Pro"),
|
|
||||||
subtitle: String(localized: "Unlock unlimited rituals and more"),
|
|
||||||
backgroundColor: AppSurface.primary
|
|
||||||
) {
|
|
||||||
ProUpgradeView()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
SettingsSectionHeader(
|
SettingsSectionHeader(
|
||||||
title: String(localized: "iCloud Sync"),
|
title: String(localized: "iCloud Sync"),
|
||||||
systemImage: "icloud",
|
systemImage: "icloud",
|
||||||
|
|||||||
@ -68,7 +68,6 @@ Rituals is a paid, offline-first habit tracker built around customizable "ritual
|
|||||||
- Daily reminder notifications with time picker
|
- Daily reminder notifications with time picker
|
||||||
- Haptics and sound toggles (wired to habit check-ins)
|
- Haptics and sound toggles (wired to habit check-ins)
|
||||||
- iCloud settings sync
|
- iCloud settings sync
|
||||||
- Pro upgrade placeholder
|
|
||||||
- Debug tools: reset onboarding, app icon generation, branding preview
|
- Debug tools: reset onboarding, app icon generation, branding preview
|
||||||
|
|
||||||
### Onboarding
|
### Onboarding
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user