{"id":17686599,"url":"https://github.com/vinhnx/laden","last_synced_at":"2025-05-07T12:46:41.160Z","repository":{"id":63921217,"uuid":"322254199","full_name":"vinhnx/Laden","owner":"vinhnx","description":"SwiftUI loading indicator view","archived":false,"fork":false,"pushed_at":"2025-03-20T14:21:07.000Z","size":236,"stargazers_count":31,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-09T16:17:39.287Z","etag":null,"topics":["animation","control","laden","loading","swift","swift-package-manager","swiftui","xcode","zstack"],"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/vinhnx.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2020-12-17T10:06:48.000Z","updated_at":"2025-03-20T14:21:11.000Z","dependencies_parsed_at":"2024-01-15T15:47:25.105Z","dependency_job_id":"5b2d0731-ea90-4ff9-8694-55bfba398e39","html_url":"https://github.com/vinhnx/Laden","commit_stats":{"total_commits":18,"total_committers":2,"mean_commits":9.0,"dds":0.4444444444444444,"last_synced_commit":"bcb94cb554e7e487de978ffa563db083ffdcae08"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vinhnx%2FLaden","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vinhnx%2FLaden/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vinhnx%2FLaden/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vinhnx%2FLaden/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vinhnx","download_url":"https://codeload.github.com/vinhnx/Laden/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252881932,"owners_count":21819148,"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":["animation","control","laden","loading","swift","swift-package-manager","swiftui","xcode","zstack"],"created_at":"2024-10-24T10:45:21.831Z","updated_at":"2025-05-07T12:46:41.120Z","avatar_url":"https://github.com/vinhnx.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eLaden\u003c/h1\u003e\n\u003cp align=\"center\"\u003eSwiftUI loading indicator view\u003c/p\u003e\n\u003cp align=\"center\"\u003e\u003cimg src=\"./Resources/loading.gif\"/\u003e\u003c/p\u003e\n\n---\n[![](https://img.shields.io/endpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2Fvinhnx%2FLaden%2Fbadge%3Ftype%3Dplatforms)](https://swiftpackageindex.com/vinhnx/Laden)\n[![](https://img.shields.io/endpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2Fvinhnx%2FLaden%2Fbadge%3Ftype%3Dswift-versions)](https://swiftpackageindex.com/vinhnx/Laden)\n\n### Installation\n\nThis component is built using Swift Package Manager, it is pretty straight forward to use, no command-line needed:\n\n1. In Xcode (11+), open your project and navigate to `File \u003e Swift Packages \u003e Add Package Dependency...`\n2. Paste the repository URL: \n```\nhttps://github.com/vinhnx/Laden\n```\nand click `Next` to have Xcode resolve package.\n3. For Rules, select `Versions`, and choose `Up to Next Major` as `0.1.0`, or checkout the [Releases](https://github.com/vinhnx/Laden/tags) tab for upcoming releases.\n![package_options.png](./Resources/package_options.png \"package_options.png\")\n4. Click `Finish` to integrate package into your Xcode target.\n5. Profit! ☺️\n\n### Usage\n\nAt simplest form:\n\n```swift\nimport SwiftUI\nimport Laden\n\nstruct ContentView: View {\n    var body: some View {\n        Laden.CircleLoadingView()\n    }\n}\n```\n\n---\n\nTo show loading view on top on current view, you can embed Laden inside a `ZStack`, and put it below your current view:\n\n```swift\nZStack {\n    Text(\"Some text\") // your content view\n    Laden.CircleOutlineLoadingView()\n}\n```\n\nor simply just use `.overlay` attribute:\n\n```swift\nText(\"Some text\") // your content view\n  .overlay(Laden.BarLoadingView())\n```\n\n![ZStack](./Resources/loading_zstack.gif \"ZStack\")\n\n\u003e ### [ZStack](https://developer.apple.com/documentation/swiftui/zstack)\n\u003e A view that overlays its children, aligning them in both axes.\n\n---\n\nTo indicate loading state, have a private loading bool `@State` and bind it to Laden's `isAnimating` initialzier, default value is `true` (or animated by default):\n\n```swift\nimport SwiftUI\nimport Laden\n\nstruct ContentView: View {\n    @State private var isLoading = true\n\n    var body: some View {\n        VStack {\n            Laden.CircleLoadingView(isAnimating: isLoading)\n            Button(isLoading ? \"Stop loading\" : \"Start loading\") {\n                self.isLoading.toggle()\n            }\n        }\n    }\n}\n```\n\n---\n\nTo show or hide loading view, have a private show/hide bool `@State` and modify said loading with `.hidden` attribute, when toggled:\n\n```swift\nimport SwiftUI\nimport Laden\n\nstruct ContentView: View {\n    @State private var shouldLoadingView = true\n\n    var laden: some View {\n        Laden.CircleLoadingView(\n            color: .white, size: CGSize(width: 30, height: 30), strokeLineWidth: 3\n        )\n    }\n    \n    var body: some View {\n        VStack {\n            if shouldLoadingView {\n                laden.hidden()\n            } else {\n                laden\n            }\n\n            Button(shouldCircleView ? \"Show\" : \"Hide\") {\n                self.shouldLoadingView.toggle()\n            }\n        }\n    }\n}\n```\n\n---\n\n### Customization\n\nTo customize loading view color, use `color` initializer:\n\n```swift\nLaden.CircleOutlineLoadingView(color: .red)\n```\n\nAvailable customizations:\n\n```swift\n/// Loading view protocol that define default configurations.\npublic protocol LoadingAnimatable: View {\n    /// Whether this loading view is animating.\n    var isAnimating: Bool { get }\n\n    /// Default color for loading view.\n    var color: Color { get }\n\n    /// The default size for loading view.\n    var size: CGSize { get set }\n\n    /// Default stroke line width for loading bar.\n    var strokeLineWidth: CGFloat { get }\n}\n```\n\n---\n\n### Apps currently using Laden\n\n+ [Clendar](https://github.com/vinhnx/Clendar) - Clendar - universal calendar app. Written in SwiftUI. Available on App Store. MIT License.\n\n([add yours here](https://github.com/vinhnx/Laden/pulls))\n\n---\n\n### Acknowledgement \n\nidea 💡\n\n+ [AppCoda's SwiftUI animation](https://www.appcoda.com/swiftui-animation-basics-building-a-loading-indicator/): for basic building block.\n+ [ActivityIndicators](https://github.com/sketch204/ActivityIndicators): for idea how to build and publish a custom SwiftUI control package.\n\n---\n\n### What is Laden, actually? \n\n[It's mean \"charge\", in Norwegian](https://twitter.com/onmyway133/status/1339596827453050884?s=12) ⚡️\n\n---\n\n### Help, feedback or suggestions?\n\nFeel free to [open an issue](https://github.com/Laden/issues) or contact me on [Twitter](https://twitter.com/@vinhnx) for discussions, news \u0026 announcements \u0026 other projects. 🚀\n\nI hope you like it! :)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvinhnx%2Fladen","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvinhnx%2Fladen","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvinhnx%2Fladen/lists"}