{"id":13466759,"url":"https://github.com/blsage/iPages","last_synced_at":"2025-03-26T00:31:30.876Z","repository":{"id":40591501,"uuid":"301013641","full_name":"blsage/iPages","owner":"blsage","description":"Quickly implement swipable page views.","archived":false,"fork":false,"pushed_at":"2024-06-24T11:24:35.000Z","size":11279,"stargazers_count":170,"open_issues_count":11,"forks_count":16,"subscribers_count":5,"default_branch":"main","last_synced_at":"2024-10-29T20:33:09.679Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/blsage.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2020-10-04T01:00:10.000Z","updated_at":"2024-10-13T23:57:43.000Z","dependencies_parsed_at":"2024-10-29T20:04:30.228Z","dependency_job_id":null,"html_url":"https://github.com/blsage/iPages","commit_stats":null,"previous_names":["blsage/ipages","benjaminsage/ipages"],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blsage%2FiPages","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blsage%2FiPages/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blsage%2FiPages/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blsage%2FiPages/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/blsage","download_url":"https://codeload.github.com/blsage/iPages/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245566098,"owners_count":20636390,"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":[],"created_at":"2024-07-31T15:00:49.744Z","updated_at":"2025-03-26T00:31:27.595Z","avatar_url":"https://github.com/blsage.png","language":"Swift","funding_links":[],"categories":["Libs"],"sub_categories":["UI"],"readme":"\u003ch1 align=\"center\"\u003e iPages📖\u003c/p\u003e\n\u003ch3 align=\"center\"\u003e Quickly implement swipable page views in iOS. 📝 \u003c/h3\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003cstrong\u003e\u003ca href=\"#get-started\"\u003eGet Started\u003c/a\u003e\u003c/strong\u003e |\n    \u003cstrong\u003e\u003ca href=\"#examples\"\u003eExamples\u003c/a\u003e\u003c/strong\u003e |\n    \u003cstrong\u003e\u003ca href=\"#customize\"\u003eCustomize\u003c/a\u003e\u003c/strong\u003e |\n    \u003cstrong\u003e\u003ca href=\"#install\"\u003eInstall\u003c/a\u003e\u003c/strong\u003e | \n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"./Resources/ipages.gif\" alt=\"CI\" /\u003e\n\u003c/p\u003e\n\n\u003cbr/\u003e\n\n## Get Started\n\n1. [Install](https://github.com/benjaminsage/iPages/blob/main/INSTALL.md) `iPages`\n\n2. Add `iPages` to your project\n```swift\nimport SwiftUI\nimport iPages\n\nstruct ContentView: View {\n    var body: some View {\n        iPages {\n            Text(\"iPages 🤑\")\n            Color.pink\n        }\n    }\n}\n```\n\n3. Customize your `iPages`\n\n\n## Examples\n### Marketing Materials 💸\n\n\u003cimg align=\"right\" src=\"./Resources/iPagesDemo2Light.gif\" width=\"250\"\u003e\n\nUse `iGraphicsView` to demo marketing slides.\n\n```swift\nimport SwiftUI\nimport iPages\nimport iGraphics\n\nstruct ContentView: View {\n    var body: some View {\n        iPages {\n            iGraphicsView(.first)\n            iGraphicsView(.second)\n            iGraphicsView(.third)\n        }\n    }\n}\n```\n\n\u003cbr clear=\"right\"/\u003e\n\u003cbr/\u003e\n\n\u003ch3 align=\"left\"\u003eShopping App 🛍\u003c/h3\u003e\n\u003cp align=\"left\"\u003eIf you want, you can pass in your own optional selection binding to iPages. Hide the bottom dots \u0026 add infinite scroll to remove context.\u003c/p\u003e\n\n\u003cimg align=\"left\" src=\"./Resources/iPagesDemo1Dark.gif\" width=\"250\"\u003e\n\n```swift\nimport SwiftUI\nimport iPages\nimport iGraphics\n\nstruct ContentView: View {\n    @State var currentPage: Int = 0\n\n    var body: some View {\n        iPages(selection: $currentPage) {\n            iGraphicsBox(.photo)\n                .stack(3)\n            iGraphicsBox(.card)\n                .stack(2)\n        }\n        .hideDots(true)\n        .wraps(true)\n    }\n}\n```\n\n\u003cbr clear=\"left\"/\u003e\n\u003cbr/\u003e\n\u003cbr/\u003e\n\n## Customize 🎀\n\n`iPages` takes a trailing view builder of ordered views. You can also optionally pass in your own page index binding called `selection:`, to let you build your own page control, or however you want to use it. `iPages` supports a variety of custom modifiers. All customizations are built into our modifiers.\n\n**Example**: Change the dot colors, enable infinite wrap \u0026 hide dots for single page views with the following code block:\n```swift\niPages(selection: $currentPage) {\n    Text(\"👏\")\n}\n.dotsTintColors(currentPage: Color, otherPages: Color)\n.wraps(true)\n.dotsHideForSinglePage(true)\n.navigationOrientation(.vertical)\n\n```\n\nUse our exhaustive input list to customize your views.\n\n| | Modifier or Initializer | Description\n| --- | --- | ---\n👷‍♀️ | `.init(content:)` | Initializes the page 📃📖 view.\n👷‍♂️ | `.init(selection:content:)` | Initializes the page 📃📖 view with a selection binding.\n⏺ | `.hideDots(_:)` | Modifies whether or not the page view should include the standard page control dots. (••••)\n🔄 | `.wraps(_:)` | Modifies whether or not the page view should restart at the beginning 🔁 when swiping past the end (and vise-versa)\n1️⃣ | `.dotsHideForSinglePage(_:)` | Modifies whether the page dots are hidden when there is only one page. 1️⃣⤵️\n🎨 | `.dotsTintColors(currentPage:otherPages:)` | Modifies tint colors 🟡🟢🔴🟣 to be used for the page dots.\n🔘 | `.dotsBackgroundStyle(_:)` | Modifies the background style ⚪️🔘 of the page dots.\n🔃 | `.dotsAllowContinuousInteraction(_:)` | Modifies the continuous interaction settings of the dots. 🔄\n↔️ | `.dotsAlignment(_:)` | Modifies the **alignment of the page dots**. 👆 👇\n↕️ | `.navigationOrientation(_:)` | Modifies the navigation **orientation** of the page view. ↔️ ↕️\n🦿 | `.disableBounce(_:)` | Disables the **bounce** settings of the page view. This is especially useful for scroll views.\n↔️ | `.interPageSpacing(_:)` | Modifies the spacing between the pages. ↔️\n🎥 | `.animated(_:)` | Modifies whether the the pages animate the slide if the `selection` binding changes. 🎥\n\n\n## Install \nUse the Swift package manager to install. Find instructions [here](https://github.com/benjaminsage/iPages/blob/main/INSTALL.md)😀\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblsage%2FiPages","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fblsage%2FiPages","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblsage%2FiPages/lists"}