// ── Haptic Engine ────────────────────────────────────────────── // Urgency-mapped haptic feedback patterns import UIKit enum HapticEngine { /// Haptic for pre-warning static func warning(urgency: UrgencyLevel) { switch urgency { case .critical, .important: let generator = UINotificationFeedbackGenerator() generator.notificationOccurred(.warning) case .standard: let generator = UIImpactFeedbackGenerator(style: .medium) generator.impactOccurred() case .gentle: let generator = UIImpactFeedbackGenerator(style: .light) generator.impactOccurred() case .passive: break // no haptic for passive } } /// Haptic for timer fire static func fire(urgency: UrgencyLevel) { switch urgency { case .critical: let generator = UINotificationFeedbackGenerator() generator.notificationOccurred(.error) case .important: let generator = UINotificationFeedbackGenerator() generator.notificationOccurred(.warning) case .standard: let generator = UINotificationFeedbackGenerator() generator.notificationOccurred(.success) case .gentle: let generator = UIImpactFeedbackGenerator(style: .light) generator.impactOccurred() case .passive: break } } /// Haptic for button tap static func tap() { let generator = UIImpactFeedbackGenerator(style: .light) generator.impactOccurred() } /// Haptic for selection change static func selection() { let generator = UISelectionFeedbackGenerator() generator.selectionChanged() } }