You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

36 lines
1.7 KiB

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

Powered by TurnKey Linux.