moodlit-native/Sources/Core/Theme/ThemeVariant.swift
till dcd6281845 Theme-Galerie: alle Variants wählbar (ManaThemeUI), Default twilight + dunkel
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>
2026-06-01 02:06:03 +02:00

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
}
}