{"id":16482749,"url":"https://github.com/shaps80/swiftuiplus","last_synced_at":"2025-03-21T07:30:50.543Z","repository":{"id":162094972,"uuid":"604644147","full_name":"shaps80/SwiftUIPlus","owner":"shaps80","description":"SwiftUI additions and helpers that are missing from the official implementation.","archived":false,"fork":false,"pushed_at":"2023-09-28T07:56:03.000Z","size":45,"stargazers_count":28,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-01T03:51:21.061Z","etag":null,"topics":["swift","swiftui"],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shaps80.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-02-21T13:51:46.000Z","updated_at":"2025-02-18T21:08:42.000Z","dependencies_parsed_at":null,"dependency_job_id":"cef883ff-a955-4f2f-b3f2-17f2d08077a5","html_url":"https://github.com/shaps80/SwiftUIPlus","commit_stats":null,"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shaps80%2FSwiftUIPlus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shaps80%2FSwiftUIPlus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shaps80%2FSwiftUIPlus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shaps80%2FSwiftUIPlus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shaps80","download_url":"https://codeload.github.com/shaps80/SwiftUIPlus/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244119567,"owners_count":20401014,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["swift","swiftui"],"created_at":"2024-10-11T13:11:50.070Z","updated_at":"2025-03-21T07:30:50.218Z","avatar_url":"https://github.com/shaps80.png","language":"Swift","funding_links":["https://github.com/sponsors/shaps80"],"categories":[],"sub_categories":[],"readme":"![watchOS](https://img.shields.io/badge/watchOS-DE1F51)\n![macOS](https://img.shields.io/badge/macOS-EE751F)\n![tvOS](https://img.shields.io/badge/tvOS-00B9BB)\n![ios](https://img.shields.io/badge/iOS-0C62C7)\n[![swift](https://img.shields.io/endpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2Fshaps80%2FSwiftUIPlus%2Fbadge%3Ftype%3Dswift-versions)](https://swiftpackageindex.com/shaps80/SwiftUIPlus)\n\n# SwiftUI Plus\n\nIntroducing a collection of SwiftUI additions to make your projects easier to build.\n\n\u003e Additionally, I hope this repo also serves as a great resource for _how_ you to implement SwiftUI features 👍\n\n## Sponsor\n\nBuilding useful libraries like these, takes time away from my family. I build these tools in my spare time because I feel its important to give back to the community. Please consider [Sponsoring](https://github.com/sponsors/shaps80) me as it helps keep me working on useful libraries like these 😬\n\nYou can also give me a follow and a 'thanks' anytime.\n\n[![Twitter](https://img.shields.io/badge/Twitter-@shaps-4AC71B)](http://twitter.com/shaps)\n\n## Additions\n\n#### FittingGeometryReader\n\nA `GeometryReader` that auto-sizes itself, enabling you to size your content automatically, while still gaining access to the proxy's values like its runtime size.\n\n#### Scrollable Stacks\n\n- `VScrollStack` – Wraps a `VStack` in a `ScrollView` while still respecting elements like `Spacer`\n- `HScrollStack` – Wraps an `HStack` in a `ScrollView` while still respecting elements like `Spacer`\n\n#### TextSlider\n\nA new text-based slider that provides gestural interactions via drag operations, as well as direct keyboard entry for more specific values. In addition it supports a styling API for custom designs.\n\n#### VFlowStack\n\nA vertical line-based stack view that lays out its children horizontally until they no longer fit at which point it begins “wrapping” the children onto a new line.\n\n\u003e Similar to UICollectionViewFlowLayout\n\n####\n\n__Haptics and Feedback__\n\nSupports various familiar animation-inspired APIs for attaching haptics and other feedback (audio, flash, etc) to state changes.\n\nAs a convenience the API provides `haptic` focused APIs.\n\n- `withHaptic(.selection) { }`\n- `body.haptic(.selection) { }`\n\nHowever you can also use the `withFeedback` and `feedback` APIs to gain more control and access to other feedback methods. In particular you can combine methods to provide more complex feedback to the user.\n\n```\nwithFeedback(\n    .haptic(.selection)\n    .combined(with: \n        .audio(.focusChangeSmall)\n    )\n)\n```\n\n\u003e This example will play a short audio file, while providing haptic feedback (where supported)\n\nAlso note, the Feedback Audio APIs provide simplified access to almost all built-in audio files for your convenience.\n\n## Dependencies\n\nThis package automatically includes [SwiftBackports](https://github.com/shaps80/SwiftBackports) and [SwiftUIBackports](https://github.com/shaps80/SwiftUIBackports) to provide a richer set of APIs for all SwiftUI clients.\n\n- If you only want SwiftUI additions, you can use the [SwiftUIBackports](https://github.com/shaps80/SwiftUIBackports) package directly.\n- If instead you only need the Swift additions, you can use [SwiftBackports](https://github.com/shaps80/SwiftBackports), which also includes support for olders operating systems.\n\n## Installation\n\nYou can install manually (by copying the files in the `Sources` directory) or using Swift Package Manager (**preferred**)\n\nTo install using Swift Package Manager, add this to the `dependencies` section of your `Package.swift` file:\n\n`.package(url: \"https://github.com/shaps80/SwiftUIPlus.git\", .upToNextMinor(from: \"1.0.0\"))`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshaps80%2Fswiftuiplus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshaps80%2Fswiftuiplus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshaps80%2Fswiftuiplus/lists"}