Rebrand entire project from Feels to Reflect
Complete rename across all bundle IDs, App Groups, CloudKit containers, StoreKit product IDs, data store filenames, URL schemes, logger subsystems, Swift identifiers, user-facing strings (7 languages), file names, directory names, Xcode project, schemes, assets, and documentation. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// AddMoodHeaderView.swift
|
||||
// Feels
|
||||
// Reflect
|
||||
//
|
||||
// Created by Trey Tartt on 1/5/22.
|
||||
//
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// IconView.swift
|
||||
// Feels (iOS)
|
||||
// Reflect (iOS)
|
||||
//
|
||||
// Created by Trey Tartt on 1/20/22.
|
||||
//
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// CelebrationAnimations.swift
|
||||
// Feels
|
||||
// Reflect
|
||||
//
|
||||
// Full-view celebration animations that play after voting.
|
||||
//
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// CreateIconView.swift
|
||||
// Feels (iOS)
|
||||
// Reflect (iOS)
|
||||
//
|
||||
// Created by Trey Tartt on 2/13/22.
|
||||
//
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// IconView.swift
|
||||
// Feels (iOS)
|
||||
// Reflect (iOS)
|
||||
//
|
||||
// Created by Trey Tartt on 2/20/22.
|
||||
//
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// CustomIcon.swift
|
||||
// Feels (iOS)
|
||||
// Reflect (iOS)
|
||||
//
|
||||
// Created by Trey Tartt on 2/20/22.
|
||||
//
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// CustomIcon.swift
|
||||
// Feels (iOS)
|
||||
// Reflect (iOS)
|
||||
//
|
||||
// Created by Trey Tartt on 2/13/22.
|
||||
//
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// IconView.swift
|
||||
// Feels (iOS)
|
||||
// Reflect (iOS)
|
||||
//
|
||||
// Created by Trey Tartt on 2/13/22.
|
||||
//
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// CustomizeView.swift
|
||||
// Feels (iOS)
|
||||
// Reflect (iOS)
|
||||
//
|
||||
// Created by Trey Tartt on 2/19/22.
|
||||
//
|
||||
@@ -189,7 +189,7 @@ struct CustomizeView: View {
|
||||
AnalyticsManager.shared.trackScreen(.customize)
|
||||
})
|
||||
.sheet(isPresented: $showSubscriptionStore) {
|
||||
FeelsSubscriptionStoreView(source: "customize")
|
||||
ReflectSubscriptionStoreView(source: "customize")
|
||||
}
|
||||
.background(
|
||||
theme.currentTheme.bg
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// AppThemePickerView.swift
|
||||
// Feels (iOS)
|
||||
// Reflect (iOS)
|
||||
//
|
||||
// Created by Claude Code on 12/26/24.
|
||||
//
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// CustomWigetView.swift
|
||||
// Feels (iOS)
|
||||
// Reflect (iOS)
|
||||
//
|
||||
// Created by Trey Tartt on 4/2/22.
|
||||
//
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// DayFilterPickerView.swift
|
||||
// Feels (iOS)
|
||||
// Reflect (iOS)
|
||||
//
|
||||
// Created by Trey Tartt on 4/2/22.
|
||||
//
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// IconPickerView.swift
|
||||
// Feels (iOS)
|
||||
// Reflect (iOS)
|
||||
//
|
||||
// Created by Trey Tartt on 4/2/22.
|
||||
//
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// ImagePackPickerView.swift
|
||||
// Feels (iOS)
|
||||
// Reflect (iOS)
|
||||
//
|
||||
// Created by Trey Tartt on 4/2/22.
|
||||
//
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// PersonalityPackPickerView.swift
|
||||
// Feels (iOS)
|
||||
// Reflect (iOS)
|
||||
//
|
||||
// Created by Trey Tartt on 4/2/22.
|
||||
//
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// ShapePickerView.swift
|
||||
// Feels (iOS)
|
||||
// Reflect (iOS)
|
||||
//
|
||||
// Created by Trey Tartt on 4/2/22.
|
||||
//
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// ThemePicker.swift
|
||||
// Feels (iOS)
|
||||
// Reflect (iOS)
|
||||
//
|
||||
// Created by Trey Tartt on 4/2/22.
|
||||
//
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// VotingLayoutPickerView.swift
|
||||
// Feels (iOS)
|
||||
// Reflect (iOS)
|
||||
//
|
||||
// Created by Claude Code on 12/9/24.
|
||||
//
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// CircleView.swift
|
||||
// Feels (iOS)
|
||||
// Reflect (iOS)
|
||||
//
|
||||
// Created by Trey Tartt on 1/13/22.
|
||||
//
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// ContentModeViewModel.swift
|
||||
// Feels (iOS)
|
||||
// Reflect (iOS)
|
||||
//
|
||||
// Created by Trey Tartt on 1/20/22.
|
||||
//
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// EmptyView.swift
|
||||
// Feels (iOS)
|
||||
// Reflect (iOS)
|
||||
//
|
||||
// Created by Trey Tartt on 2/10/22.
|
||||
//
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// EntryListView.swift
|
||||
// Feels (iOS)
|
||||
// Reflect (iOS)
|
||||
//
|
||||
// Created by Trey Tartt on 3/6/22.
|
||||
//
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// ExportView.swift
|
||||
// Feels
|
||||
// Reflect
|
||||
//
|
||||
// Export mood data to CSV or PDF formats.
|
||||
//
|
||||
@@ -306,7 +306,7 @@ struct ExportView: View {
|
||||
case .csv:
|
||||
url = ExportService.shared.exportCSV(entries: validEntries)
|
||||
case .pdf:
|
||||
url = ExportService.shared.exportPDF(entries: validEntries, title: "Feels Mood Report")
|
||||
url = ExportService.shared.exportPDF(entries: validEntries, title: "Reflect Mood Report")
|
||||
}
|
||||
|
||||
await MainActor.run {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// HeaderPercView.swift
|
||||
// Feels (iOS)
|
||||
// Reflect (iOS)
|
||||
//
|
||||
// Created by Trey Tartt on 1/29/22.
|
||||
//
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// HeaderStatsView.swift
|
||||
// Feels
|
||||
// Reflect
|
||||
//
|
||||
// Created by Trey Tartt on 1/8/22.
|
||||
//
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// IAPWarningView.swift
|
||||
// Feels
|
||||
// Reflect
|
||||
//
|
||||
// Trial warning banner shown at bottom of Month/Year views.
|
||||
//
|
||||
@@ -53,7 +53,7 @@ struct IAPWarningView: View {
|
||||
.padding()
|
||||
.background(theme.currentTheme.secondaryBGColor)
|
||||
.sheet(isPresented: $showSubscriptionStore) {
|
||||
FeelsSubscriptionStoreView(source: "iap_warning")
|
||||
ReflectSubscriptionStoreView(source: "iap_warning")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// ImagePickerGrid.swift
|
||||
// Feels (iOS)
|
||||
// Reflect (iOS)
|
||||
//
|
||||
// Created by Trey Tartt on 3/12/22.
|
||||
//
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// InsightsView.swift
|
||||
// Feels
|
||||
// Reflect
|
||||
//
|
||||
// Created by Claude Code on 12/9/24.
|
||||
//
|
||||
@@ -176,7 +176,7 @@ struct InsightsView: View {
|
||||
}
|
||||
}
|
||||
.sheet(isPresented: $showSubscriptionStore) {
|
||||
FeelsSubscriptionStoreView(source: "insights_gate")
|
||||
ReflectSubscriptionStoreView(source: "insights_gate")
|
||||
}
|
||||
.background(
|
||||
theme.currentTheme.bg
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// InsightsViewModel.swift
|
||||
// Feels
|
||||
// Reflect
|
||||
//
|
||||
// Created by Claude Code on 12/9/24.
|
||||
//
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// LockScreenView.swift
|
||||
// Feels
|
||||
// Reflect
|
||||
//
|
||||
// Lock screen shown when privacy lock is enabled and app needs authentication.
|
||||
// Supports multiple themed styles that match app themes.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// MainTabView.swift
|
||||
// Feels (iOS)
|
||||
// Reflect (iOS)
|
||||
//
|
||||
// Created by Trey Tartt on 2/18/22.
|
||||
//
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// MonthDetailView.swift
|
||||
// Feels (iOS)
|
||||
// Reflect (iOS)
|
||||
//
|
||||
// Created by Trey Tartt on 2/18/22.
|
||||
//
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// HomeViewTwo.swift
|
||||
// Feels (iOS)
|
||||
// Reflect (iOS)
|
||||
//
|
||||
// Created by Trey Tartt on 2/18/22.
|
||||
//
|
||||
@@ -339,7 +339,7 @@ struct MonthView: View {
|
||||
}
|
||||
}
|
||||
.sheet(isPresented: $showSubscriptionStore) {
|
||||
FeelsSubscriptionStoreView(source: "month_gate")
|
||||
ReflectSubscriptionStoreView(source: "month_gate")
|
||||
}
|
||||
.onAppear(perform: {
|
||||
AnalyticsManager.shared.trackScreen(.month)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// NoteEditorView.swift
|
||||
// Feels
|
||||
// Reflect
|
||||
//
|
||||
// Editor for adding/editing journal notes on mood entries.
|
||||
//
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// PhotoPickerView.swift
|
||||
// Feels
|
||||
// Reflect
|
||||
//
|
||||
// Photo picker and gallery for mood entry attachments.
|
||||
//
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// PurchaseButtonView.swift
|
||||
// Feels
|
||||
// Reflect
|
||||
//
|
||||
// Subscription status and purchase view for settings.
|
||||
//
|
||||
@@ -32,7 +32,7 @@ struct PurchaseButtonView: View {
|
||||
.background(theme.currentTheme.secondaryBGColor)
|
||||
.cornerRadius(10)
|
||||
.sheet(isPresented: $showSubscriptionStore) {
|
||||
FeelsSubscriptionStoreView(source: "purchase_button")
|
||||
ReflectSubscriptionStoreView(source: "purchase_button")
|
||||
}
|
||||
.manageSubscriptionsSheet(isPresented: $showManageSubscriptions)
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// FeelsSubscriptionStoreView.swift
|
||||
// Feels
|
||||
// ReflectSubscriptionStoreView.swift
|
||||
// Reflect
|
||||
//
|
||||
// Premium subscription experience with multiple theme options.
|
||||
//
|
||||
@@ -8,7 +8,7 @@
|
||||
import SwiftUI
|
||||
import StoreKit
|
||||
|
||||
struct FeelsSubscriptionStoreView: View {
|
||||
struct ReflectSubscriptionStoreView: View {
|
||||
@Environment(\.dismiss) private var dismiss
|
||||
@EnvironmentObject var iapManager: IAPManager
|
||||
|
||||
@@ -478,7 +478,7 @@ struct EditorialMarketingContent: View {
|
||||
.tracking(8)
|
||||
.foregroundColor(Color(red: 0.4, green: 0.4, blue: 0.45))
|
||||
|
||||
Text("FEELS")
|
||||
Text("REFLECT")
|
||||
.font(.system(size: 52, weight: .bold, design: .serif))
|
||||
.tracking(2)
|
||||
.foregroundColor(Color(red: 0.15, green: 0.15, blue: 0.2))
|
||||
@@ -1761,7 +1761,7 @@ struct CassetteTapeView: View {
|
||||
}
|
||||
|
||||
// Label
|
||||
Text("FEELS MIXTAPE")
|
||||
Text("REFLECT MIXTAPE")
|
||||
.font(.system(size: 8, weight: .bold, design: .monospaced))
|
||||
.foregroundColor(Color(red: 0.9, green: 0.8, blue: 0.6))
|
||||
.offset(y: 32)
|
||||
@@ -2373,25 +2373,25 @@ struct SocialProofBadge: View {
|
||||
// MARK: - Preview
|
||||
|
||||
#Preview("Celestial") {
|
||||
FeelsSubscriptionStoreView(style: .celestial)
|
||||
ReflectSubscriptionStoreView(style: .celestial)
|
||||
.environmentObject(IAPManager())
|
||||
.preferredColorScheme(.dark)
|
||||
}
|
||||
|
||||
#Preview("Garden") {
|
||||
FeelsSubscriptionStoreView(style: .garden)
|
||||
ReflectSubscriptionStoreView(style: .garden)
|
||||
.environmentObject(IAPManager())
|
||||
.preferredColorScheme(.dark)
|
||||
}
|
||||
|
||||
#Preview("Neon") {
|
||||
FeelsSubscriptionStoreView(style: .neon)
|
||||
ReflectSubscriptionStoreView(style: .neon)
|
||||
.environmentObject(IAPManager())
|
||||
.preferredColorScheme(.dark)
|
||||
}
|
||||
|
||||
#Preview("Minimal") {
|
||||
FeelsSubscriptionStoreView(style: .minimal)
|
||||
ReflectSubscriptionStoreView(style: .minimal)
|
||||
.environmentObject(IAPManager())
|
||||
.preferredColorScheme(.light)
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// SampleEntryView.swift
|
||||
// Feels (iOS)
|
||||
// Reflect (iOS)
|
||||
//
|
||||
// Created by Trey Tartt on 4/5/22.
|
||||
//
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// DebugAnimationSettingsView.swift
|
||||
// Feels
|
||||
// Reflect
|
||||
//
|
||||
// Debug-only view for experimenting with vote celebration animations.
|
||||
//
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// LiveActivityPreviewView.swift
|
||||
// Feels
|
||||
// Reflect
|
||||
//
|
||||
// Preview Live Activity with animated streak counter for promotional videos.
|
||||
//
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// PaywallPreviewSettingsView.swift
|
||||
// Feels
|
||||
// Reflect
|
||||
//
|
||||
// Debug view for previewing and switching paywall styles.
|
||||
//
|
||||
@@ -38,7 +38,7 @@ struct PaywallPreviewSettingsView: View {
|
||||
}
|
||||
}
|
||||
.sheet(isPresented: $showFullPreview) {
|
||||
FeelsSubscriptionStoreView(source: "paywall_preview", style: selectedStyle)
|
||||
ReflectSubscriptionStoreView(source: "paywall_preview", style: selectedStyle)
|
||||
.environmentObject(iapManager)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// SettingsTabView.swift
|
||||
// Feels (iOS)
|
||||
// Reflect (iOS)
|
||||
//
|
||||
// Created by Trey Tartt on 12/13/25.
|
||||
//
|
||||
@@ -76,7 +76,7 @@ struct SettingsTabView: View {
|
||||
WhyUpgradeView()
|
||||
}
|
||||
.sheet(isPresented: $showSubscriptionStore) {
|
||||
FeelsSubscriptionStoreView(source: "settings_tab")
|
||||
ReflectSubscriptionStoreView(source: "settings_tab")
|
||||
.environmentObject(iapManager)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// SettingsView.swift
|
||||
// Feels
|
||||
// Reflect
|
||||
//
|
||||
// Created by Trey Tartt on 1/8/22.
|
||||
//
|
||||
@@ -109,7 +109,7 @@ struct SettingsContentView: View {
|
||||
}
|
||||
.onAppear(perform: {
|
||||
AnalyticsManager.shared.trackScreen(.settings)
|
||||
FeelsTipsManager.shared.onSettingsViewed()
|
||||
ReflectTipsManager.shared.onSettingsViewed()
|
||||
})
|
||||
}
|
||||
|
||||
@@ -953,7 +953,7 @@ struct SettingsContentView: View {
|
||||
.cornerRadius(Constants.viewsCornerRaidus, corners: [.topLeft, .topRight, .bottomLeft, .bottomRight])
|
||||
.healthKitSyncTip()
|
||||
.sheet(isPresented: $showSubscriptionStore) {
|
||||
FeelsSubscriptionStoreView(source: "settings")
|
||||
ReflectSubscriptionStoreView(source: "settings")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1078,7 +1078,7 @@ struct SettingsContentView: View {
|
||||
Text("Share Analytics")
|
||||
.foregroundColor(textColor)
|
||||
|
||||
Text("Help improve Feels by sharing anonymous usage data")
|
||||
Text("Help improve Reflect by sharing anonymous usage data")
|
||||
.font(.caption)
|
||||
.foregroundStyle(.secondary)
|
||||
}
|
||||
@@ -1520,7 +1520,7 @@ struct SettingsView: View {
|
||||
.background(theme.currentTheme.secondaryBGColor)
|
||||
.cornerRadius(Constants.viewsCornerRaidus, corners: [.topLeft, .topRight, .bottomLeft, .bottomRight])
|
||||
.sheet(isPresented: $showSubscriptionStore) {
|
||||
FeelsSubscriptionStoreView(source: "settings")
|
||||
ReflectSubscriptionStoreView(source: "settings")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1795,7 +1795,7 @@ struct SettingsView: View {
|
||||
Text("Share Analytics")
|
||||
.foregroundColor(textColor)
|
||||
|
||||
Text("Help improve Feels by sharing anonymous usage data")
|
||||
Text("Help improve Reflect by sharing anonymous usage data")
|
||||
.font(.caption)
|
||||
.foregroundStyle(.secondary)
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// SharingView.swift
|
||||
// Feels (iOS)
|
||||
// Reflect (iOS)
|
||||
//
|
||||
// Created by Trey Tartt on 2/6/22.
|
||||
//
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// SharingStylePickerView.swift
|
||||
// Feels
|
||||
// Reflect
|
||||
//
|
||||
// A horizontal pager that lets users swipe between design variations
|
||||
// for a sharing template, then export the selected design.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// AllMoods.swift
|
||||
// Feels (iOS)
|
||||
// Reflect (iOS)
|
||||
//
|
||||
// Created by Trey Tartt on 2/6/22.
|
||||
//
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// CurrentStreakTemplate.swift
|
||||
// Feels (iOS)
|
||||
// Reflect (iOS)
|
||||
//
|
||||
// Created by Trey Tartt on 2/9/22.
|
||||
//
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// AllMoods.swift
|
||||
// Feels (iOS)
|
||||
// Reflect (iOS)
|
||||
//
|
||||
// Created by Trey Tartt on 2/6/22.
|
||||
//
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// MonthTotalTemplate.swift
|
||||
// Feels (iOS)
|
||||
// Reflect (iOS)
|
||||
//
|
||||
// Created by Trey Tartt on 2/9/22.
|
||||
//
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// AllMoodsVariations.swift
|
||||
// Feels
|
||||
// Reflect
|
||||
//
|
||||
// 3 design variations for the All Moods Total sharing template.
|
||||
//
|
||||
@@ -106,13 +106,13 @@ struct AllMoodsV2: View {
|
||||
Spacer().frame(height: 50)
|
||||
|
||||
VStack(spacing: 10) {
|
||||
Image("FeelsAppIcon")
|
||||
Image("ReflectAppIcon")
|
||||
.resizable()
|
||||
.aspectRatio(contentMode: .fit)
|
||||
.frame(width: 96, height: 96)
|
||||
.clipShape(RoundedRectangle(cornerRadius: 22))
|
||||
|
||||
Text("Feels")
|
||||
Text("Reflect")
|
||||
.font(.system(size: 28, weight: .semibold, design: .rounded))
|
||||
.foregroundColor(Color(hex: "8B5E3C").opacity(0.4))
|
||||
}
|
||||
@@ -192,13 +192,13 @@ struct AllMoodsV5: View {
|
||||
Color(hex: "1C1C1E")
|
||||
|
||||
VStack(spacing: 10) {
|
||||
Image("FeelsAppIcon")
|
||||
Image("ReflectAppIcon")
|
||||
.resizable()
|
||||
.aspectRatio(contentMode: .fit)
|
||||
.frame(width: 96, height: 96)
|
||||
.clipShape(RoundedRectangle(cornerRadius: 22))
|
||||
|
||||
Text("Feels")
|
||||
Text("Reflect")
|
||||
.font(.system(size: 28, weight: .bold, design: .rounded))
|
||||
.foregroundColor(.white.opacity(0.3))
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// CurrentStreakVariations.swift
|
||||
// Feels
|
||||
// Reflect
|
||||
//
|
||||
// 2 design variations for the Current Streak (Last 10 Days) sharing template.
|
||||
//
|
||||
@@ -90,13 +90,13 @@ struct CurrentStreakV2: View {
|
||||
Spacer()
|
||||
|
||||
VStack(spacing: 10) {
|
||||
Image("FeelsAppIcon")
|
||||
Image("ReflectAppIcon")
|
||||
.resizable()
|
||||
.aspectRatio(contentMode: .fit)
|
||||
.frame(width: 96, height: 96)
|
||||
.clipShape(RoundedRectangle(cornerRadius: 22))
|
||||
|
||||
Text("Feels")
|
||||
Text("Reflect")
|
||||
.font(.system(size: 28, weight: .semibold, design: .rounded))
|
||||
.foregroundColor(Color(hex: "8B5E3C").opacity(0.4))
|
||||
}
|
||||
@@ -188,13 +188,13 @@ struct CurrentStreakV5: View {
|
||||
|
||||
// Footer
|
||||
VStack(spacing: 10) {
|
||||
Image("FeelsAppIcon")
|
||||
Image("ReflectAppIcon")
|
||||
.resizable()
|
||||
.aspectRatio(contentMode: .fit)
|
||||
.frame(width: 96, height: 96)
|
||||
.clipShape(RoundedRectangle(cornerRadius: 22))
|
||||
|
||||
Text("Feels")
|
||||
Text("Reflect")
|
||||
.font(.system(size: 28, weight: .bold, design: .rounded))
|
||||
.foregroundColor(.white.opacity(0.3))
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// LongestStreakVariations.swift
|
||||
// Feels
|
||||
// Reflect
|
||||
//
|
||||
// 2 design variations for the Longest Streak sharing template.
|
||||
//
|
||||
@@ -111,13 +111,13 @@ struct LongestStreakV2: View {
|
||||
Spacer()
|
||||
|
||||
VStack(spacing: 6) {
|
||||
Image("FeelsAppIcon")
|
||||
Image("ReflectAppIcon")
|
||||
.resizable()
|
||||
.aspectRatio(contentMode: .fit)
|
||||
.frame(width: 72, height: 72)
|
||||
.clipShape(RoundedRectangle(cornerRadius: 16))
|
||||
|
||||
Text("Feels")
|
||||
Text("Reflect")
|
||||
.font(.system(size: 22, weight: .medium, design: .rounded))
|
||||
.foregroundColor(Color(hex: "8B5E3C").opacity(0.4))
|
||||
}
|
||||
@@ -217,13 +217,13 @@ struct LongestStreakV3: View {
|
||||
}
|
||||
|
||||
VStack(spacing: 6) {
|
||||
Image("FeelsAppIcon")
|
||||
Image("ReflectAppIcon")
|
||||
.resizable()
|
||||
.aspectRatio(contentMode: .fit)
|
||||
.frame(width: 72, height: 72)
|
||||
.clipShape(RoundedRectangle(cornerRadius: 16))
|
||||
|
||||
Text("Feels")
|
||||
Text("Reflect")
|
||||
.font(.system(size: 22, weight: .medium))
|
||||
.foregroundColor(Color(hex: "3A3A4A"))
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// MonthTotalVariations.swift
|
||||
// Feels
|
||||
// Reflect
|
||||
//
|
||||
// 3 design variations for the Month Total sharing template.
|
||||
//
|
||||
@@ -93,13 +93,13 @@ struct MonthTotalV1: View {
|
||||
Spacer()
|
||||
|
||||
VStack(spacing: 10) {
|
||||
Image("FeelsAppIcon")
|
||||
Image("ReflectAppIcon")
|
||||
.resizable()
|
||||
.aspectRatio(contentMode: .fit)
|
||||
.frame(width: 96, height: 96)
|
||||
.clipShape(RoundedRectangle(cornerRadius: 22))
|
||||
|
||||
Text("Feels")
|
||||
Text("Reflect")
|
||||
.font(.system(size: 28, weight: .medium, design: .rounded))
|
||||
.foregroundColor(Color(hex: "C7C7CC"))
|
||||
}
|
||||
@@ -200,13 +200,13 @@ struct MonthTotalV5: View {
|
||||
Color(hex: "1C1C1E")
|
||||
|
||||
VStack(spacing: 10) {
|
||||
Image("FeelsAppIcon")
|
||||
Image("ReflectAppIcon")
|
||||
.resizable()
|
||||
.aspectRatio(contentMode: .fit)
|
||||
.frame(width: 96, height: 96)
|
||||
.clipShape(RoundedRectangle(cornerRadius: 22))
|
||||
|
||||
Text("Feels")
|
||||
Text("Reflect")
|
||||
.font(.system(size: 28, weight: .bold, design: .rounded))
|
||||
.foregroundColor(.white.opacity(0.3))
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// WeekTotalTemplate.swift
|
||||
// Feels (iOS)
|
||||
// Reflect (iOS)
|
||||
//
|
||||
// Created by Trey Tartt on 2/9/22.
|
||||
//
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// SmallHeaderView.swift
|
||||
// Feels (iOS)
|
||||
// Reflect (iOS)
|
||||
//
|
||||
// Created by Trey Tartt on 1/28/22.
|
||||
//
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// SwitchableView.swift
|
||||
// Feels (iOS)
|
||||
// Reflect (iOS)
|
||||
//
|
||||
// Created by Trey Tartt on 1/30/22.
|
||||
//
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// TipModalView.swift
|
||||
// Feels
|
||||
// Reflect
|
||||
//
|
||||
// Custom tip modal that adapts to the user's chosen theme
|
||||
//
|
||||
@@ -250,14 +250,14 @@ struct TipsPreviewView: View {
|
||||
@Environment(\.dismiss) private var dismiss
|
||||
@State private var selectedTipIndex: Int?
|
||||
|
||||
private let allTips: [(tip: any FeelsTip, colors: [Color], rule: String)] = [
|
||||
(FeelsTips.customizeLayout, [Color(hex: "667eea"), Color(hex: "764ba2")], "Always eligible"),
|
||||
(FeelsTips.aiInsights, [.purple, .blue], "moodLogCount >= 7"),
|
||||
(FeelsTips.siriShortcut, [Color(hex: "f093fb"), Color(hex: "f5576c")], "moodLogCount >= 3"),
|
||||
(FeelsTips.healthKitSync, [.red, .pink], "hasSeenSettings == true"),
|
||||
(FeelsTips.widgetVoting, [Color(hex: "11998e"), Color(hex: "38ef7d")], "daysUsingApp >= 2"),
|
||||
(FeelsTips.timeView, [.blue, .cyan], "Always eligible"),
|
||||
(FeelsTips.moodStreak, [.orange, .red], "currentStreak >= 3")
|
||||
private let allTips: [(tip: any ReflectTip, colors: [Color], rule: String)] = [
|
||||
(ReflectTips.customizeLayout, [Color(hex: "667eea"), Color(hex: "764ba2")], "Always eligible"),
|
||||
(ReflectTips.aiInsights, [.purple, .blue], "moodLogCount >= 7"),
|
||||
(ReflectTips.siriShortcut, [Color(hex: "f093fb"), Color(hex: "f5576c")], "moodLogCount >= 3"),
|
||||
(ReflectTips.healthKitSync, [.red, .pink], "hasSeenSettings == true"),
|
||||
(ReflectTips.widgetVoting, [Color(hex: "11998e"), Color(hex: "38ef7d")], "daysUsingApp >= 2"),
|
||||
(ReflectTips.timeView, [.blue, .cyan], "Always eligible"),
|
||||
(ReflectTips.moodStreak, [.orange, .red], "currentStreak >= 3")
|
||||
]
|
||||
|
||||
var body: some View {
|
||||
@@ -317,24 +317,24 @@ struct TipsPreviewView: View {
|
||||
|
||||
Section {
|
||||
Button("Reset All Tips") {
|
||||
FeelsTipsManager.shared.resetAllTips()
|
||||
ReflectTipsManager.shared.resetAllTips()
|
||||
}
|
||||
.foregroundColor(.red)
|
||||
|
||||
Toggle("Tips Enabled", isOn: Binding(
|
||||
get: { FeelsTipsManager.shared.tipsEnabled },
|
||||
set: { FeelsTipsManager.shared.tipsEnabled = $0 }
|
||||
get: { ReflectTipsManager.shared.tipsEnabled },
|
||||
set: { ReflectTipsManager.shared.tipsEnabled = $0 }
|
||||
))
|
||||
} header: {
|
||||
Text("Settings")
|
||||
}
|
||||
|
||||
Section {
|
||||
LabeledContent("Mood Log Count", value: "\(FeelsTipsManager.shared.moodLogCount)")
|
||||
LabeledContent("Days Using App", value: "\(FeelsTipsManager.shared.daysUsingApp)")
|
||||
LabeledContent("Current Streak", value: "\(FeelsTipsManager.shared.currentStreak)")
|
||||
LabeledContent("Has Seen Settings", value: FeelsTipsManager.shared.hasSeenSettings ? "Yes" : "No")
|
||||
LabeledContent("Shown This Session", value: FeelsTipsManager.shared.hasShownTipThisSession ? "Yes" : "No")
|
||||
LabeledContent("Mood Log Count", value: "\(ReflectTipsManager.shared.moodLogCount)")
|
||||
LabeledContent("Days Using App", value: "\(ReflectTipsManager.shared.daysUsingApp)")
|
||||
LabeledContent("Current Streak", value: "\(ReflectTipsManager.shared.currentStreak)")
|
||||
LabeledContent("Has Seen Settings", value: ReflectTipsManager.shared.hasSeenSettings ? "Yes" : "No")
|
||||
LabeledContent("Shown This Session", value: ReflectTipsManager.shared.hasShownTipThisSession ? "Yes" : "No")
|
||||
} header: {
|
||||
Text("Current Parameters")
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// FilterView.swift
|
||||
// Feels
|
||||
// Reflect
|
||||
//
|
||||
// Created by Trey Tartt on 1/12/22.
|
||||
//
|
||||
@@ -275,7 +275,7 @@ struct YearView: View {
|
||||
}
|
||||
}
|
||||
.sheet(isPresented: $showSubscriptionStore) {
|
||||
FeelsSubscriptionStoreView(source: "year_gate")
|
||||
ReflectSubscriptionStoreView(source: "year_gate")
|
||||
}
|
||||
.sheet(item: $sharePickerData) { data in
|
||||
SharingStylePickerView(title: data.title, designs: data.designs)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// FilterViewModel.swift
|
||||
// Feels
|
||||
// Reflect
|
||||
//
|
||||
// Created by Trey Tartt on 1/17/22.
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user