pawello2222/phantomkit
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.
Libraries <a name="libraries"></a>
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
Installation <a name="installation"></a>
Requirements
- iOS 17.0+
- macOS 14.0+
- watchOS 10.0+
- tvOS 17.0+
Swift Package Manager
PhantomKit is available as a Swift Package.
.package(url: "https://github.com/pawello2222/PhantomKit.git", .upToNextMajor(from: "2.0.0"))Highlights <a name="highlights"></a>
PhantomKitCore
Appliable
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")
}Date
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)PhantomKitUI
Convenience methods
Text("PhantomKit")
.fixedSize(.horizontal)
.frame(max: .infinity)
.onTap {
print("PhantomKit tapped")
}Links
extension URL {
static let home = URL(string: "https://tersacore.com")!
}Text("Link")
.link(url: .home, openedAs: .fullscreen)Text("Link")
.link(url: .home, openedAs: .external)Presentation
Text("Open sheet view")
.sheet {
Text("Sheet view")
}Text("Open fullscreen view")
.fullScreenCover {
Text("Sheet view")
}View alignment
Text("PhantomKit")
.alignment(horizontal: .trailing)
// vs
HStack {
Spacer()
Text("PhantomKit")
}License <a name="license"></a>
PhantomKit is available under the MIT license. See the LICENSE file for more info.
Package Metadata
Repository: pawello2222/phantomkit
Default branch: main
README: README.md