MoodlitTheme variant-getrieben (ManaTheme.current, Default twilight);
MoodlitBrand computed; Root: hartkodiertes .preferredColorScheme(.dark)
ersetzt durch appearance (Default .dark, erhält den Ambiente-Look) +
.manaTheme; Galerie + Appearance-Picker im Settings ("Darstellung").
Build grün.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
28 lines
1 KiB
Swift
28 lines
1 KiB
Swift
import ManaThemeUI
|
|
import ManaTokens
|
|
import SwiftUI
|
|
|
|
/// Persistenz + Default für die gewählte Theme-Variant.
|
|
///
|
|
/// Verein-Doktrin (`mana/docs/THEMING.md`): jede App bietet **alle**
|
|
/// `ManaTheme`-Variants an. Moodlit startet auf `.twilight` (abendlich,
|
|
/// Signatur) und — als Ambiente-App — mit Appearance-Default `.dark`,
|
|
/// lässt den User aber frei wählen.
|
|
extension ManaAppearanceMode {
|
|
static let storageKey = "moodlit.appearance"
|
|
/// Moodlit ist eine Ambiente-/Mood-App → Dunkel als Start-Default.
|
|
static let moodlitDefault: ManaAppearanceMode = .dark
|
|
}
|
|
|
|
extension ManaTheme {
|
|
static let storageKey = "moodlit.theme.variant"
|
|
static let moodlitDefault: ManaTheme = .twilight
|
|
|
|
/// Aktuell gewählte Variant (Default `.twilight`). Für statische
|
|
/// Consumer (`MoodlitTheme`); SwiftUI-Views lesen reaktiv via
|
|
/// `@AppStorage`, der App-Root re-rendert.
|
|
static var current: ManaTheme {
|
|
UserDefaults.standard.string(forKey: storageKey)
|
|
.flatMap(ManaTheme.init(rawValue:)) ?? moodlitDefault
|
|
}
|
|
}
|