{"id":13683124,"url":"https://github.com/sumup-oss/circuit-ui","last_synced_at":"2026-06-03T08:01:57.017Z","repository":{"id":37444941,"uuid":"95433249","full_name":"sumup-oss/circuit-ui","owner":"sumup-oss","description":"SumUp's design system for the web","archived":false,"fork":false,"pushed_at":"2026-01-09T16:24:33.000Z","size":131725,"stargazers_count":968,"open_issues_count":12,"forks_count":129,"subscribers_count":56,"default_branch":"main","last_synced_at":"2026-01-10T22:32:47.971Z","etag":null,"topics":["circuit-ui","component-library","design-system","react","react-components","sumup"],"latest_commit_sha":null,"homepage":"https://circuit.sumup.com","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sumup-oss.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2017-06-26T09:57:50.000Z","updated_at":"2026-01-10T07:57:47.000Z","dependencies_parsed_at":"2025-12-18T19:07:29.258Z","dependency_job_id":null,"html_url":"https://github.com/sumup-oss/circuit-ui","commit_stats":{"total_commits":2957,"total_committers":92,"mean_commits":"32.141304347826086","dds":0.7074737910043963,"last_synced_commit":"6e5cbe13dacdb998c9ab3a706448e1eead513402"},"previous_names":["sumup/circuit-ui"],"tags_count":795,"template":false,"template_full_name":null,"purl":"pkg:github/sumup-oss/circuit-ui","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sumup-oss%2Fcircuit-ui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sumup-oss%2Fcircuit-ui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sumup-oss%2Fcircuit-ui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sumup-oss%2Fcircuit-ui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sumup-oss","download_url":"https://codeload.github.com/sumup-oss/circuit-ui/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sumup-oss%2Fcircuit-ui/sbom","scorecard":{"id":858412,"data":{"date":"2025-08-11","repo":{"name":"github.com/sumup-oss/circuit-ui","commit":"04b5f2a9f4a82242234b505e4eb5535919359a6b"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":6.6,"checks":[{"name":"Code-Review","score":7,"reason":"Found 15/19 approved changesets -- score normalized to 7","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":"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":"Maintained","score":10,"reason":"30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: topLevel 'contents' permission set to 'read': .github/workflows/actions.yml:13","Warn: no topLevel permission defined: .github/workflows/chromatic.yml:1","Warn: no topLevel permission defined: .github/workflows/ci.yml:1","Warn: no topLevel permission defined: .github/workflows/codeql-analysis.yml:1","Warn: no topLevel permission defined: .github/workflows/cr.yml:1","Warn: no topLevel permission defined: .github/workflows/labels.yml:1","Warn: no topLevel permission defined: .github/workflows/size.yml:1","Warn: no topLevel permission defined: .github/workflows/stale.yml:1","Warn: no topLevel permission defined: .github/workflows/templates.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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache 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":"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":"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":"Security-Policy","score":4,"reason":"security policy file detected","details":["Info: security policy file detected: github.com/sumup-oss/.github/SECURITY.md:1","Warn: no linked content found","Info: Found disclosure, vulnerability, and/or timelines in security policy: github.com/sumup-oss/.github/SECURITY.md:1","Info: Found text in security policy: github.com/sumup-oss/.github/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":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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":"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":"Pinned-Dependencies","score":2,"reason":"dependency not pinned by hash detected -- score normalized to 2","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/actions.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/sumup-oss/circuit-ui/actions.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/actions.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/sumup-oss/circuit-ui/actions.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/chromatic.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/sumup-oss/circuit-ui/chromatic.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/chromatic.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/sumup-oss/circuit-ui/chromatic.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/chromatic.yml:35: update your workflow using https://app.stepsecurity.io/secureworkflow/sumup-oss/circuit-ui/chromatic.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/sumup-oss/circuit-ui/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/sumup-oss/circuit-ui/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:45: update your workflow using https://app.stepsecurity.io/secureworkflow/sumup-oss/circuit-ui/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:51: update your workflow using https://app.stepsecurity.io/secureworkflow/sumup-oss/circuit-ui/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/sumup-oss/circuit-ui/codeql-analysis.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/sumup-oss/circuit-ui/codeql-analysis.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/sumup-oss/circuit-ui/codeql-analysis.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/cr.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/sumup-oss/circuit-ui/cr.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/cr.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/sumup-oss/circuit-ui/cr.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/cr.yml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/sumup-oss/circuit-ui/cr.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/labels.yml:10: update your workflow using https://app.stepsecurity.io/secureworkflow/sumup-oss/circuit-ui/labels.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/size.yml:10: update your workflow using https://app.stepsecurity.io/secureworkflow/sumup-oss/circuit-ui/size.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/size.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/sumup-oss/circuit-ui/size.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/stale.yml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/sumup-oss/circuit-ui/stale.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/templates.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/sumup-oss/circuit-ui/templates.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/templates.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/sumup-oss/circuit-ui/templates.yml/main?enable=pin","Warn: npmCommand not pinned by hash: .github/workflows/templates.yml:47","Info:   0 out of  15 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   6 third-party GitHubAction dependencies pinned","Info:   3 out of   4 npmCommand 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":"SAST","score":10,"reason":"SAST tool is run on all commits","details":["Info: SAST configuration detected: CodeQL","Info: all commits (29) 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"}},{"name":"Vulnerabilities","score":9,"reason":"1 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-52f5-9888-hmc6"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-24T00:32:50.305Z","repository_id":37444941,"created_at":"2025-08-24T00:32:50.305Z","updated_at":"2025-08-24T00:32:50.305Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28571556,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-19T12:50:50.164Z","status":"ssl_error","status_checked_at":"2026-01-19T12:50:42.704Z","response_time":67,"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":["circuit-ui","component-library","design-system","react","react-components","sumup"],"created_at":"2024-08-02T13:02:01.237Z","updated_at":"2026-01-19T14:00:56.819Z","avatar_url":"https://github.com/sumup-oss.png","language":"TypeScript","funding_links":[],"categories":["TypeScript","🌐 Web Development - Frontend"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./.storybook/public/images/logo-name-brand-dark.png\"\u003e\n  \u003cimg alt=\"Circuit UI by SumUp\" src=\"./.storybook/public/images/logo-name-brand-light.png\"\u003e\n\u003c/picture\u003e\n\n[![Stars](https://img.shields.io/github/stars/sumup-oss/circuit-ui?style=social)](https://github.com/sumup-oss/circuit-ui/stargazers) [![Coverage](https://img.shields.io/codecov/c/github/sumup-oss/circuit-ui)](https://codecov.io/gh/sumup-oss/circuit-ui) [![License](https://img.shields.io/github/license/sumup-oss/circuit-ui)](./LICENSE) [![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-v2.1%20adopted-ff69b4.svg)](https://github.com/sumup-oss/circuit-ui/tree/main/CODE_OF_CONDUCT.md)\n\n[Circuit UI Web](https://circuit.sumup.com) is the web implementation of the [SumUp](https://sumup.com) Circuit Design System. Our primary goal is to create a system that can be used to build a wide variety of SumUp websites and apps, while providing a consistent and inclusive user experience to our end users. In addition, the design system and component library should be easy to use for developers and designers.\n\n\u003c/div\u003e\n\n## Quick start\n\nHere are a few helpful links for getting started with Circuit UI:\n\n- [Documentation](https://circuit.sumup.com/) - Learn how to use Circuit UI and view the components in Storybook.\n- [Getting started](https://circuit.sumup.com/?path=/docs/introduction-getting-started--docs) - Set up a new app with Circuit UI or add it to an existing project.\n- [Theming](https://circuit.sumup.com/?path=/docs/features-theme--docs) - Learn about our foundations such as colors, spacing, and typography.\n- [Contribute](https://circuit.sumup.com/?path=/docs/contributing-overview--docs) - File a bug report, suggest a change, or open a pull request.\n\n## Packages\n\n- **[@sumup-oss/circuit-ui](./packages/circuit-ui)** — the core React component library\n- **[@sumup-oss/design-tokens](./packages/design-tokens)** — visual primitives such as typography, color, and spacing\n- **[@sumup-oss/icons](./packages/icons)** — a collection of SVG icons\n- **[@sumup-oss/eslint-plugin-circuit-ui](./packages/eslint-plugin-circuit-ui)** — ESLint rules to help users follow best practices when using Circuit UI\n- **[@sumup-oss/stylelint-plugin-circuit-ui](./packages/stylelint-plugin-circuit-ui)** — Stylelint rules to help users follow best practices when using Circuit UI\n\n## Code of conduct\n\nWe want to foster an inclusive and friendly community around our Open Source efforts. Like all SumUp Open Source projects, this project follows the Contributor Covenant Code of Conduct. Please, [read it and follow it](./CODE_OF_CONDUCT.md).\n\nIf you feel another member of the community violated our CoC or you are experiencing problems participating in our community because of another individual's behavior, please get in touch with our maintainers. We will enforce the CoC.\n\n### Maintainers\n\n- [Connor Bär](mailto:connor.baer@sumup.com)\n\n## Contributing\n\nIf you have ideas for how we could improve this readme or the project in general, [let us know](https://github.com/sumup-oss/circuit-ui/issues) or [contribute some](https://github.com/sumup-oss/circuit-ui/edit/main/README.md)!\n\n## Thanks\n\n[![Chromatic logo](https://raw.githubusercontent.com/sumup-oss/circuit-ui/main/.storybook/public/images/chromatic.svg?sanitize=true)](https://www.chromatic.com/)\n\nThanks to [Chromatic](https://www.chromatic.com/) for providing the visual testing platform that helps us catch unexpected changes on time.\n\n## About SumUp\n\n[![SumUp logo](https://raw.githubusercontent.com/sumup-oss/assets/main/sumup-logo.svg?sanitize=true)](https://sumup.com)\n\n[SumUp](https://sumup.com) is a mobile-point of sale provider. It is our mission to make easy and fast card payments a reality across the _entire_ world. You can pay with SumUp in more than 30 countries already. Our engineers work in Berlin, Cologne, Sofia, and Sāo Paulo. They write code in JavaScript, Swift, Ruby, Elixir, Erlang, and much more. Want to come work with us? [Head to our careers page](https://sumup.com/careers) to find out more.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsumup-oss%2Fcircuit-ui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsumup-oss%2Fcircuit-ui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsumup-oss%2Fcircuit-ui/lists"}