{"id":13807182,"url":"https://github.com/angular-rust/yew-components","last_synced_at":"2026-03-13T08:32:22.300Z","repository":{"id":48601123,"uuid":"336963872","full_name":"angular-rust/yew-components","owner":"angular-rust","description":"Material Design Components for the Yew framework","archived":false,"fork":false,"pushed_at":"2021-07-18T21:33:15.000Z","size":1172,"stargazers_count":63,"open_issues_count":5,"forks_count":7,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-09-19T23:56:47.548Z","etag":null,"topics":["material","material-design","material-design-components","mdc","rust","ui-components","wasm","yew"],"latest_commit_sha":null,"homepage":"https://angular-rust.github.io/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/angular-rust.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null},"funding":{"ko_fi":"dudochkin","liberapay":"dudochkin","open_collective":"dudochkin"}},"created_at":"2021-02-08T04:52:32.000Z","updated_at":"2025-05-04T14:05:18.000Z","dependencies_parsed_at":"2022-08-22T08:20:46.656Z","dependency_job_id":null,"html_url":"https://github.com/angular-rust/yew-components","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/angular-rust/yew-components","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-rust%2Fyew-components","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-rust%2Fyew-components/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-rust%2Fyew-components/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-rust%2Fyew-components/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/angular-rust","download_url":"https://codeload.github.com/angular-rust/yew-components/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-rust%2Fyew-components/sbom","scorecard":{"id":196244,"data":{"date":"2025-08-11","repo":{"name":"github.com/angular-rust/yew-components","commit":"5f8349737a73bc7df953869d06df7a9ee0b9908e"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.1,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/11 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: SECURITY.md:1","Info: Found linked content: SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: SECURITY.md:1","Info: Found text in security policy: SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Pinned-Dependencies","score":1,"reason":"dependency not pinned by hash detected -- score normalized to 1","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/audit.yaml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/angular-rust/yew-components/audit.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/audit.yaml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/angular-rust/yew-components/audit.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/coverage.yaml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/angular-rust/yew-components/coverage.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/coverage.yaml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/angular-rust/yew-components/coverage.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/coverage.yaml:33: update your workflow using https://app.stepsecurity.io/secureworkflow/angular-rust/yew-components/coverage.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/coverage.yaml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/angular-rust/yew-components/coverage.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/coverage.yaml:47: update your workflow using https://app.stepsecurity.io/secureworkflow/angular-rust/yew-components/coverage.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/angular-rust/yew-components/tests.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/tests.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/angular-rust/yew-components/tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/angular-rust/yew-components/tests.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/tests.yml:39: update your workflow using https://app.stepsecurity.io/secureworkflow/angular-rust/yew-components/tests.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/tests.yml:48: update your workflow using https://app.stepsecurity.io/secureworkflow/angular-rust/yew-components/tests.yml/main?enable=pin","Info:   0 out of   5 GitHub-owned GitHubAction dependencies pinned","Info:   1 out of   8 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/audit.yaml:1","Warn: no topLevel permission defined: .github/workflows/coverage.yaml:1","Warn: no topLevel permission defined: .github/workflows/tests.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Mozilla Public License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 2 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-16T21:53:18.995Z","repository_id":48601123,"created_at":"2025-08-16T21:53:18.995Z","updated_at":"2025-08-16T21:53:18.995Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30462277,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-13T06:34:02.089Z","status":"ssl_error","status_checked_at":"2026-03-13T06:33:49.182Z","response_time":60,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["material","material-design","material-design-components","mdc","rust","ui-components","wasm","yew"],"created_at":"2024-08-04T01:01:22.189Z","updated_at":"2026-03-13T08:32:22.280Z","avatar_url":"https://github.com/angular-rust.png","language":"Rust","funding_links":["https://ko-fi.com/dudochkin","https://liberapay.com/dudochkin","https://opencollective.com/dudochkin","https://issuehunt.io/r/angular-rust/yew-components/"],"categories":["Crates"],"sub_categories":["Component Libraries"],"readme":"# \n\n\u003cdiv align=\"center\"\u003e\n\n[![](https://dudochkin-victor.github.io/assets/yew-components/logo.svg)](#top)\n# YEW Material Components\n\n[![API Docs][docrs-badge]][docrs-url]\n[![Crates.io][crates-badge]][crates-url]\n[![Code coverage][codecov-badge]][codecov-url]\n[![Tests][tests-badge]][tests-url]\n[![MPL-2.0 licensed][license-badge]][license-url]\n[![Gitter chat][gitter-badge]][gitter-url]\n[![loc][loc-badge]][loc-url]\n\u003c/div\u003e\n\n[docrs-badge]: https://img.shields.io/docsrs/ymc?style=flat-square\n[docrs-url]: https://docs.rs/uymc/\n[crates-badge]: https://img.shields.io/crates/v/ymc.svg?style=flat-square\n[crates-url]: https://crates.io/crates/ymc\n[license-badge]: https://img.shields.io/badge/license-MPL--2.0-blue.svg?style=flat-square\n[license-url]: https://github.com/angular-rust/yew-components/blob/master/LICENSE\n[gitter-badge]: https://img.shields.io/gitter/room/angular_rust/community.svg?style=flat-square\n[gitter-url]: https://gitter.im/angular_rust/community\n[tests-badge]: https://img.shields.io/github/workflow/status/angular-rust/yew-components/Tests?label=tests\u0026logo=github\u0026style=flat-square\n[tests-url]: https://github.com/angular-rust/yew-components/actions/workflows/tests.yml\n[codecov-badge]: https://img.shields.io/codecov/c/github/angular-rust/yew-components?logo=codecov\u0026style=flat-square\u0026token=OWZIWBTGII\n[codecov-url]: https://codecov.io/gh/angular-rust/yew-components\n[loc-badge]: https://img.shields.io/tokei/lines/github/angular-rust/yew-components?style=flat-square\n[loc-url]: https://github.com/angular-rust/yew-components\n\nMaterial Design Components for the Yew framework.\n\n**Angular Rust** is a high productivity, `platform-agnostic` frontend framework for the [Rust language](https://www.rust-lang.org/). It now supports desktop and web development. Angular Rust currently uses GTK for desktop development and WebAssembly for web development. We are planning to add support for mobile development.\n\nYew Material Components is a components library for [Yew framework](https://yew.rs/) which is a wrapper around [Material Design Components](https://github.com/material-components/material-components-web) exposing Yew components. All modern browsers are supported.\n\n\n## Getting started\n\n### Installation\n\nCurrently, this library is available from [crates.io](https://crates.io/). Add it using `cargo-edit`\n```\ncargo add ymc\n```\n\nCargo features are used to pick the components. See [features](#features)   \n\n`Cargo.toml`:\n```toml\n[dependencies]\nymc = { version = \"0.1\", features = [\"full\"] }\n```\nMaterial icons and a Material font can also be imported for full functionality.  \n`index.html`:\n```html\n\u003clink href=\"https://fonts.googleapis.com/css?family=Roboto:300,400,500\" rel=\"stylesheet\"\u003e\n\u003clink href=\"https://fonts.googleapis.com/css?family=Material+Icons\u0026display=block\" rel=\"stylesheet\"\u003e\n```\n\nIt's also important to note that you need `viewport` `meta` tag for the Material Components to be responsive.\n```html\n\u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\u003e\n```\n\n### Features\n\nFollowing are all the cargo features available (each feature corresponds to its respective component):\n\n- [x] `banner`\n- [x] `button`\n- [x] `card`\n- [x] `checkbox`\n- [x] `chips`\n- [x] `circular-progress-four-color`\n- [x] `circular-progress`\n- [x] `data-table`\n- [x] `dialog`\n- [x] `drawer`\n- [x] `fab`\n- [x] `formfield`\n- [x] `icon-button-toggle`\n- [x] `icon-button`\n- [x] `icon`\n- [x] `image-list`\n- [x] `linear-progress`\n- [x] `list`\n- [x] `menu`\n- [x] `radio`\n- [x] `select`\n- [x] `slider`\n- [x] `slider`\n- [x] `snackbar`\n- [x] `switch`\n- [x] `tabs`\n- [x] `textarea`\n- [x] `textfield`\n- [x] `tooltip`\n- [x] `top-app-bar-fixed`\n- [x] `top-app-bar`\n\n`full` feature enables all the components\n\n## Adding additional components\nThis is still a work in progress... feel free to add additional components.\n\nTo port a component that hasn't been ported yet open [TODO](https://github.com/angular-rust/yew-components/blob/main/TODO.md)\n\nImplement a component you need and add it to the src/ directory.\n\n## Theming\n\nThese components respect the theming applied to Material Design Components using stylesheets. [Learn about how to theme Material Design Components.](https://github.com/material-components/material-components-web-components/blob/master/docs/theming.md)\n\n\n## Learn More\n\n* [Manual, Docs, etc](https://angular-rust.github.io/)\n* [Samples](https://github.com/angular-rust/ux-samples)\n* [Apps using Angular Rust](https://github.com/angular-rust/yew-components/wiki/Apps-in-the-Wild)\n* [Articles Featuring Angular Rust](https://github.com/angular-rust/yew-components/wiki/Articles)\n\n\n## Community\n\n [![](https://img.shields.io/badge/Facebook-1877F2?style=for-the-badge\u0026logo=facebook\u0026logoColor=white)](https://www.facebook.com/groups/angular.rust) \n [![](https://img.shields.io/badge/Stack_Overflow-FE7A16?style=for-the-badge\u0026logo=stack-overflow\u0026logoColor=white)](https://stackoverflow.com/questions/tagged/angular-rust) \n [![](https://img.shields.io/badge/YouTube-FF0000?style=for-the-badge\u0026logo=youtube\u0026logoColor=white)](https://www.youtube.com/channel/UCBJTkSl_JWShuolUy4JksTQ) \n [![](https://img.shields.io/badge/Medium-12100E?style=for-the-badge\u0026logo=medium\u0026logoColor=white)](https://medium.com/@angular.rust) \n [![](https://img.shields.io/gitter/room/angular_rust/angular_rust?style=for-the-badge)](https://gitter.im/angular_rust/community)\n\n\n## Contributing\n\nWe believe the wider community can create better code. The first tool for improving the community is to tell the developers about the project by giving it a star. More stars - more members.\n\n [![](https://dudochkin-victor.github.io/assets/star-me-wide.svg)](https://github.com/angular-rust/yew-components#top)\n\nAngular Rust is a community effort and we welcome all kinds of contributions, big or small, from developers of all backgrounds. We want the Angular Rust community to be a fun and friendly place, so please review our [Code of Conduct](CODE_OF_CONDUCT.md) to learn what behavior will not be tolerated.\n\n### New to Angular Rust?\n\nStart learning about the framework by helping us improve our [documentation](https://angular-rust.github.io/). Pull requests which improve test coverage are also very welcome.\n\n### Looking for inspiration?\n\nCheck out the community curated list of awesome things related to Angular Rust / WebAssembly at [awesome-angular-rust](https://github.com/angular-rust/awesome-angular-rust).\n\n### Confused about something?\n\nFeel free to drop into our [Gitter chatroom](https://gitter.im/angular_rust/community) or open a [new \"Question\" issue](https://github.com/angular-rust/yew-components/issues/new/choose) to get help from contributors. Often questions lead to improvements to the ergonomics of the framework, better documentation, and even new features!\n\n### Ready to dive into the code?\n\nAfter reviewing the [Contributing Code Guidelines](CONTRIBUTING.md), check out the [\"Good First Issues\"](https://github.com/angular-rust/yew-components/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22) (they are eager for attention!). Once you find one that interests you, feel free to assign yourself to an issue and don't hesitate to reach out for guidance, the issues vary in complexity.\n\n### Let's help each other!\n\nCome help us on the [issues that matter that the most](https://github.com/angular-rust/yew-components/labels/%3Adollar%3A%20Funded%20on%20Issuehunt) and receive a small cash reward for your troubles. We use [Issuehunt](https://issuehunt.io/r/angular-rust/yew-components/) to fund issues from our Open Collective funds. If you really care about an issue, you can choose to add funds yourself! \n\n### Found a bug?\n\nPlease [report all bugs!](https://github.com/angular-rust/yew-components/issues/new/choose) We are happy to help support developers fix the bugs they find if they are interested and have the time.\n\n## Todo\n- [ ] Documentation\n\n## Alternatives\n\n- https://github.com/Follpvosten/yew-mdc\n- https://github.com/AlephAlpha/muicss-yew\n\n## Resources\n\n- https://github.com/material-components/material-components-web\n- https://github.com/material-components/material-components-web-react\n- https://material-components.github.io/material-components-web-catalog/#/\n- https://github.com/jamesmfriedman/rmwc\n- https://github.com/pgbross/vue-material-adapter\n- https://github.com/material-components/material-components-web/blob/master/docs/integrating-into-frameworks.md\n- https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fangular-rust%2Fyew-components","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fangular-rust%2Fyew-components","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fangular-rust%2Fyew-components/lists"}