// // DesignTokens.swift // Focale // // Author: Simon-Pierre Boucher // Contact: contact@spboucher.ai // import SwiftUI enum DesignTokens { // MARK: - Color /// Warm amber accent — the aperture color of the app icon. static let accent = Color(red: 1.0, green: 0.58, blue: 0.16) static let surface = Color(red: 0.07, green: 0.08, blue: 0.10) static let surfaceRaised = Color(red: 0.12, green: 0.13, blue: 0.16) static let textSecondary = Color.white.opacity(0.6) /// Generated (model) content is always visually distinct from real data /// (CLAUDE.md §8). This tint marks anything that came out of the LLM. static let generatedContent = Color(red: 0.62, green: 0.55, blue: 0.95) // MARK: - Metrics static let cornerRadius: CGFloat = 14 static let controlSpacing: CGFloat = 12 static let shutterDiameter: CGFloat = 76 // MARK: - Typography /// Monospaced digits so dial values don't jitter while scrubbing. static let controlValueFont = Font.system(size: 15, weight: .semibold, design: .rounded) .monospacedDigit() static let controlLabelFont = Font.system(size: 11, weight: .medium, design: .rounded) } /// Small badge marking model-generated text, per CLAUDE.md §8: /// a generated description must never look like a real datum. struct GeneratedBadge: View { var body: some View { Label("Générée", systemImage: "sparkles") .font(.caption2.weight(.semibold)) .padding(.horizontal, 6) .padding(.vertical, 2) .background(DesignTokens.generatedContent.opacity(0.2), in: Capsule()) .foregroundStyle(DesignTokens.generatedContent) } }