Add 12 cohesive app themes with matching subscription and lock screens
- Create AppTheme enum bundling color tint, icon pack, entry style, voting layout, paywall style, and lock screen style into unified themes - Add AppThemePickerView for selecting themes with preview cards and detail sheets - Extend PaywallStyle to 12 variants (celestial, garden, neon, minimal, zen, editorial, mixtape, heartfelt, luxe, forecast, playful, journal) - Add LockScreenStyle enum with 13 variants including aurora default - Create themed subscription paywalls with unique backgrounds, decorative elements, and typography for each style - Create themed lock screens with unique backgrounds, central elements, and unlock buttons - Update FeelsSubscriptionStoreView to read style from AppStorage so it auto-matches current theme - Update PaywallPreviewSettingsView to support all 12 paywall styles 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -558,8 +558,37 @@
|
||||
"comment" : "A symbol that appears before a command in a terminal interface.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"✨" : {
|
||||
|
||||
},
|
||||
"🌈" : {
|
||||
|
||||
},
|
||||
"🎉" : {
|
||||
"comment" : "A smiling face emoji.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"🎨" : {
|
||||
"comment" : "An emoji used as a preview for a theme in the CustomizeContentView.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"💫" : {
|
||||
|
||||
},
|
||||
"😄" : {
|
||||
"comment" : "A smiling face emoji.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"😊" : {
|
||||
"comment" : "A playful emoji used in the lock screen view.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"12" : {
|
||||
|
||||
},
|
||||
"12 curated combinations of colors, icons, and layouts" : {
|
||||
"comment" : "A description of the 12 color, icon, and layout combinations available in the theme picker.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"17" : {
|
||||
|
||||
@@ -1190,8 +1219,8 @@
|
||||
"comment" : "An accessibility label for the section of the settings view that indicates that Apple Health is not available on the user's device.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"are safe here" : {
|
||||
"comment" : "A description of the safety of the app's \"Aurora background\".",
|
||||
"Apply %@ Theme" : {
|
||||
"comment" : "A button that, when tapped, applies a theme to the app. The label inside the button changes to reflect the name of the theme being applied.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"Are you sure you want to delete this mood entry? This cannot be undone." : {
|
||||
@@ -1321,10 +1350,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Authenticate to continue your journey" : {
|
||||
"comment" : "A description of the action required to unlock the app.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"Authentication Failed" : {
|
||||
"comment" : "An alert title when authentication fails.",
|
||||
"isCommentAutoGenerated" : true,
|
||||
@@ -1367,6 +1392,10 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Browse Themes" : {
|
||||
"comment" : "A suggestion to the user to explore different color and layout combinations.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"Build Your Streak!" : {
|
||||
"comment" : "A title for a tip that encourages users to build a mood streak.",
|
||||
"isCommentAutoGenerated" : true,
|
||||
@@ -1787,6 +1816,10 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Choose Your Vibe" : {
|
||||
"comment" : "A title displayed at the top of the view, encouraging the user to choose a theme.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"Clarity through simplicity.\nPremium unlocks understanding." : {
|
||||
"comment" : "A description of the benefits of the premium subscription.",
|
||||
"isCommentAutoGenerated" : true
|
||||
@@ -4506,6 +4539,10 @@
|
||||
"comment" : "A hint that appears when tapping on an icon to select it.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"Each theme combines colors, icons, layouts, and styles into a cohesive experience." : {
|
||||
"comment" : "A description of how themes work.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"Edit" : {
|
||||
"comment" : "A button label that triggers the editing of a journal note.",
|
||||
"isCommentAutoGenerated" : true,
|
||||
@@ -4548,6 +4585,13 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Elevate Your\nEmotional Life" : {
|
||||
|
||||
},
|
||||
"ELEVATE YOUR\nEXPERIENCE" : {
|
||||
"comment" : "A title for the section that describes the premium theme.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"Entries" : {
|
||||
"comment" : "A label describing the number of mood entries.",
|
||||
"isCommentAutoGenerated" : true,
|
||||
@@ -4674,10 +4718,18 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Every entry tells your story.\nPremium unlocks the full narrative." : {
|
||||
"comment" : "A description of the premium feature, emphasizing the narrative aspect of journaling.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"Every feeling is a seed.\nPremium helps you grow." : {
|
||||
"comment" : "A description of the premium subscription's benefits.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"Every feeling is a track.\nPremium gives you the full album." : {
|
||||
"comment" : "A description of the premium subscription that highlights the unlimited access to all tracks.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"Exit" : {
|
||||
"comment" : "A button label that dismisses the current view.",
|
||||
"isCommentAutoGenerated" : true,
|
||||
@@ -5025,6 +5077,13 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Feel It All" : {
|
||||
"comment" : "The title of a section that highlights the premium feature of the app.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"Feel With\nAll Your Heart" : {
|
||||
|
||||
},
|
||||
"Feels" : {
|
||||
"comment" : "The name of the widget.",
|
||||
@@ -5068,6 +5127,10 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"FEELS" : {
|
||||
"comment" : "The name of the app.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"Feels Icon" : {
|
||||
"comment" : "Name of the widget configuration.",
|
||||
"isCommentAutoGenerated" : true,
|
||||
@@ -5153,6 +5216,10 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"FEELS MIXTAPE" : {
|
||||
"comment" : "The name of the premium subscription experience.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"filter_view_total" : {
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
@@ -5199,6 +5266,13 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Find Your\nInner Calm" : {
|
||||
"comment" : "A title describing the main benefit of the premium subscription.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"Find Your\nInner Peace" : {
|
||||
|
||||
},
|
||||
"Fix Weekday" : {
|
||||
"comment" : "A button label that, when tapped, will attempt to correct the user's calendar entries that are set to the wrong weekday.",
|
||||
@@ -5933,6 +6007,10 @@
|
||||
"comment" : "A description of the social proof badge.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"JOURNAL" : {
|
||||
"comment" : "The title of the journal.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"Journal Note" : {
|
||||
"comment" : "The title of the view that appears in the navigation bar.",
|
||||
"isCommentAutoGenerated" : true,
|
||||
@@ -6099,6 +6177,14 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Level up your self-awareness.\nPremium = MAX POWER!" : {
|
||||
"comment" : "A tagline describing the premium subscription and its benefits.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"Like ink on paper, each mood\nleaves its mark. Premium reveals the pattern." : {
|
||||
"comment" : "A description of how the premium version reveals patterns in user moods.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"Log Mood" : {
|
||||
"comment" : "A button that opens Feels to log a mood.",
|
||||
"isCommentAutoGenerated" : true,
|
||||
@@ -6349,6 +6435,9 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Make Tracking\nFun Again!" : {
|
||||
|
||||
},
|
||||
"Manage" : {
|
||||
"comment" : "A button that allows the user to manage their subscription.",
|
||||
@@ -6736,6 +6825,10 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"MOOD UNLOCKED! 🎮" : {
|
||||
"comment" : "A catchy title for the premium subscription content.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"Mood Vote" : {
|
||||
"comment" : "The display name of the widget configuration.",
|
||||
"isCommentAutoGenerated" : true,
|
||||
@@ -8933,6 +9026,10 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Predict your patterns.\nPrepare for any weather." : {
|
||||
"comment" : "A description of the premium feature, \"Your Emotional Forecast\", that appears below the title.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"Premium Active" : {
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
@@ -8973,6 +9070,10 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Premium Edition" : {
|
||||
"comment" : "A title for the premium edition of the app.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"Premium Feature" : {
|
||||
"comment" : "A label indicating a premium feature.",
|
||||
"isCommentAutoGenerated" : true,
|
||||
@@ -9019,6 +9120,10 @@
|
||||
"comment" : "A description of a premium feature that requires a subscription.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"Premium refinement for those\nwho expect the finest." : {
|
||||
"comment" : "A description of the premium theme, highlighting its exclusivity and superior quality.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"Preview" : {
|
||||
|
||||
},
|
||||
@@ -12538,6 +12643,24 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"THE" : {
|
||||
"comment" : "The first word of the title of the magazine.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"THE ART\nOF FEELING" : {
|
||||
|
||||
},
|
||||
"Themes" : {
|
||||
"comment" : "The title of the view where they can choose different themes.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"Themes set all four options at once" : {
|
||||
"comment" : "An explanatory note about how themes affect all four settings.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"This theme includes" : {
|
||||
|
||||
},
|
||||
"Tip: \"Yesterday\" works great for evening reminders" : {
|
||||
"comment" : "A tip displayed below the \"Today\" and \"Yesterday\" options in the onboarding flow.",
|
||||
@@ -13217,6 +13340,10 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Unlock the complete story\nof your emotional landscape." : {
|
||||
"comment" : "A description of the premium edition of the app.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"Unlock the Full\nExperience" : {
|
||||
"comment" : "A title displayed in the onboarding view, promoting the full experience that can be unlocked with a subscription.",
|
||||
"isCommentAutoGenerated" : true,
|
||||
@@ -13995,6 +14122,9 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Write Your\nEmotional Story" : {
|
||||
|
||||
},
|
||||
"Year in Review" : {
|
||||
"comment" : "A description below the year's mood breakdown.",
|
||||
@@ -14080,6 +14210,10 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"You can still customize individual settings after applying a theme" : {
|
||||
"comment" : "A note explaining that users can still customize individual settings after applying a theme.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"You don't have a streak yet. Log your mood today to start one!" : {
|
||||
"comment" : "Text displayed in a notification when a user has not logged a mood for the current day.",
|
||||
"isCommentAutoGenerated" : true,
|
||||
@@ -14290,12 +14424,24 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Your Emotional\nForecast" : {
|
||||
"comment" : "The title of the section that describes the main feature of the premium subscription.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"Your emotions tell a story.\nPremium helps you read it." : {
|
||||
"comment" : "A subheadline describing the benefits of the premium subscription.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"Your Feelings" : {
|
||||
"comment" : "The title of the main screen in the lock screen.",
|
||||
"Your heart knows the way.\nPremium helps you listen." : {
|
||||
"comment" : "A description of the premium subscription service, emphasizing its ability to help users listen to their hearts.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"YOUR MOOD\nMIXTAPE" : {
|
||||
"comment" : "The title of the mixtape theme's main content.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"Your Personal\nDiary" : {
|
||||
"comment" : "The title of the premium subscription feature.",
|
||||
"isCommentAutoGenerated" : true
|
||||
}
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user