Contents

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