import Foundation import Combine /// Type of panel content public enum PanelType: String, Codable, Sendable { case terminal case browser } enum FocusFlashCurve: Equatable { case easeIn case easeOut } struct FocusFlashSegment: Equatable { let delay: TimeInterval let duration: TimeInterval let targetOpacity: Double let curve: FocusFlashCurve } enum FocusFlashPattern { static let values: [Double] = [0, 1, 0, 1, 0] static let keyTimes: [Double] = [0, 0.25, 0.5, 0.75, 1] static let duration: TimeInterval = 0.9 static let curves: [FocusFlashCurve] = [.easeOut, .easeIn, .easeOut, .easeIn] static let ringInset: Double = 6 static let ringCornerRadius: Double = 10 static var segments: [FocusFlashSegment] { let stepCount = min(curves.count, values.count - 1, keyTimes.count - 1) return (0..