// // DesignTokens.swift // Prisme // // Author: Simon-Pierre Boucher // import SwiftUI /// Semantic color assigned to an identity container. Stored as a token /// (not raw color values) so themes can reinterpret it later. enum ContainerColor: String, Codable, CaseIterable, Sendable { case bleu case vert case orange case violet var color: Color { switch self { case .bleu: Color(red: 0.20, green: 0.45, blue: 1.00) case .vert: Color(red: 0.18, green: 0.72, blue: 0.42) case .orange: Color(red: 1.00, green: 0.56, blue: 0.15) case .violet: Color(red: 0.55, green: 0.36, blue: 0.96) } } /// Lighter companion shade, for gradients. var secondary: Color { switch self { case .bleu: Color(red: 0.35, green: 0.78, blue: 1.00) case .vert: Color(red: 0.55, green: 0.90, blue: 0.55) case .orange: Color(red: 1.00, green: 0.80, blue: 0.30) case .violet: Color(red: 0.80, green: 0.50, blue: 1.00) } } var gradient: LinearGradient { LinearGradient( colors: [color, secondary], startPoint: .topLeading, endPoint: .bottomTrailing ) } } /// Spacing scale. Use these instead of magic numbers in views. enum Spacing { static let xs: CGFloat = 4 static let s: CGFloat = 8 static let m: CGFloat = 12 static let l: CGFloat = 16 static let xl: CGFloat = 24 } /// Corner radius scale. enum Radius { static let s: CGFloat = 8 static let m: CGFloat = 12 static let l: CGFloat = 20 static let xl: CGFloat = 26 }