SoliCards-iOS-iPadOS-MacOS/SoliCards/Services/HapticManager.swift
idev2025 de0da01f25 feat: SoliCards v1.2.0 — native SwiftUI solitaire for iOS, iPadOS, macOS
Complete native rewrite of the web-based SoliCards game as a SwiftUI
multiplatform app targeting iOS 17+, iPadOS 17+, and macOS 14+.

Three solitaire variants (Klondike, Spider, FreeCell) with full game
rules, drag & drop, smart zoom layout, 6 themes, 4 difficulty levels,
SwiftData persistence, VoiceOver accessibility, and 57 unit tests.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-14 08:26:14 -04:00

45 lines
1.1 KiB
Swift

import Foundation
#if canImport(UIKit)
import UIKit
#endif
@MainActor
enum HapticManager {
static func impact(_ style: HapticStyle = .medium) {
#if canImport(UIKit) && !os(macOS)
let generator: UIImpactFeedbackGenerator
switch style {
case .light:
generator = UIImpactFeedbackGenerator(style: .light)
case .medium:
generator = UIImpactFeedbackGenerator(style: .medium)
case .heavy:
generator = UIImpactFeedbackGenerator(style: .heavy)
}
generator.impactOccurred()
#endif
}
static func notification(_ type: HapticNotification) {
#if canImport(UIKit) && !os(macOS)
let generator = UINotificationFeedbackGenerator()
switch type {
case .success:
generator.notificationOccurred(.success)
case .warning:
generator.notificationOccurred(.warning)
case .error:
generator.notificationOccurred(.error)
}
#endif
}
}
enum HapticStyle: Sendable {
case light, medium, heavy
}
enum HapticNotification: Sendable {
case success, warning, error
}