2026-07-07 15:20:53 +09:00

59 lines
2.1 KiB
Swift

//
// Theme.swift
// Haru_Danim
//
// (CLAUDE.md §5.2)
//
import SwiftUI
import UIKit
extension Color {
/// "#RRGGBB" hex
init(hex: String) {
let cleaned = hex.trimmingCharacters(in: CharacterSet.alphanumerics.inverted)
var value: UInt64 = 0
Scanner(string: cleaned).scanHexInt64(&value)
let r = Double((value >> 16) & 0xFF) / 255
let g = Double((value >> 8) & 0xFF) / 255
let b = Double(value & 0xFF) / 255
self.init(red: r, green: g, blue: b)
}
/// /
init(light: Color, dark: Color) {
self.init(uiColor: UIColor { traits in
traits.userInterfaceStyle == .dark ? UIColor(dark) : UIColor(light)
})
}
/// "#RRGGBB" hex
var hexString: String {
let ui = UIColor(self)
var r: CGFloat = 0, g: CGFloat = 0, b: CGFloat = 0, a: CGFloat = 0
ui.getRed(&r, green: &g, blue: &b, alpha: &a)
return String(
format: "#%02X%02X%02X",
Int(round(r * 255)), Int(round(g * 255)), Int(round(b * 255))
)
}
}
enum AppTheme {
/// Primary Green: /
static let green = Color(light: Color(hex: "#2F6B4F"), dark: Color(hex: "#7FBF9E"))
/// Accent Yellow: /
static let yellow = Color(light: Color(hex: "#D9A621"), dark: Color(hex: "#E8C558"))
/// Background: /
static let background = Color(light: Color(hex: "#FAFAF6"), dark: Color(hex: "#111512"))
///
static let surface = Color(light: .white, dark: Color(hex: "#1B211D"))
/// (/ )
static let tagPresets: [String] = [
"#2F6B4F", "#D9A621", "#4A7A9D", "#9D5B4A",
"#7A5C9D", "#4F8A8B", "#C06C84", "#6B705C",
"#B5651D", "#3D5A80", "#8D6B94", "#588157",
]
}