# TipKit Tips Documentation This document describes all TipKit tips implemented in the Feels app, including their display conditions and locations. ## Overview Tips are managed by `TipsManager` (singleton) and configured with: - **Display Frequency**: Daily - **Datastore Location**: Application default --- ## Tips ### 1. CustomizeLayoutTip **Title**: "Personalize Your Experience" **Message**: "Tap here to customize mood icons, colors, and layouts." **Icon**: `paintbrush` **Display Conditions**: Always eligible (no rules) **Location**: CustomizeContentView (top of the Customize tab in Settings) --- ### 2. AIInsightsTip **Title**: "Discover AI Insights" **Message**: "Get personalized insights about your mood patterns powered by Apple Intelligence." **Icon**: `brain` **Display Conditions**: - User has logged at least **7 moods** **Parameter**: `hasLoggedMoods: Int` (incremented via `TipsManager.shared.onMoodLogged()`) **Location**: InsightsView --- ### 3. SiriShortcutTip **Title**: "Use Siri to Log Moods" **Message**: "Say 'Hey Siri, log my mood as great in Feels' for hands-free logging." **Icon**: `mic.fill` **Display Conditions**: - User has logged at least **3 moods** **Parameter**: `moodLogCount: Int` (incremented via `TipsManager.shared.onMoodLogged()`) **Location**: SettingsContentView (Features section header, via `.siriShortcutTip()`) --- ### 4. HealthKitSyncTip **Title**: "Sync with Apple Health" **Message**: "Connect to Apple Health to see your mood data alongside sleep, exercise, and more." **Icon**: `heart.fill` **Display Conditions**: - User has viewed the Settings screen **Parameter**: `hasSeenSettings: Bool` (set via `TipsManager.shared.onSettingsViewed()`) **Location**: SettingsContentView (Health Kit toggle, via `.healthKitSyncTip()`) --- ### 5. WidgetVotingTip **Title**: "Vote from Your Home Screen" **Message**: "Add the Mood Vote widget to quickly log your mood without opening the app." **Icon**: `square.grid.2x2` **Display Conditions**: - User has been using the app for at least **2 days** **Parameter**: `daysUsingApp: Int` (updated via `TipsManager.shared.updateDaysUsingApp(_:)`) **Location**: DayView --- ### 6. TimeViewTip **Title**: "View Your History" **Message**: "Switch between Day, Month, and Year views to see your mood patterns over time." **Icon**: `calendar` **Display Conditions**: Always eligible (no rules) **Location**: DayView --- ### 7. MoodStreakTip **Title**: "Build Your Streak!" **Message**: "Log your mood daily to build a streak. Consistency helps you understand your patterns." **Icon**: `flame.fill` **Display Conditions**: - User has a current streak of at least **3 days** **Parameter**: `currentStreak: Int` (updated via `TipsManager.shared.updateStreak(_:)`) **Location**: DayView --- ## TipsManager API ```swift // Configure tips (call on app launch) TipsManager.shared.configure() // Reset all tips (for testing) TipsManager.shared.resetAllTips() // Update parameters TipsManager.shared.onMoodLogged() // Increments mood log count TipsManager.shared.onSettingsViewed() // Marks settings as viewed TipsManager.shared.updateDaysUsingApp(_:) // Updates days using app TipsManager.shared.updateStreak(_:) // Updates current streak ``` --- ## View Modifiers Tips can be attached to views using these convenience modifiers: ```swift .customizeLayoutTip() .aiInsightsTip() .siriShortcutTip() .healthKitSyncTip() .widgetVotingTip() .timeViewTip() .moodStreakTip() ``` --- ## Files - **Definition**: `Shared/FeelsTips.swift` - **Manager**: `TipsManager` class in same file - **Configuration**: Called in `FeelsApp.swift`