Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

pawello2222/PhantomKit

Open more actions menu

Repository files navigation

PhantomKit logo

Build Code coverage Language Supported platforms

Swift Package Manager Release version License

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.

Table of Contents
  1. Libraries
  2. Installation
  3. Highlights
  4. License

Libraries

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

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

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

PhantomKit is available under the MIT license. See the LICENSE file for more info.

Releases

Packages

Used by

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.