import SwiftUI import AppKit /// Farbwelt von Mawari: Diensttafeln aus Holz (Hinoki), immergrünes Tokiwa als /// Markenfarbe, Kastanie (Kuri) für die Schulungsaufgaben. Hell ist Standard, /// dunkel wird unterstützt. Siehe design/README.md. enum Theme { static let tokiwa = adaptive(light: 0x2F6B4F, dark: 0x6DBB93) // Marke, Diener-Bereich static let kuri = adaptive(light: 0x7A5230, dark: 0xD0A07A) // Schulungsbereich static let tokiwaSoft = adaptive(light: 0xE4EFE8, dark: 0x1F2D26) static let kuriSoft = adaptive(light: 0xF2E9DF, dark: 0x2E2620) static let kohaku = adaptive(light: 0xB45309, dark: 0xF0A35A) // "nie" static let kohakuSoft = adaptive(light: 0xFDF1E3, dark: 0x3A2A18) static let line = adaptive(light: 0xE4E0D8, dark: 0x30332F) static let muted = adaptive(light: 0x7A746B, dark: 0x9A958C) static let faint = adaptive(light: 0xC6C0B6, dark: 0x4C4F4A) static let bengara = adaptive(light: 0xB5452B, dark: 0xE8775D) // Warnungen static func color(for group: TaskGroup) -> Color { group == .diener ? tokiwa : kuri } static func soft(for group: TaskGroup) -> Color { group == .diener ? tokiwaSoft : kuriSoft } static func adaptive(light: UInt32, dark: UInt32) -> Color { Color(nsColor: NSColor(name: nil) { appearance in let isDark = appearance.bestMatch(from: [.darkAqua, .aqua]) == .darkAqua return NSColor(hex: isDark ? dark : light) }) } } extension NSColor { convenience init(hex: UInt32) { self.init(srgbRed: CGFloat((hex >> 16) & 0xFF) / 255, green: CGFloat((hex >> 8) & 0xFF) / 255, blue: CGFloat(hex & 0xFF) / 255, alpha: 1) } }