{"id":13496153,"url":"https://github.com/danielsaidi/Sheeeeeeeeet","last_synced_at":"2025-03-28T18:31:34.265Z","repository":{"id":37548446,"uuid":"111195090","full_name":"danielsaidi/Sheeeeeeeeet","owner":"danielsaidi","description":"Sheeeeeeeeet is a Swift library for creating menus, custom action sheets, context menus etc.","archived":false,"fork":false,"pushed_at":"2023-06-29T08:26:45.000Z","size":16941,"stargazers_count":1746,"open_issues_count":2,"forks_count":114,"subscribers_count":21,"default_branch":"master","last_synced_at":"2025-03-24T03:23:07.048Z","etag":null,"topics":["actionsheet","carthage","cocoapods","context-menu","ios","popover","spm","swift","uialertcontroller"],"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/danielsaidi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null},"funding":{"github":"danielsaidi"}},"created_at":"2017-11-18T10:08:03.000Z","updated_at":"2025-03-19T19:16:03.000Z","dependencies_parsed_at":"2022-08-08T20:31:08.487Z","dependency_job_id":"aecc430d-afbc-4354-a347-5911715c7aeb","html_url":"https://github.com/danielsaidi/Sheeeeeeeeet","commit_stats":{"total_commits":752,"total_committers":12,"mean_commits":"62.666666666666664","dds":0.0478723404255319,"last_synced_commit":"73361e66e27c43dfe9bf44b7279e5db5e4afc753"},"previous_names":[],"tags_count":90,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielsaidi%2FSheeeeeeeeet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielsaidi%2FSheeeeeeeeet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielsaidi%2FSheeeeeeeeet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielsaidi%2FSheeeeeeeeet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/danielsaidi","download_url":"https://codeload.github.com/danielsaidi/Sheeeeeeeeet/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246080530,"owners_count":20720546,"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":["actionsheet","carthage","cocoapods","context-menu","ios","popover","spm","swift","uialertcontroller"],"created_at":"2024-07-31T19:01:43.076Z","updated_at":"2025-03-28T18:31:32.548Z","avatar_url":"https://github.com/danielsaidi.png","language":"Swift","readme":"\u003cp align=\"center\"\u003e\n    \u003cimg src =\"Resources/Logo.png\" alt=\"Sheeeeeeeeet Logo\" title=\"Sheeeeeeeeet\" width=600 /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/v/release/danielsaidi/Sheeeeeeeeet?color=%2300550\u0026sort=semver\" alt=\"Version\" /\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Swift-5.6-orange.svg\" alt=\"Swift 5.6\" /\u003e\n    \u003cimg src=\"https://img.shields.io/badge/platform-SwiftUI-blue.svg\" alt=\"Swift UI\" title=\"Swift UI\" /\u003e\n    \u003cimg src=\"https://img.shields.io/github/license/danielsaidi/Sheeeeeeeeet\" alt=\"MIT License\" /\u003e\n    \u003cimg src=\"https://img.shields.io/twitter/url?label=Twitter\u0026style=social\u0026url=https%3A%2F%2Ftwitter.com%2Fdanielsaidi\" alt=\"Twitter: @danielsaidi\" title=\"Twitter: @danielsaidi\" /\u003e\n    \u003cimg src=\"https://img.shields.io/mastodon/follow/000253346?label=mastodon\u0026style=social\" alt=\"Mastodon: @danielsaidi@mastodon.social\" title=\"Mastodon: @danielsaidi@mastodon.social\" /\u003e\n\u003c/p\u003e\n\n\n\n## About Sheeeeeeeeet\n\nSheeeeeeeeet is a UIKit library that lets you create menus that can be presented as custom action sheets, context menus, alert controllers, or in any way you like.\n\nThe result can look like this or completely different:\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src =\"Resources/Demo.gif\" /\u003e\n\u003c/p\u003e\n\nSheeeeeeeeet comes with many item types (standard items, buttons, titles, toggles, etc.) and can be extended with your own custom item types.\n\n\n\n## About this repository\n\nSince I have personally moved over to SwiftUI, this repository is no longer under active development. I will however gladly merge any PRs that add value to it or fixes problems with new iOS versions.  \n\n\n\n## Installation\n\nSheeeeeeeeet can be installed with the Swift Package Manager:\n\n```\nhttps://github.com/danielsaidi/Sheeeeeeeeet.git\n```\n\nor with CocoaPods:\n\n```\npod Sheeeeeeeeet\n```\n\nIf you prefer to not have external dependencies, you can also just copy the source code into your app.\n\n\n\n## Supported Platforms\n\nSheeeeeeeeet supports `iOS 9` and later.\n\n\n\n## Getting Started\n\n\n### Creating a menu\n\nWith Sheeeeeeeeet, you start with creating a menu, like this:\n\n```swift\nlet item1 = MenuItem(title: \"Int\", value: 1)\nlet item2 = MenuItem(title: \"Car\", value: Car())\nlet button = OkButton(title: \"OK\")\nlet items = [item1, item2, button]\nlet menu = Menu(title: \"Select a type\", items: items)\n```\n\nThe library has many built-in item types, e.g. buttons, select items, links, etc. A complete list can be found [here][MenuItems].\n\nYou can also [create your own custom item types][CustomItems] by inheriting any of the existing ones. For instance, if you build a car rental app, you can create a car-specific item that takes a `Car` model.\n\nYou can even create your own menu types by subclassing `Menu`. This makes it possible to create app-specific menus that provide specific functionality, handle specific tasks, etc.\n\n\n### Presenting a menu as an action sheet\n\nYou can present menus as custom action sheets:\n\n```swift\nlet sheet = menu.toActionSheet(...) { sheet, item in ... }\nsheet.present(in: vc, from: view) { sheet, item in ...\n    print(\"You selected \\(item.title)\")\n}\n```\n\nYou can find more information in [this action sheet guide][ActionSheet].\n\n\n### Adding a menu as a context menu\n\nYou can add menus as iOS 13 context menus to any view you like:\n\n```swift\nmenu.addAsContextMenu(to: view) { sheet, item in ...\n    print(\"You selected \\(item.title)\")\n}\n```\n\nYou can find more information in [this context menu guide][ContextMenu].\n\n\n### Presenting a menu as an alert controller\n\nYou can present menus as `UIAlertController`s:\n\n```swift\nlet delegate = menu.presentAsAlertController(in: self, from: view) { sheet, item in ...\n    print(\"You selected \\(item.title)\")\n}\n```\n\nYou can find more information in [this alert controller guide][AlertController].\n\n\n\n## Demo Application\n\nThe demo demonstrates different menus and menu items, including subclassing and appearance adjustments. To try it out, just open and run the `Sheeeeeeeeet` project.\n\n\n\n## Support\n\nYou can sponsor this project on [GitHub Sponsors][Sponsors] or get in touch for paid support. \n\n\n\n## Contact me\n\nFeel free to reach out if you have questions or if you want to contribute in any way:\n\n* Website: [danielsaidi.com][Website]\n* Mastodon: [@danielsaidi@mastodon.social][Mastodon]\n* Twitter: [@danielsaidi][Twitter]\n* E-mail: [daniel.saidi@gmail.com][Email]\n\n\n\n## License\n\nSheeeeeeeeet is available under the MIT license. See the [LICENSE][License] file for more info.\n\n\n[Email]: mailto:daniel.saidi@gmail.com\n[Website]: https://www.danielsaidi.com\n[Twitter]: https://www.twitter.com/danielsaidi\n[Mastodon]: https://mastodon.social/@danielsaidi\n[Sponsors]: https://github.com/sponsors/danielsaidi\n\n[License]: https://github.com/danielsaidi/Sheeeeeeeeet/blob/master/LICENSE\n\n[ActionSheet]: https://github.com/danielsaidi/Sheeeeeeeeet/blob/master/Readmes/ActionSheet.md\n[AlertController]: https://github.com/danielsaidi/Sheeeeeeeeet/blob/master/Readmes/AlertController.md\n[ContextMenu]: https://github.com/danielsaidi/Sheeeeeeeeet/blob/master/Readmes/ContextMenu.md\n[CustomItems]: https://github.com/danielsaidi/Sheeeeeeeeet/blob/master/Readmes/CustomItems.md\n[MenuItems]: https://github.com/danielsaidi/Sheeeeeeeeet/blob/master/Readmes/MenuItems.md\n","funding_links":["https://github.com/sponsors/danielsaidi"],"categories":["Swift","HarmonyOS"],"sub_categories":["Windows Manager"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanielsaidi%2FSheeeeeeeeet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdanielsaidi%2FSheeeeeeeeet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanielsaidi%2FSheeeeeeeeet/lists"}