PhantomKit is a collection of many useful Swift and SwiftUI extensions and components. It is an invisible layer that supports your application and makes writing Swift code easier.
Table of Contents
This package consists of several libraries - you can easily import only the ones you need:
🟤 PhantomKitCore - a collection of Swift extensions
🟠PhantomKitAPI - a networking library (components needed to access a web API)
🟢 PhantomKitLog - a logging library (console and OSLog implementation provided)
🟣 PhantomKitUI - a collection of SwiftUI components and extensions
- iOS 17.0+
- macOS 14.0+
- watchOS 10.0+
- tvOS 17.0+
PhantomKit is available as a Swift Package.
.package(url: "https://github.com/pawello2222/PhantomKit.git", .upToNextMajor(from: "2.0.0"))
let button = UIButton().apply {
$0.isUserInteractionEnabled = false
}
UserDefaults.standard.apply {
$0.set("Value 1", forKey: "Key 1")
$0.set("Value 2", forKey: "Key 2")
$0.set("Value 3", forKey: "Key 3")
}
let date = Date(year: 2000, month: 1, day: 2, hour: 3, minute: 4, second: 5)
XCTAssertEqual(date.adjusting(\.second, by: 1).component(.second), 6)
XCTAssertEqual(date.adjusting(\.minute, by: 1).component(.minute), 5)
XCTAssertEqual(date.adjusting(\.hour, by: 1).component(.hour), 4)
XCTAssertEqual(date.adjusting(\.day, by: 1).component(.day), 3)
XCTAssertEqual(date.adjusting(\.month, by: 1).component(.month), 2)
XCTAssertEqual(date.adjusting(\.year, by: 1).component(.year), 2001)
Text("PhantomKit")
.fixedSize(.horizontal)
.frame(max: .infinity)
.onTap {
print("PhantomKit tapped")
}
extension URL {
static let home = URL(string: "https://tersacore.com")!
}
Text("Link")
.link(url: .home, openedAs: .fullscreen)
Text("Link")
.link(url: .home, openedAs: .external)
Text("Open sheet view")
.sheet {
Text("Sheet view")
}
Text("Open fullscreen view")
.fullScreenCover {
Text("Sheet view")
}
Text("PhantomKit")
.alignment(horizontal: .trailing)
// vs
HStack {
Spacer()
Text("PhantomKit")
}
PhantomKit is available under the MIT license. See the LICENSE file for more info.