{"id":20540992,"url":"https://github.com/sentryco/secureinput","last_synced_at":"2025-06-13T16:31:42.225Z","repository":{"id":260615521,"uuid":"881758858","full_name":"sentryco/SecureInput","owner":"sentryco","description":"Secure input UI (macOS / iOS)","archived":false,"fork":false,"pushed_at":"2025-02-06T11:24:08.000Z","size":176,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-02-06T12:30:02.882Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/sentryco.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,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-01T06:52:06.000Z","updated_at":"2025-02-06T11:24:11.000Z","dependencies_parsed_at":"2024-11-25T02:19:31.320Z","dependency_job_id":"38f77ee5-1232-4dce-95ce-523b8d42b824","html_url":"https://github.com/sentryco/SecureInput","commit_stats":null,"previous_names":["sentryco/secureinput"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sentryco%2FSecureInput","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sentryco%2FSecureInput/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sentryco%2FSecureInput/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sentryco%2FSecureInput/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sentryco","download_url":"https://codeload.github.com/sentryco/SecureInput/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242144783,"owners_count":20079023,"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-11-16T01:18:45.898Z","updated_at":"2025-03-06T04:19:40.518Z","avatar_url":"https://github.com/sentryco.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Tests](https://github.com/sentryco/SecureInput/actions/workflows/Tests.yml/badge.svg)](https://github.com/sentryco/SecureInput/actions/workflows/Tests.yml)\n[![codebeat badge](https://codebeat.co/badges/2a87ea47-ffe8-4147-abdd-1d12a1fda9c5)](https://codebeat.co/projects/github-com-sentryco-secureinput-main)\n\n# SecureInput\n\n\u003e Secure input UI (macOS / iOS)\n\n**1. SecureInputView**    \n\n\u003cimg width=\"320\" alt=\"secureinputview\" src=\"https://s1.gifyu.com/images/SOJ0b.gif\"\u003e\n\n**2. PasswordTextField**  \n\n\u003cimg width=\"320\" alt=\"passwordtextfield\" src=\"https://s1.gifyu.com/images/SOJ02.gif\"\u003e\n\n**3. SecTextContainer**  \n\n\u003cimg width=\"320\" alt=\"passwordtextfield\" src=\"https://s11.gifyu.com/images/SOJ0K.gif\"\u003e\n\n**4. SecureTextView**  \n\n\u003cimg width=\"320\" alt=\"passwordtextfield\" src=\"https://s1.gifyu.com/images/SOJ0H.gif\"\u003e\n\n## Description\n\nThis repository provides a collection of secure text input UI components, each with its unique features and trade-offs. They are designed to serve various purposes in applications that prioritize secure data handling. For more detailed information and the rationale behind each component, please refer to the code comments within the UI components.\n\n## Features\n\n1. `SecureInputView`: obfuscation-toggle, SecureText\n2. `PasswordTextField`: obfuscation-toggle, SecureText and restrictor-callback\n3. `SecTextContainer`: obfuscation-toggle, attribute and multiline (Not using SecureText and not editable)\n4. `SecureTextView`: obfuscation-toggle, multiline (Not using SecureText)\n\n## Instalation\n\nAdd this to XCode or SPM:\n\n```swift\n.package(url: \"https://github.com/sentryco/SecureInput\", branch: \"main\")\n```\n\n## Gotchas:\n- Add your own style to components by making new TextFieldStyles and apply them to the view struct components. This way the new style overrides the internal TextFieldStyles\n\n## Dependencies:\n- [HybridColor](https://github.com/sentryco/HybridColor)\n- [MockGen](https://github.com/sentryco/MockGen)\n- [TextColorizer](https://github.com/sentryco/TextColorizer)\n\n## Todo\n- Add Attributed TextField that is editable\n- Only use the MockGen dep for the testing scope?\n- Make more high-level styling. use ViewBuilder + style struct with param drilling etc. Or use environment variable etc\n- Remove MockGen as dep. Use private rand methods, use copilot etc\n- Add debug flag. `public var isSecureInputDebug: Bool = false`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsentryco%2Fsecureinput","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsentryco%2Fsecureinput","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsentryco%2Fsecureinput/lists"}