feat(settings): add dark/light/system appearance mode toggle

- Add AppearanceMode enum with system, light, and dark options
- Add AppearanceManager singleton to persist user preference
- Add appearance section in SettingsView with icon and description
- Apply preferredColorScheme at app root for immediate effect
- Include appearance mode in reset to defaults

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Trey t
2026-01-14 13:08:38 -06:00
parent 3d4952e5ff
commit f7f1bbd87a
4 changed files with 116 additions and 0 deletions

View File

@@ -82,6 +82,7 @@ struct BootstrappedContentView: View {
@State private var hasCompletedInitialSync = false
@State private var showOnboardingPaywall = false
@State private var deepLinkHandler = DeepLinkHandler.shared
@State private var appearanceManager = AppearanceManager.shared
private var shouldShowOnboardingPaywall: Bool {
!UserDefaults.standard.bool(forKey: "hasSeenOnboardingPaywall") && !StoreManager.shared.isPro
@@ -142,6 +143,7 @@ struct BootstrappedContentView: View {
break
}
}
.preferredColorScheme(appearanceManager.currentMode.colorScheme)
}
@MainActor