{"id":30805401,"url":"https://github.com/simformsolutionspvtltd/ssneumorphickit","last_synced_at":"2025-09-06T00:57:10.212Z","repository":{"id":52113102,"uuid":"277059956","full_name":"SimformSolutionsPvtLtd/SSNeumorphicKit","owner":"SimformSolutionsPvtLtd","description":"SSNeumorphicView is a sophisticated and flexible library for iOS that seamlessly integrates the trendy Neumorphic design style into your app’s user interface. Neumorphism, known for its soft, subtle shadowing combined with depth and texture, creates an elegant, soft-embossed effect that makes your UI components look tactile and engaging. ","archived":false,"fork":false,"pushed_at":"2024-09-02T09:15:42.000Z","size":5428,"stargazers_count":66,"open_issues_count":0,"forks_count":3,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-08-18T18:52:00.110Z","etag":null,"topics":["ios","ios-swift","ipados","macos","neumorphic","neumorphic-components","neumorphic-elements","neumorphic-ui","opensource","swift","swiftui","swiftui-example"],"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/SimformSolutionsPvtLtd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-07-04T07:18:40.000Z","updated_at":"2025-07-19T23:00:20.000Z","dependencies_parsed_at":"2024-07-29T06:44:11.316Z","dependency_job_id":"911907b7-9cf1-4e44-99f9-5bf5376cd51d","html_url":"https://github.com/SimformSolutionsPvtLtd/SSNeumorphicKit","commit_stats":{"total_commits":6,"total_committers":3,"mean_commits":2.0,"dds":"0.33333333333333337","last_synced_commit":"1d2dc00a682a59b18c770f15b9cc7398bb0caa28"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/SimformSolutionsPvtLtd/SSNeumorphicKit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SimformSolutionsPvtLtd%2FSSNeumorphicKit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SimformSolutionsPvtLtd%2FSSNeumorphicKit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SimformSolutionsPvtLtd%2FSSNeumorphicKit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SimformSolutionsPvtLtd%2FSSNeumorphicKit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SimformSolutionsPvtLtd","download_url":"https://codeload.github.com/SimformSolutionsPvtLtd/SSNeumorphicKit/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SimformSolutionsPvtLtd%2FSSNeumorphicKit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273842836,"owners_count":25177921,"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","status":"online","status_checked_at":"2025-09-05T02:00:09.113Z","response_time":402,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["ios","ios-swift","ipados","macos","neumorphic","neumorphic-components","neumorphic-elements","neumorphic-ui","opensource","swift","swiftui","swiftui-example"],"created_at":"2025-09-06T00:57:05.100Z","updated_at":"2025-09-06T00:57:10.195Z","avatar_url":"https://github.com/SimformSolutionsPvtLtd.png","language":"Swift","readme":"\u003cimg src=\"Banner.png\"\u003e\n\n# SSNeumorphicView\n\nSSNeumorphicView is a sophisticated and flexible library for iOS that seamlessly integrates the trendy Neumorphic design style into your app’s user interface. Neumorphism, known for its soft, subtle shadowing combined with depth and texture, creates an elegant, soft-embossed effect that makes your UI components look tactile and engaging. 🌟✨\n\nSSNeumorphicView simplifies the process of incorporating Neumorphic elements into your app, providing both UIKit and SwiftUI compatibility. With extensive customization options for shadow colors, depths, and styles, you can craft a modern and visually appealing user experience effortlessly. 🎨🖌️💡 Plus, it's backward compatible with iOS 13, ensuring broad support across various devices. 📱🔄\n\n[![Swift Version][swift-image]][swift-url]\n[![License][license-image]][license-url]\n[![SwiftPM Compatible][spm-image]][spm-url]\n[![Version](https://img.shields.io/cocoapods/v/SSNeumorphicView.svg?style=flat)](https://cocoapods.org/pods/SSNeumorphicView)\n[![Platform][platform-image]][platform-url]\n[![PRs Welcome][PR-image]][PR-url]\n\n\u003cimg src=\"https://github.com/SimformSolutionsPvtLtd/SSNeumorphicKit/blob/feature/ssneumophickit/Screenshots/image.jpg\"\u003e\n\n# Features! :sparkles:\n- 🎨 **Seamless Neumorphic Integration:** Easily apply Neumorphic designs to views, buttons, text fields, and toggle views with just a few lines of code.\n\n- 🌗 **Dynamic Adaptation for Light and Dark Modes:** Automatically adapts to both light and dark modes, ensuring your app looks great regardless of the user’s device settings.\n\n- 🖌️ **Customizable Shadows:** Support for both inner and outer shadows, allowing you to create depth and emboss effects that suit your design needs.\n\n- 🧩 **Compatibility with UIKit and SwiftUI:** Leverage the power of Neumorphic design across both UIKit and SwiftUI, providing flexibility in how you build your iOS app.\n\n- 🛠️ **Easy Customization:** Customize shadow colors, depths, corner radius, and more to match your app’s design language.\n\n- 🧱 **Out-of-the-Box Components:** Prebuilt Neumorphic components such as buttons and toggle views, with customizable styles like NMButtonStyle and NMToggleStyle, allowing you to further tailor their appearance and behavior.\n\n- 📚 **Detailed Documentation and Examples:** Comprehensive guides and examples to help you get started quickly and efficiently.\n\n- 🔄 **Responsive Design:** Ensures your Neumorphic elements look great on various screen sizes and orientations.\n\n# Example :iphone:\n\nTo run the example project, clone the repo, and run `pod install` from the Example directory first.\n\n# Requirements :clipboard:\n- iOS 13.0+\n- Xcode 11+\n\n# Installation :package:\n **CocoaPods**\n \n [CocoaPods][CocoaPods.org] is a dependency manager for Cocoa projects. You can install it with the following command:\n\n```bash\n$ gem install cocoapods\n```\n\nNavigate to project root folder to integrate pod.\n\n```bash\n$ pod init\n```\n\nIt will generate `Podfile` for your project. To integrate SSNeumorphicView into your project specify it in your `Podfile`:\n\n```ruby\nplatform :ios, '13.0'\nuse_frameworks!\n\ntarget '\u003cYour Target Name\u003e' do\n    pod 'SSNeumorphicView'\nend\n```\n\nThen, run the following command:\n\n```bash\n$ pod install\n```\n\nIt will generate `\u003cProject\u003e.xcworkspace` file. From now on you should open the project using this file.\n\n**Swift Package Manager**\n \nYou can install `SSNeumorphicView` using [Swift Package Manager] by:\n\n1. Go to `Xcode` -\u003e `File` -\u003e `Add Package Dependencies...`\n2. Add package URL [https://cocoapods.org/pods/SSNeumorphicView][SSNeumorphicView]\n\n```swift\ndependencies: [\n    .package(url: \"https://github.com/SimformSolutionsPvtLtd/SSNeumorphicKit.git\", from: \"1.0.0\")\n]\n```\n\n**Manually**\n\n- Add SSNeumorphicView folder from /Sources folder to your project.\n\n# Usage example :bulb:\n\n## How to use with UIKit and Storyboard: :framed_picture:\n\n### In the storyboard add a UIView and change its class to SSNeumorphicView\n\n   \u003cimg src=\"https://github.com/SimformSolutionsPvtLtd/SSNeumorphicKit/blob/feature/ssneumophickit/Screenshots/Screenshot%202020-07-07%20at%207.22.23%20PM.png\"\u003e\n \n### NOTE:\n- For **UIButton** add **SSNeumorphicButton** as its class.\n- For **UITextField** add **SSBaseTextField** as its class.\n\n### Import Neumorphic package to your view.\n        \n    import SSNeumorphicView\n\n### Create NeumorphicView with the outer shadow.\n\n| \u003ccenter\u003e Light Mode \u003c/center\u003e | \u003ccenter\u003e Dark Mode \u003c/center\u003e |\n|----------|----------|\n| \u003cimg src=\"Screenshots/UI-Kit-Demo-SS/shape-light.png\" \u003e | \u003cimg src=\"Screenshots/UI-Kit-Demo-SS/shape-dark.png\" \u003e |\n\n\n    @IBOutlet weak var viewNeumorphic: SSNeumorphicView! {\n        didSet {\n            viewNeumorphic.viewDepthType = .outerShadow\n        }\n    }\n        \n### Create neumorphic text field with the Inner shadow.\n\n| \u003ccenter\u003e Light Mode \u003c/center\u003e | \u003ccenter\u003e Dark Mode \u003c/center\u003e |\n|----------|----------|\n| \u003cimg src=\"Screenshots/UI-Kit-Demo-SS/text-field-light.png\" \u003e | \u003cimg src=\"Screenshots/UI-Kit-Demo-SS/text-field-dark.png\" \u003e |\n\n \n    @IBOutlet weak var txtSSNeumorphic: SSBaseTextField! {\n        didSet {\n            txtSSNeumorphic.txtDepthType = .innerShadow\n        }\n    }\n\n### Create neumorphic button with the Outer shadow.\n\n| \u003ccenter\u003e Light Mode \u003c/center\u003e | \u003ccenter\u003e Dark Mode \u003c/center\u003e |\n|----------|----------|\n| \u003cimg src=\"Screenshots/UI-Kit-Demo-SS/button-light.png\" \u003e | \u003cimg src=\"Screenshots/UI-Kit-Demo-SS/button-dark.png\" \u003e |\n\n \n    @IBOutlet weak var btnNeumorphic: SSNeumorphicButton! {\n        didSet {\n            btnNeumorphic.btnDepthType = .outerShadow\n        }\n    }\n    \n### Create neumorphic rounded button with the inner shadow.\n\n| \u003ccenter\u003e Light Mode \u003c/center\u003e | \u003ccenter\u003e Dark Mode \u003c/center\u003e |\n|----------|----------|\n| \u003cimg src=\"Screenshots/UI-Kit-Demo-SS/round-button-light.png\" \u003e | \u003cimg src=\"Screenshots/UI-Kit-Demo-SS/round-button-dark.png\" \u003e |\n\n\n    @IBOutlet weak var btnRoundedNeumorphic: SSNeumorphicButton! {\n        didSet {\n            btnRoundedNeumorphic.btnDepthType = .innerShadow\n            btnRoundedNeumorphic.layer.masksToBounds = true\n            btnRoundedNeumorphic.btnNeumorphicCornerRadius =  btnRoundedNeumorphic.frame.width/2\n        }\n    }\n    \n### How to Use with SwiftUI: :jigsaw:\n### Import Neumorphic package to your view.\n        \n    import SSNeumorphicView\n\n### **Create Neumorphic Shape with [Inner shadow modifier](Sources/SSNeumorphicView/Classes/SwiftUI/Modifiers/InnerShadowModifier.swift)**.\n| \u003ccenter\u003e Light Mode\u003c/center\u003e | \u003ccenter\u003e Dark Mode \u003c/center\u003e |\n|----------|----------|\n|\u003cimg src=\"Screenshots/SwiftUI-Demo-Screen-Shots/shape-light-inner-shadow.png\"\u003e  | \u003cimg src=\"Screenshots/SwiftUI-Demo-Screen-Shots/shape-dark-inner-shadow.png\"  \u003e   | \n\n```\nvar body: some View {\n        \n    ZStack {\n            \n        // Apply main background color\n        mainColor   \n            \n        VStack {\n            RoundedRectangle(cornerRadius: 25)\n\n                // Fill the shape with samecolor as background\n                .fill(mainColor)    \n                .frame(width: 150, height: 150)\n\n                 // Apply inner shadow modifier\n                .innerShadow(RoundedRectangle(cornerRadius: 25),   \n                                darkShadow: darkShadow, // Pass dark shadow color for the innerShadow\n                                lightShadow: lightShadow)   // Pass light shadow color for the outerShadow\n        }\n    }\n    .edgesIgnoringSafeArea(.all)\n}\n```\n\n### **Create Neumorphic Shape with [Outer shadow modifier](Sources/SSNeumorphicView/Classes/SwiftUI/Modifiers/OuterShadowModifier.swift)**.\n| \u003ccenter\u003e Light Mode\u003c/center\u003e | \u003ccenter\u003e Dark Mode \u003c/center\u003e |\n|----------|----------|\n|\u003cimg src=\"Screenshots/SwiftUI-Demo-Screen-Shots/shape-light-outer-shadow.png\"   \u003e  | \u003cimg src=\"Screenshots/SwiftUI-Demo-Screen-Shots/shape-dark-outer-shadow.png\"  \u003e   | \n\n```\nvar body: some View {\n        \n        ZStack {\n            \n            // Apply main background color\n            mainColor\n            \n            VStack {\n                RoundedRectangle(cornerRadius: 25)\n                \n                    // Fill the shape with same color as background\n                    .fill(mainColor)\n                    .frame(width: 150, height: 150)\n                \n                    // Apply the outer shadow modifier and pass the dark and light shadow colors\n                    .outerShadow(darkShadow: darkShadow, lightShadow: lightShadow)\n            }\n        }\n        .edgesIgnoringSafeArea(.all)\n    }\n```\n\n### **Create Neumorphic Button Using [NMButtonStyle](Sources/SSNeumorphicView/Classes/SwiftUI/Styles/NMButtonStyle.swift)**.\n| \u003ccenter\u003e Light Mode\u003c/center\u003e | \u003ccenter\u003e Dark Mode \u003c/center\u003e |\n|----------|----------|\n|\u003cimg src=\"Screenshots/SwiftUI-Demo-Screen-Shots/button-light.png\"   \u003e  | \u003cimg src=\"Screenshots/SwiftUI-Demo-Screen-Shots/button-dark.png\"  \u003e   | \n\n```\nvar body: some View {\n        \n        ZStack {\n            \n            // Apply main background color\n            mainColor\n            \n            VStack {\n                Button(action: {\n                    print(\"Button tapped\")\n                }) {\n                    Text(\"Tap me!\")\n                }\n                \n                // Use Custom NMButtonStyle to make the button Neumorphic.\n                .buttonStyle(NMButtonStyle(shape: RoundedRectangle(cornerRadius: 20),\n                                           primaryColor: mainColor,\n                                           lightColor: lightShadow,\n                                           darkColor: darkShadow))\n            }\n        }\n        .edgesIgnoringSafeArea(.all)\n    }\n```\n**NOTE:** To fully customize the NMButtonStyle checkout [NMButtonStyleGuide.md](Docs/NMButtonStyleGuide.md).\n\n### **Create Neumorphic Image Button using [NMButtonStyle](Sources/SSNeumorphicView/Classes/SwiftUI/Styles/NMButtonStyle.swift)**.\n| \u003ccenter\u003e Light Mode\u003c/center\u003e | \u003ccenter\u003e Dark Mode \u003c/center\u003e |\n|----------|----------|\n|\u003cimg src=\"Screenshots/SwiftUI-Demo-Screen-Shots/buttom-heart-light.png\"   \u003e  | \u003cimg src=\"Screenshots/SwiftUI-Demo-Screen-Shots/button-heart-dark.png\"  \u003e   | \n\n```\nvar body: some View {\n        \n        ZStack {\n            \n            // Apply main background color\n            mainColor\n            \n            VStack {\n                Button(action: {\n                    print(\"Button tapped\")\n                }) {\n                    Image(systemName: \"heart.fill\")\n                        .font(.title)\n                }\n\n                // Use Custom NMButtonStyle to make the button Neumorphic.\n                .buttonStyle(NMButtonStyle(shape: Circle(),\n                                           primaryColor: mainColor,\n                                           lightColor: lightShadow,\n                                           darkColor: darkShadow))\n            }\n        }\n        .edgesIgnoringSafeArea(.all)\n    }\n```\n**NOTE:** You can also create your own custom style with combination of outer and inner shadow modifiers.\n\n### **Create Neumorphic Text Field with [Inner Shadow Modifier](Sources/SSNeumorphicView/Classes/SwiftUI/Modifiers/InnerShadowModifier.swift)**.\n| \u003ccenter\u003e Light Mode\u003c/center\u003e | \u003ccenter\u003e Dark Mode \u003c/center\u003e |\n|----------|----------|\n|\u003cimg src=\"Screenshots/SwiftUI-Demo-Screen-Shots/text-field-inner-shadow-light.png\"   \u003e  | \u003cimg src=\"Screenshots/SwiftUI-Demo-Screen-Shots/text-field-inner-shadow-dark.png\"  \u003e   | \n\n```\nvar body: some View {\n        \n        ZStack {\n            \n            // Apply main background color\n            mainColor\n            \n            VStack {\n                TextField(\"Enter text\", text: $text)\n                    .padding()\n                \n                    // Apply the Shadow shape as background of text field.\n                    .background(RoundedRectangle(cornerRadius: 30)\n                        .fill(mainColor)\n                        .innerShadow(RoundedRectangle(cornerRadius: 30),\n                                     darkShadow: darkShadow,\n                                     lightShadow: lightShadow), alignment: .center)\n                    .padding()\n            }\n        }\n        .edgesIgnoringSafeArea(.all)\n    }\n```\n\n### **Create Neumorphic Text Field with [Outer shadow modifier](Sources/SSNeumorphicView/Classes/SwiftUI/Modifiers/OuterShadowModifier.swift)**.\n| \u003ccenter\u003e Light Mode\u003c/center\u003e | \u003ccenter\u003e Dark Mode \u003c/center\u003e |\n|----------|----------|\n|\u003cimg src=\"Screenshots/SwiftUI-Demo-Screen-Shots/text-field-outer-shadow-light.png\"   \u003e  | \u003cimg src=\"Screenshots/SwiftUI-Demo-Screen-Shots/text-field-outer-shadow-dark.png\"  \u003e   | \n\n```\nvar body: some View {\n        \n        ZStack {\n            \n            // Apply main background color\n            mainColor\n            \n            VStack {\n                TextField(\"Enter text\", text: $text)\n                    .padding()\n                \n                    // Apply the Shadow shape as background of text field.\n                    .background(RoundedRectangle(cornerRadius: 30)\n                        .fill(mainColor)\n                        .outerShadow(darkShadow: darkShadow,\n                                     lightShadow: lightShadow), alignment: .center)\n                    .padding()\n            }\n        }\n        .edgesIgnoringSafeArea(.all)\n    }\n```\n\n### **Create Neumorphic Toggle using [NMToggleStyle](Sources/SSNeumorphicView/Classes/SwiftUI/Styles/NMToggleStyle.swift)**.\n\u003cimg src=\"GIFs/toggle-demo.gif\" alt=\"Alt Text\" width=\"400\"/\u003e\n\n```\nvar body: some View {\n        \n        ZStack {\n            \n            // Apply main background color\n            mainColor\n            \n            VStack {\n                Toggle(\"Toggle: \", isOn: $isOn)\n                    .toggleStyle(\n                        NMToggleStyle(\n                            tintColor: .green,\n                            offTintColor: mainColor,\n                            offDarkShadow: darkShadow,\n                            offLightShadow: lightShadow,\n                            hideLabel: false\n                        )\n                    )\n                    .padding()\n            }\n        }\n        .edgesIgnoringSafeArea(.all)\n    }\n```\n**NOTE:** To fully customize the NMToggleStyle checkout [NMToggleStyleGuide.md](Docs/NMToggleStyleGuide.md).\n\n## 🤝 How to Contribute\n\nWhether you're helping us fix bugs, improve the docs, or a feature request, we'd love to have you! :muscle:\n\nCheck out our [**Contributing Guide**](CONTRIBUTING.md) for ideas on contributing.\n\n## Bugs and Feedback :beetle:\n\nFor bugs, feature requests, and discussion use [GitHub Issues].\n\n## Find this samples useful? :heart:\n\nSupport it by joining [stargazers] :star: for this repository.\n\n## Check out our other Libraries\n\n\u003ch4\u003e\u003ca href=\"https://github.com/SimformSolutionsPvtLtd/Awesome-Mobile-Libraries\"\u003e\u003cu\u003e🗂 Simform Solutions Libraries→\u003c/u\u003e\u003c/a\u003e\u003c/h4\u003e\n\n## License :scroll:\n\nSSNeumorphicView is available under the MIT license. See the [LICENSE](./LICENSE) file for more info.\n\n\n[swift-image]:https://img.shields.io/badge/swift-5.0-orange.svg\n[swift-url]: https://swift.org/\n[license-image]: https://img.shields.io/badge/License-MIT-blue.svg\n[license-url]: LICENSE\n[travis-image]: https://img.shields.io/travis/dbader/node-datadog-metrics/master.svg?style=flat-square\n[travis-url]: https://travis-ci.org/dbader/node-datadog-metrics\n[carthage-image]:https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat\n[carthage-url]: https://github.com/Carthage/Carthage\n[spm-image]:https://img.shields.io/badge/SwiftPM-compatible-brightgreen.svg\n[spm-url]: https://swift.org/package-manager\n[platform-image]:https://img.shields.io/cocoapods/p/LFAlertController.svg?style=flat\n[platform-url]:http://cocoapods.org/pods/LFAlertController\n[cocoa-image]:https://img.shields.io/cocoapods/v/EZSwiftExtensions.svg\n[cocoa-url]:https://img.shields.io/cocoapods/v/LFAlertController.svg\n[PR-image]:https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square\n[PR-url]:http://makeapullrequest.com\n[Swift Package Manager]:https://www.swift.org/package-manager\n[Github Issues]:https://github.com/SimformSolutionsPvtLtd/SSNeumorphicKit/issues\n[CocoaPods]:https://cocoapods.org/pods/SSNeumorphicView\n[CocoaPods.org]:https://cocoapods.org/\n[stargazers]:https://github.com/SimformSolutionsPvtLtd/SSNeumorphicKit/stargazers\n[Documentation]:https://swiftpackageindex.com/SimformSolutionsPvtLtd/SSNeumorphicView\n[SSNeumorphicView]:https://github.com/SimformSolutionsPvtLtd/SSNeumorphicKit","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimformsolutionspvtltd%2Fssneumorphickit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsimformsolutionspvtltd%2Fssneumorphickit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimformsolutionspvtltd%2Fssneumorphickit/lists"}