{"id":21942010,"url":"https://github.com/malekkamel/springmenu","last_synced_at":"2026-04-12T21:45:04.378Z","repository":{"id":62455911,"uuid":"373620829","full_name":"MalekKamel/SpringMenu","owner":"MalekKamel","description":"SwiftUI awesome menu with Spring animation.","archived":false,"fork":false,"pushed_at":"2021-06-23T00:26:26.000Z","size":6652,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-20T22:08:17.604Z","etag":null,"topics":["accio","animated","animation","animations","apple","carthage","cocoapods","developer","ios","library","macos","menu","software","spm","spring","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":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MalekKamel.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-06-03T19:35:18.000Z","updated_at":"2023-12-04T04:58:22.000Z","dependencies_parsed_at":"2022-11-02T00:01:09.643Z","dependency_job_id":null,"html_url":"https://github.com/MalekKamel/SpringMenu","commit_stats":null,"previous_names":["malekkamel/springmenu","shabankamell/springmenu"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MalekKamel%2FSpringMenu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MalekKamel%2FSpringMenu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MalekKamel%2FSpringMenu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MalekKamel%2FSpringMenu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MalekKamel","download_url":"https://codeload.github.com/MalekKamel/SpringMenu/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244976030,"owners_count":20541402,"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":["accio","animated","animation","animations","apple","carthage","cocoapods","developer","ios","library","macos","menu","software","spm","spring","swift","swiftui"],"created_at":"2024-11-29T03:16:11.356Z","updated_at":"2026-04-12T21:44:59.332Z","avatar_url":"https://github.com/MalekKamel.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"SpringMenu\n================\n\n\u003cp align=\"center\"\u003e\u003ca href=\"https://github.com/ShabanKamell/SpringMenu\"\u003e\u003cimg src=\"https://github.com/ShabanKamell/SpringMenu/blob/master/blob/logo2.jpeg?raw=true\" alt=\"Gray shape shifter\" height=\"300\"/\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch1 align=\"center\"\u003eSpringMenu\u003c/h1\u003e\n\u003cp align=\"center\"\u003eThe most awesome SwiftUI menu with spring animation\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://twitter.com/intent/tweet?text=SpringMenu,%20The%20most%20awesome%20SwiftUI%20menu%20with%20spring%20animation.%20Clean,%20simple,%20and%20customizable\u0026url=https://github.com/ShabanKamell/SpringMenu\u0026hashtags=swiftui,ios,macos,tvos,developers\"\u003e\u003cimg src=\"https://img.shields.io/twitter/url/http/shields.io.svg?style=social\" height=\"20\"/\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\t\u003ca href=\"\"\u003e\u003cimg src=\"https://img.shields.io/badge/platforms-iOS%20%7C%20macOS%20%7C%20tvOS%20%7C%20watchOS%20%7C%20Linux-333333.svg\" height=\"20\"/\u003e\u003c/a\u003e\n\t\u003ca href=\"https://github.com/Carthage/Carthage\"\u003e\u003cimg src=\"https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat\" height=\"20\"/\u003e\u003c/a\u003e\n\t\u003ca href=\"https://github.com/ShabanKamell/SpringMenu/blob/master/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/price-FREE-0098f7.svg\" height=\"20\"/\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cbr/\u003e\u003cbr/\u003e\n\n\u003cdiv align=\"center\"\u003e\n\t\u003ch1 align=\"center\"\u003eDemo Video\u003c/h1\u003e\n        \u003ca href=\"https://www.youtube.com/watch?v=_jS7ffhYNsw\"\u003e\u003cimg src=\"https://img.youtube.com/vi/_jS7ffhYNsw/0.jpg\" alt=\"IMAGE ALT TEXT\"\u003e\u003c/a\u003e\n\u003c/div\u003e\n\n# Table of contents\n\n- [Usage](#usage)\n    - [Design](#design)\n    - [Basic Setup](#basic-setup)\n- [Items](#items)\n    - [2 Items](#2-items)\n    - [3 Items](#3-items)\n    - [4 Items](#4-items)\n    - [5 Items](#5-items)\n    - [6 Items](#6-items)\n    - [7 Items](#7-items)\n    - [8 Items](#8-items)\n- [Installation](#installation)\n    - [CocoaPods](#cocoapods)\n    - [Swift Package Manager](#swift-package-manager)\n    - [Accio](#accio)\n    - [Carthage](#carthage)\n- [Contribution](#contribution)\n- [Changelog](#changelog)\n- [License](#license)\n\n## :zap: Usage\n\n## Design\n\n\u003cp align=\"center\"\u003e\u003ca href=\"https://github.com/ShabanKamell/SpringMenu/blob/master/blob/structure.jpeg\"\u003e\u003cimg src=\"https://github.com/ShabanKamell/SpringMenu/blob/master/blob/structure.jpeg?raw=true\" alt=\"Gray shape shifter\" height=\"300\"/\u003e\u003c/a\u003e\u003c/p\u003e\n\n### Basic Setup\n\n```swift\n// 1- Define items\nlet items = TwoSpringItems(\n        item1: SpringItem.Builder()\n                .icon(Image(systemName: \"photo\"))\n                .backgroundColor(.black)\n                .foregroundColor(.white)\n                .build(),\n        item2: SpringItem.Builder()\n                .icon(Image(systemName: \"note.text\"))\n                .backgroundColor(.black)\n                .foregroundColor(.white)\n                .build()\n)\n\n// 2- Define settings\nlet settings = SpringMenuSettings.Builder()\n        .icon(.plus,\n                backgroundColor: .init(collapsed: .black, expanded: .white),\n                foreGroundColor: .init(collapsed: .white, expanded: .black))\n        .items(items: items, position: .top)\n        .backgroundColor(.white)\n        .build()\n\n// 3- The Menu :)\nSpringMenu(isExpanded: $isExpanded, settings: settings)\n        .frame(height: 300)\n```\n\n## Items\n\n**SpringMenu** supports from 2 to 8 items. Some numbers require position or gravity to display correctly. In the\nfollowing lines, we'll explain how to use the items.\n\n### 2 Items\n\n```swift\n\nTwoSpringItems(\n        item1: SpringItem.Builder()\n                .icon(Image(systemName: \"photo\"))\n                .backgroundColor(.black)\n                .foregroundColor(.white)\n                .build(),\n        item2: SpringItem.Builder()\n                .icon(Image(systemName: \"note.text\"))\n                .backgroundColor(.black)\n                .foregroundColor(.white)\n                .build()\n)\n\n```\n\n#### Position\n\n```swift\nenum Position {\n    case top\n    case bottom\n    case vertical\n    case horizontal\n}\n```\n\n##### Top\n\n\u003cp align=\"center\"\u003e\u003ca href=\"https://github.com/ShabanKamell/SpringMenu/blob/master/blob/items/2-top.jpeg\"\u003e\u003cimg src=\"https://github.com/ShabanKamell/SpringMenu/blob/master/blob/items/2-top.jpeg?raw=true\" alt=\"Gray shape shifter\" width=\"325\" height=\"200\"/\u003e\u003c/a\u003e\u003c/p\u003e\n\n##### Bottom\n\n\u003cp align=\"center\"\u003e\u003ca href=\"https://github.com/ShabanKamell/SpringMenu/blob/master/blob/items/2-bottom.jpeg\"\u003e\u003cimg src=\"https://github.com/ShabanKamell/SpringMenu/blob/master/blob/items/2-bottom.jpeg?raw=true\" alt=\"Gray shape shifter\" width=\"325\" height=\"200\"/\u003e\u003c/a\u003e\u003c/p\u003e\n\n##### Vertical\n\n\u003cp align=\"center\"\u003e\u003ca href=\"https://github.com/ShabanKamell/SpringMenu/blob/master/blob/items/2-vertical.jpeg\"\u003e\u003cimg src=\"https://github.com/ShabanKamell/SpringMenu/blob/master/blob/items/2-vertical.jpeg?raw=true\" alt=\"Gray shape shifter\" width=\"325\" height=\"270\"/\u003e\u003c/a\u003e\u003c/p\u003e\n\n##### Horizontal\n\n\u003cp align=\"center\"\u003e\u003ca href=\"https://github.com/ShabanKamell/SpringMenu/blob/master/blob/items/2-horizontal.jpeg\"\u003e\u003cimg src=\"https://github.com/ShabanKamell/SpringMenu/blob/master/blob/items/2-horizontal.jpeg?raw=true\" alt=\"Gray shape shifter\" height=\"200\"/\u003e\u003c/a\u003e\u003c/p\u003e\n\n### 3 Items\n\n```swift\n\nThreeSpringItems(\n        item1: SpringItem.Builder()\n                .icon(Image(systemName: \"photo\"))\n                .backgroundColor(.blue)\n                .foregroundColor(.white)\n                .build(),\n        item2: SpringItem.Builder()\n                .icon(Image(systemName: \"note.text\"))\n                .backgroundColor(.blue)\n                .foregroundColor(.white)\n                .build(),\n        item3: SpringItem.Builder()\n                .icon(Image(systemName: \"doc\"))\n                .backgroundColor(.blue)\n                .foregroundColor(.white)\n                .build()\n)\n\n```\n\n#### Position\n\n```swift\nenum Position {\n    case top\n    case bottom\n    case leading\n    case trailing\n}\n```\n\n##### Top\n\n\u003cp align=\"center\"\u003e\u003ca href=\"https://github.com/ShabanKamell/SpringMenu/blob/master/blob/items/3-top.jpeg\"\u003e\u003cimg src=\"https://github.com/ShabanKamell/SpringMenu/blob/master/blob/items/3-top.jpeg?raw=true\" alt=\"Gray shape shifter\" width=\"250\" height=\"200\"/\u003e\u003c/a\u003e\u003c/p\u003e\n\n##### Bottom\n\n\u003cp align=\"center\"\u003e\u003ca href=\"https://github.com/ShabanKamell/SpringMenu/blob/master/blob/items/3-bottom.jpeg\"\u003e\u003cimg src=\"https://github.com/ShabanKamell/SpringMenu/blob/master/blob/items/3-bottom.jpeg?raw=true\" alt=\"Gray shape shifter\" width=\"250\" height=\"200\"/\u003e\u003c/a\u003e\u003c/p\u003e\n\n##### Leading\n\n\u003cp align=\"center\"\u003e\u003ca href=\"https://github.com/ShabanKamell/SpringMenu/blob/master/blob/items/3-leading.jpeg\"\u003e\u003cimg src=\"https://github.com/ShabanKamell/SpringMenu/blob/master/blob/items/3-leading.jpeg?raw=true\" alt=\"Gray shape shifter\" width=\"250\" height=\"200\"/\u003e\u003c/a\u003e\u003c/p\u003e\n\n##### Trailing\n\n\u003cp align=\"center\"\u003e\u003ca href=\"https://github.com/ShabanKamell/SpringMenu/blob/master/blob/items/3-trailing.jpeg\"\u003e\u003cimg src=\"https://github.com/ShabanKamell/SpringMenu/blob/master/blob/items/3-trailing.jpeg?raw=true\" alt=\"Gray shape shifter\" width=\"250\" height=\"200\"/\u003e\u003c/a\u003e\u003c/p\u003e\n\n### 4 Items\n\n```swift\n\nFourSpringItems(\n        item1: SpringItem.Builder()\n                .icon(Image(systemName: \"photo\"))\n                .backgroundColor(.orange)\n                .foregroundColor(.white)\n                .build(),\n        item2: SpringItem.Builder()\n                .icon(Image(systemName: \"note.text\"))\n                .backgroundColor(.orange)\n                .foregroundColor(.white)\n                .build(),\n        item3: SpringItem.Builder()\n                .icon(Image(systemName: \"doc\"))\n                .backgroundColor(.orange)\n                .foregroundColor(.white)\n                .build(),\n        item4: SpringItem.Builder()\n                .icon(Image(systemName: \"mic.fill\"))\n                .backgroundColor(.orange)\n                .foregroundColor(.white)\n                .build()\n)\n\n```\n\n\u003cp align=\"center\"\u003e\u003ca href=\"https://github.com/ShabanKamell/SpringMenu/blob/master/blob/items/4.jpeg\"\u003e\u003cimg src=\"https://github.com/ShabanKamell/SpringMenu/blob/master/blob/items/4.jpeg?raw=true\" alt=\"Gray shape shifter\"width=\"250\"  height=\"250\"/\u003e\u003c/a\u003e\u003c/p\u003e\n\n### 5 Items\n\n```swift\n\nFiveSpringItems(\n        item1: SpringItem.Builder()\n                .icon(Image(systemName: \"photo\"))\n                .backgroundColor(.green)\n                .foregroundColor(.white)\n                .build(),\n        item2: SpringItem.Builder()\n                .icon(Image(systemName: \"note.text\"))\n                .backgroundColor(.green)\n                .foregroundColor(.white)\n                .build(),\n        item3: SpringItem.Builder()\n                .icon(Image(systemName: \"doc\"))\n                .backgroundColor(.green)\n                .foregroundColor(.white)\n                .build(),\n        item4: SpringItem.Builder()\n                .icon(Image(systemName: \"mic.fill\"))\n                .backgroundColor(.green)\n                .foregroundColor(.white)\n                .build(),\n        item5: SpringItem.Builder()\n                .icon(Image(systemName: \"pencil.circle\"))\n                .backgroundColor(.green)\n                .foregroundColor(.white)\n                .build()\n)\n\n```\n\n#### Gravity\n\n```swift\nenum Gravity {\n    case top\n    case bottom\n    case leading\n    case trailing\n}\n```\n\n##### Top\n\n\u003cp align=\"center\"\u003e\u003ca href=\"https://github.com/ShabanKamell/SpringMenu/blob/master/blob/items/5-top.jpeg\"\u003e\u003cimg src=\"https://github.com/ShabanKamell/SpringMenu/blob/master/blob/items/5-top.jpeg?raw=true\" alt=\"Gray shape shifter\" width=\"250\" height=\"200\"/\u003e\u003c/a\u003e\u003c/p\u003e\n\n##### Bottom\n\n\u003cp align=\"center\"\u003e\u003ca href=\"https://github.com/ShabanKamell/SpringMenu/blob/master/blob/items/5-bottom.jpeg\"\u003e\u003cimg src=\"https://github.com/ShabanKamell/SpringMenu/blob/master/blob/items/5-bottom.jpeg?raw=true\" alt=\"Gray shape shifter\" width=\"250\" height=\"200\"/\u003e\u003c/a\u003e\u003c/p\u003e\n\n##### Leading\n\n\u003cp align=\"center\"\u003e\u003ca href=\"https://github.com/ShabanKamell/SpringMenu/blob/master/blob/items/5-leading.jpeg\"\u003e\u003cimg src=\"https://github.com/ShabanKamell/SpringMenu/blob/master/blob/items/5-leading.jpeg?raw=true\" alt=\"Gray shape shifter\" width=\"250\" height=\"250\"/\u003e\u003c/a\u003e\u003c/p\u003e\n\n##### Trailing\n\n\u003cp align=\"center\"\u003e\u003ca href=\"https://github.com/ShabanKamell/SpringMenu/blob/master/blob/items/5-trailing.jpeg\"\u003e\u003cimg src=\"https://github.com/ShabanKamell/SpringMenu/blob/master/blob/items/5-trailing.jpeg?raw=true\" alt=\"Gray shape shifter\" width=\"250\" height=\"250\"/\u003e\u003c/a\u003e\u003c/p\u003e\n\n### 6 Items\n\n```swift\n\nSixSpringItems(\n        item1: SpringItem.Builder()\n                .icon(Image(systemName: \"photo\"))\n                .backgroundColor(.pink)\n                .foregroundColor(.white)\n                .build(),\n        item2: SpringItem.Builder()\n                .icon(Image(systemName: \"note.text\"))\n                .backgroundColor(.pink)\n                .foregroundColor(.white)\n                .build(),\n        item3: SpringItem.Builder()\n                .icon(Image(systemName: \"doc\"))\n                .backgroundColor(.pink)\n                .foregroundColor(.white)\n                .build(),\n        item4: SpringItem.Builder()\n                .icon(Image(systemName: \"mic.fill\"))\n                .backgroundColor(.pink)\n                .foregroundColor(.white)\n                .build(),\n        item5: SpringItem.Builder()\n                .icon(Image(systemName: \"pencil.circle\"))\n                .backgroundColor(.pink)\n                .foregroundColor(.white)\n                .build(),\n        item6: SpringItem.Builder()\n                .icon(Image(systemName: \"folder\"))\n                .backgroundColor(.pink)\n                .foregroundColor(.white)\n                .build()\n)\n\n```\n\n#### Position\n\n```swift\nenum Position {\n    case vertical\n    case horizontal\n}\n```\n\n##### Vertical\n\n\u003cp align=\"center\"\u003e\u003ca href=\"https://github.com/ShabanKamell/SpringMenu/blob/master/blob/items/6-vertical.jpeg\"\u003e\u003cimg src=\"https://github.com/ShabanKamell/SpringMenu/blob/master/blob/items/6-vertical.jpeg?raw=true\" alt=\"Gray shape shifter\" width=\"250\" height=\"250\"/\u003e\u003c/a\u003e\u003c/p\u003e\n\n##### Horizontal\n\n\u003cp align=\"center\"\u003e\u003ca href=\"https://github.com/ShabanKamell/SpringMenu/blob/master/blob/items/6-horizontal.jpeg\"\u003e\u003cimg src=\"https://github.com/ShabanKamell/SpringMenu/blob/master/blob/items/6-horizontal.jpeg?raw=true\" alt=\"Gray shape shifter\" width=\"250\" height=\"250\"/\u003e\u003c/a\u003e\u003c/p\u003e\n\n### 7 Items\n\n```swift\n\nSevenSpringItems(\n        item1: SpringItem.Builder()\n                .icon(Image(systemName: \"photo\"))\n                .backgroundColor(.purple)\n                .foregroundColor(.white)\n                .build(),\n        item2: SpringItem.Builder()\n                .icon(Image(systemName: \"note.text\"))\n                .backgroundColor(.purple)\n                .foregroundColor(.white)\n                .build(),\n        item3: SpringItem.Builder()\n                .icon(Image(systemName: \"doc\"))\n                .backgroundColor(.purple)\n                .foregroundColor(.white)\n                .build(),\n        item4: SpringItem.Builder()\n                .icon(Image(systemName: \"mic.fill\"))\n                .backgroundColor(.purple)\n                .foregroundColor(.white)\n                .build(),\n        item5: SpringItem.Builder()\n                .icon(Image(systemName: \"pencil.circle\"))\n                .backgroundColor(.purple)\n                .foregroundColor(.white)\n                .build(),\n        item6: SpringItem.Builder()\n                .icon(Image(systemName: \"folder\"))\n                .backgroundColor(.purple)\n                .foregroundColor(.white)\n                .build(),\n        item7: SpringItem.Builder()\n                .icon(Image(systemName: \"mic.fill\"))\n                .backgroundColor(.purple)\n                .foregroundColor(.white)\n                .build()\n)\n\n```\n\n#### Gravity\n\n```swift\nenum Gravity {\n    case top\n    case bottom\n    case leading\n    case trailing\n}\n```\n\n##### Top\n\n\u003cp align=\"center\"\u003e\u003ca href=\"https://github.com/ShabanKamell/SpringMenu/blob/master/blob/items/7-top.jpeg\"\u003e\u003cimg src=\"https://github.com/ShabanKamell/SpringMenu/blob/master/blob/items/7-top.jpeg?raw=true\" alt=\"Gray shape shifter\" width=\"250\" height=\"250\"/\u003e\u003c/a\u003e\u003c/p\u003e\n\n##### Bottom\n\n\u003cp align=\"center\"\u003e\u003ca href=\"https://github.com/ShabanKamell/SpringMenu/blob/master/blob/items/7-bottom.jpeg\"\u003e\u003cimg src=\"https://github.com/ShabanKamell/SpringMenu/blob/master/blob/items/7-bottom.jpeg?raw=true\" alt=\"Gray shape shifter\" width=\"250\" height=\"250\"/\u003e\u003c/a\u003e\u003c/p\u003e\n\n##### Leading\n\n\u003cp align=\"center\"\u003e\u003ca href=\"https://github.com/ShabanKamell/SpringMenu/blob/master/blob/items/7-leading.jpeg\"\u003e\u003cimg src=\"https://github.com/ShabanKamell/SpringMenu/blob/master/blob/items/7-leading.jpeg?raw=true\" alt=\"Gray shape shifter\" width=\"250\" height=\"250\"/\u003e\u003c/a\u003e\u003c/p\u003e\n\n##### Trailing\n\n\u003cp align=\"center\"\u003e\u003ca href=\"https://github.com/ShabanKamell/SpringMenu/blob/master/blob/items/7-trailing.jpeg\"\u003e\u003cimg src=\"https://github.com/ShabanKamell/SpringMenu/blob/master/blob/items/7-trailing.jpeg?raw=true\" alt=\"Gray shape shifter\" width=\"250\" height=\"250\"/\u003e\u003c/a\u003e\u003c/p\u003e\n\n### 8 Items\n\n```swift\n\nEightSpringItems(\n        item1: SpringItem.Builder()\n                .icon(Image(systemName: \"photo\"))\n                .backgroundColor(.red)\n                .foregroundColor(.white)\n                .build(),\n        item2: SpringItem.Builder()\n                .icon(Image(systemName: \"note.text\"))\n                .backgroundColor(.red)\n                .foregroundColor(.white)\n                .build(),\n        item3: SpringItem.Builder()\n                .icon(Image(systemName: \"doc\"))\n                .backgroundColor(.red)\n                .foregroundColor(.white)\n                .build(),\n        item4: SpringItem.Builder()\n                .icon(Image(systemName: \"mic.fill\"))\n                .backgroundColor(.red)\n                .foregroundColor(.white)\n                .build(),\n        item5: SpringItem.Builder()\n                .icon(Image(systemName: \"pencil.circle\"))\n                .backgroundColor(.red)\n                .foregroundColor(.white)\n                .build(),\n        item6: SpringItem.Builder()\n                .icon(Image(systemName: \"folder\"))\n                .backgroundColor(.red)\n                .foregroundColor(.white)\n                .build(),\n        item7: SpringItem.Builder()\n                .icon(Image(systemName: \"square.and.arrow.up\"))\n                .backgroundColor(.red)\n                .foregroundColor(.white)\n                .build(),\n        item8: SpringItem.Builder()\n                .icon(Image(systemName: \"arrowshape.turn.up.forward\"))\n                .backgroundColor(.red)\n                .foregroundColor(.white)\n                .build()\n)\n\n```\n\n\u003cp align=\"center\"\u003e\u003ca href=\"https://github.com/ShabanKamell/SpringMenu/blob/master/blob/items/8.jpeg\"\u003e\u003cimg src=\"https://github.com/ShabanKamell/SpringMenu/blob/master/blob/items/8.jpeg?raw=true\" alt=\"Gray shape shifter\" width=\"260\" height=\"250\"/\u003e\u003c/a\u003e\u003c/p\u003e\n\n## :tada: Installation\n\n### CocoaPods\n\nUse the following entry in your Podfile:\n\n```rb\npod 'SpringMenu'\n```\n\nThen run `pod install`.\n\n### Swift Package Manager\n\nAdd the following as a dependency to your `Package.swift`:\n\n```swift\n.package(url: \"https://github.com/ShabanKamell/SpringMenu.git\")\n```\n\nand then specify `\"SpringMenu\"` as a dependency of the Target in which you wish to use SpringMenu. Here's an\nexample `PackageDescription`:\n\n```swift\n// swift-tools-version:5.1\n\nimport PackageDescription\n\nlet package = Package(\n        name: \"MyPackage\",\n        products: [\n            .library(\n                    name: \"MyPackage\",\n                    targets: [\"MyPackage\"]),\n        ],\n        dependencies: [\n            .package(url: \"https://github.com/ShabanKamell/SpringMenu\")\n        ],\n        targets: [\n            .target(\n                    name: \"MyPackage\",\n                    dependencies: [\"SpringMenu\"])\n        ]\n)\n```\n\n### Accio\n\n[Accio](https://github.com/JamitLabs/Accio) is a dependency manager based on SwiftPM which can build frameworks for\niOS/macOS/tvOS/watchOS. Therefore the integration steps of SpringMenu are exactly the same as described above. Once\nyour `Package.swift` file is configured, run `accio update` instead of `swift package update`.\n\nDon't forget to add `import SpringMenu` to use the framework.\n\n### Carthage\n\nCarthage users can point to this repository and use generated `SpringMenu` framework.\n\nMake the following entry in your Cartfile:\n\n```rb\ngithub \"ShabanKamell/SpringMenu\"\n```\n\nThen run `carthage update`.\n\nIf this is your first time using Carthage in the project, you'll need to go through some additional steps as\nexplained [over at Carthage](https://github.com/Carthage/Carthage#adding-frameworks-to-an-application).\n\n## Contribution\n\nAll Pull Requests (PRs) are welcome. Help us make this library better.\n\n## Changelog\n\nLook at [Changelog](https://github.com/ShabanKamell/SwiftUIFormValidator/blob/master/CHANGELOG.md) for release notes.\n\n## License\n\n\u003cdetails\u003e\n    \u003csummary\u003e\n        click to reveal License\n    \u003c/summary\u003e\n\n```\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n   http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n```\n\n\u003c/details\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmalekkamel%2Fspringmenu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmalekkamel%2Fspringmenu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmalekkamel%2Fspringmenu/lists"}