├── .github ├── ISSUE_TEMPLATE │ ├── config.yml │ ├── 2.feature.yml │ ├── 3.support.yml │ ├── 4.rfc.yml │ └── 1.bug.yml └── workflows │ ├── check-if-pr-has-label.yml │ ├── no-response.yml │ ├── mark-duplicate.yml │ ├── issue-status-label-handler.yml │ ├── ensure-triage-label.yml │ └── issue-cleanup.yml └── README.md /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | contact_links: 2 | - name: Private question ❔ 3 | url: https://support.mui.com/hc/en-us/requests/new 4 | about: I need to ask a question in private. 5 | -------------------------------------------------------------------------------- /.github/workflows/check-if-pr-has-label.yml: -------------------------------------------------------------------------------- 1 | name: Check if PR has label 2 | 3 | on: 4 | pull_request: 5 | types: [opened, reopened, labeled, unlabeled] 6 | 7 | permissions: {} 8 | 9 | jobs: 10 | test-label-applied: 11 | # Tests that label is added on the PR 12 | runs-on: ubuntu-latest 13 | permissions: 14 | contents: read 15 | steps: 16 | - uses: mnajdova/github-action-required-labels@ca0df9249827e43aa4b4a0d25d9fe3e9b19b0705 # v2.1.0 17 | with: 18 | mode: minimum 19 | count: 1 20 | labels: '' 21 | -------------------------------------------------------------------------------- /.github/workflows/no-response.yml: -------------------------------------------------------------------------------- 1 | name: No response 2 | 3 | on: 4 | workflow_dispatch: 5 | schedule: 6 | # These runs in our repos are spread evenly throughout the day to avoid hitting rate limits. 7 | # If you change this schedule, consider changing the remaining repositories as well. 8 | # Runs at 3 am, 3 pm 9 | - cron: '0 3,15 * * *' 10 | 11 | permissions: {} 12 | 13 | jobs: 14 | noResponse: 15 | permissions: 16 | issues: write 17 | pull-requests: write 18 | name: Handle stale issues and PRs 19 | uses: mui/mui-public/.github/workflows/general_handle-stale-issues-and-prs.yml@master 20 | -------------------------------------------------------------------------------- /.github/workflows/mark-duplicate.yml: -------------------------------------------------------------------------------- 1 | name: Mark duplicate 2 | 3 | on: 4 | issue_comment: 5 | types: [created] 6 | 7 | permissions: {} 8 | 9 | jobs: 10 | mark-duplicate: 11 | runs-on: ubuntu-latest 12 | permissions: 13 | contents: read 14 | issues: write 15 | steps: 16 | - name: Mark duplicate 17 | uses: actions-cool/issues-helper@a610082f8ac0cf03e357eb8dd0d5e2ba075e017e # v3.6.0 18 | with: 19 | actions: 'mark-duplicate' 20 | token: ${{ secrets.GITHUB_TOKEN }} 21 | duplicate-labels: 'duplicate' 22 | remove-labels: 'status: incomplete,status: waiting for maintainer' 23 | close-issue: true 24 | -------------------------------------------------------------------------------- /.github/workflows/issue-status-label-handler.yml: -------------------------------------------------------------------------------- 1 | name: Issue status label handler 2 | 3 | on: 4 | issue_comment: 5 | # on 'issue_comment.created' we check if the comment comes from the author and remove the "status: waiting for author" label 6 | # additionally we reopen the issue when it is closed and the author comments on it 7 | types: [created] 8 | issues: 9 | # on 'issues.closed' events we simply remove the "status: waiting for author" or "status: waiting for maintainer" label 10 | types: [closed] 11 | 12 | permissions: {} 13 | 14 | jobs: 15 | statusHandling: 16 | permissions: 17 | contents: read 18 | issues: write 19 | actions: write 20 | name: Handle status labels 21 | uses: mui/mui-public/.github/workflows/issues_status-label-handler.yml@master 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # MUI in your favorite design tool 2 | 3 | Pick your favorite design tool to enjoy and use the components. Boost consistency and facilitate communication when working with developers. 4 | 5 | ## Documentations 6 | 7 | - MUI for Figma: [Check out the documentation](https://mui.com/figma/getting-started/) 8 | - MUI for Sketch no docs yet 9 | 10 | ## Bug tracker 11 | 12 | You can find all the improvement opportunities that we are considering and working on under the [Issues page](https://github.com/mui/mui-design-kits/issues). 13 | Feel free to open [a new GitHub issue](https://github.com/mui/mui-design-kits/issues/new) if can't already find the pain point you are facing in this list. 14 | 15 | ## Roadmap 16 | 17 | Our [GitHub project's roadmap](https://github.com/orgs/mui/projects/36) is where you can learn about what features we're working on, what stage they're at, and when we expect to bring them to you. 18 | -------------------------------------------------------------------------------- /.github/workflows/ensure-triage-label.yml: -------------------------------------------------------------------------------- 1 | name: Ensure triage label is present 2 | 3 | on: 4 | label: 5 | types: 6 | - deleted 7 | issues: 8 | types: 9 | - opened 10 | 11 | permissions: {} 12 | 13 | jobs: 14 | label_issues: 15 | runs-on: ubuntu-latest 16 | permissions: 17 | issues: write 18 | steps: 19 | - uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 # v6 20 | with: 21 | script: | 22 | const { data: labels } = await github.rest.issues.listLabelsOnIssue({ 23 | issue_number: context.issue.number, 24 | owner: context.repo.owner, 25 | repo: context.repo.repo, 26 | }); 27 | 28 | if (labels.length <= 0) { 29 | await github.rest.issues.addLabels({ 30 | issue_number: context.issue.number, 31 | owner: context.repo.owner, 32 | repo: context.repo.repo, 33 | labels: ['status: waiting for maintainer'] 34 | }) 35 | } 36 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/2.feature.yml: -------------------------------------------------------------------------------- 1 | name: Feature request 💄 2 | description: Suggest a new idea for MUI Design Kits. 3 | labels: ['status: waiting for maintainer'] 4 | body: 5 | - type: markdown 6 | attributes: 7 | value: Thanks for contributing by creating an issue! ❤️ Please provide a searchable summary of the issue in the title above ⬆️. 8 | - type: input 9 | attributes: 10 | label: Search keywords 11 | description: | 12 | Your issue may have already been reported! First search for duplicates among the [existing issues](https://github.com/mui/mui-design-kits/issues?utf8=%E2%9C%93&q=is%3Aopen+is%3Aclosed). 13 | If your issue isn't a duplicate, great! Please list the keywords you used so people in the future can find this one more easily: 14 | validations: 15 | required: true 16 | - type: checkboxes 17 | attributes: 18 | label: Latest version 19 | description: We roll bug fixes, performance enhancements, and other improvements into new releases. 20 | options: 21 | - label: I have tested the latest version 22 | required: true 23 | - type: textarea 24 | attributes: 25 | label: Summary 26 | description: Describe how it should work. 27 | - type: textarea 28 | attributes: 29 | label: Examples 30 | description: Provide a link for appropriate benchmarks, such as Material Design or other design system's implementations, and screenshots/videos of the expected behavior. 31 | - type: textarea 32 | attributes: 33 | label: Motivation 34 | description: What are you trying to accomplish? Providing context helps us come up with a solution that is more useful in the real world. 35 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/3.support.yml: -------------------------------------------------------------------------------- 1 | name: 'Support question ❔' 2 | description: I can't find a solution to my problem with MUI Design Kits. 3 | title: "[question] " 4 | labels: ['status: waiting for maintainer', 'support: question'] 5 | body: 6 | - type: markdown 7 | attributes: 8 | value: | 9 | Please provide a searchable summary of the issue in the title above ⬆️. 10 | 11 | ⚠️ **Don't use this form if the problem is [a bug](https://github.com/mui/mui-design-kits/issues/new?assignees=&labels=status%3A+waiting+for+maintainer&template=1.bug.yml) or a [feature request](https://github.com/mui/mui-design-kits/issues/new?assignees=&labels=status%3A+waiting+for+maintainer&template=2.feature.yml), use the dedicated form instead.** 12 | - type: input 13 | attributes: 14 | label: Search keywords 15 | description: | 16 | Your issue may have already been reported! First search for duplicates among the [existing issues](https://github.com/mui/mui-design-kits/issues?utf8=%E2%9C%93&q=is%3Aopen+is%3Aclosed). 17 | If your issue isn't a duplicate, great! Please list the keywords you used so people in the future can find this one more easily: 18 | validations: 19 | required: true 20 | - type: checkboxes 21 | attributes: 22 | label: Latest version 23 | description: We roll bug fixes, performance enhancements, and other improvements into new releases. 24 | options: 25 | - label: I have tested the latest version 26 | required: true 27 | - type: textarea 28 | attributes: 29 | label: The problem in depth 30 | - type: textarea 31 | attributes: 32 | label: Your environment 33 | description: The version of the design file you are using. The version is usually disabled in the footer of the design frames. 34 | -------------------------------------------------------------------------------- /.github/workflows/issue-cleanup.yml: -------------------------------------------------------------------------------- 1 | name: Cleanup issue comment 2 | 3 | on: 4 | issues: 5 | types: 6 | - opened 7 | 8 | permissions: {} 9 | 10 | jobs: 11 | issue_cleanup: 12 | runs-on: ubuntu-latest 13 | permissions: 14 | issues: write 15 | steps: 16 | - uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 # v6 17 | with: 18 | script: | 19 | const issue = await github.rest.issues.get({ 20 | owner: context.repo.owner, 21 | repo: context.repo.repo, 22 | issue_number: context.issue.number, 23 | }) 24 | 25 | const lines = issue.data.body.split('\n') 26 | 27 | const _ = extractInputSection(lines, 'Latest version') 28 | const searchKeywords = extractInputSection(lines, 'Search keywords') 29 | const orderID = extractInputSection(lines, 'Order ID or Support key') 30 | 31 | lines.push('') 32 | lines.push('**Search keywords**: ' + searchKeywords) 33 | if (orderID !== '' && orderID !== '_No response_') { 34 | lines.push('**Order ID**: ' + orderID) 35 | } 36 | 37 | const body = lines.join('\n') 38 | 39 | await github.rest.issues.update({ 40 | owner: context.repo.owner, 41 | repo: context.repo.repo, 42 | issue_number: context.issue.number, 43 | body, 44 | }) 45 | 46 | function extractInputSection(lines, title) { 47 | const index = lines.findIndex(line => line.startsWith('###') && line.includes(title)) 48 | if (index === -1) { 49 | return '' 50 | } 51 | return lines.splice(index, 4)[2].trim() 52 | } 53 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/4.rfc.yml: -------------------------------------------------------------------------------- 1 | name: RFC 💬 2 | description: Request for comments for your proposal. 3 | title: "[RFC] " 4 | labels: ['RFC'] 5 | body: 6 | - type: markdown 7 | attributes: 8 | value: | 9 | Please provide a searchable summary of the RFC in the title above ⬆️. 10 | 11 | Thanks for contributing by creating an RFC! ❤️ 12 | - type: textarea 13 | attributes: 14 | label: What's the problem? 15 | description: A short paragraph or bullet list that quickly explains what you're trying to do, what value do we expect to get or any other relevant information to understand motivation behind this RFC. 16 | - type: textarea 17 | attributes: 18 | label: What are the requirements? 19 | description: Provide a list of requirements that should be met by the accepted proposal. 20 | - type: textarea 21 | attributes: 22 | label: What are our options? 23 | description: | 24 | Have you considered all options that we can achieve same/similar thing? It doesn't have to be explored in same detail as the main proposal, but having alternative options that you can present can help strengthen main proposal. 25 | 26 | Consider: 27 | - using diagrams to help illustrate your ideas 28 | - including code examples if you're proposing an interface or system contract 29 | - linking to project briefs or wireframes that are relevant 30 | - type: textarea 31 | attributes: 32 | label: Proposed solution 33 | description: | 34 | This is the core of RFC, and its purpose is to clearly explain reasoning for the proposed solution, why it's better compared to the other options or why should it be chosen instead. 35 | 36 | Consider: 37 | - using diagrams to help illustrate your ideas 38 | - including code examples if you're proposing an interface or system contract 39 | - linking to project briefs or wireframes that are relevant 40 | - type: textarea 41 | attributes: 42 | label: Relevant resources/benchmarks 🔗 43 | description: Attach any issues, PRs, links, documents, etc… that might be relevant to the RFC.. 44 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/1.bug.yml: -------------------------------------------------------------------------------- 1 | name: Bug report 🐛 2 | description: Create a bug report for MUI Design Kits. 3 | labels: ['status: waiting for maintainer'] 4 | body: 5 | - type: markdown 6 | attributes: 7 | value: Thanks for contributing by creating an issue! ❤️ Please provide a searchable summary of the issue in the title above ⬆️. 8 | - type: input 9 | attributes: 10 | label: Search keywords 11 | description: | 12 | Your issue may have already been reported! First search for duplicates among the [existing issues](https://github.com/mui/mui-design-kits/issues?utf8=%E2%9C%93&q=is%3Aopen+is%3Aclosed). 13 | If your issue isn't a duplicate, great! Please list the keywords you used so people in the future can find this one more easily: 14 | validations: 15 | required: true 16 | - type: checkboxes 17 | attributes: 18 | label: Latest version 19 | description: We roll bug fixes, performance enhancements, and other improvements into new releases. 20 | options: 21 | - label: I have tested the latest version 22 | required: true 23 | - type: textarea 24 | attributes: 25 | label: Steps to reproduce 26 | description: | 27 | **⚠️ Issues that we can't reproduce can't be fixed.** 28 | value: | 29 | Steps: 30 | 1. 31 | 2. 32 | 3. 33 | - type: textarea 34 | attributes: 35 | label: Current behavior 36 | description: Describe what happens instead of the expected behavior. 37 | - type: textarea 38 | attributes: 39 | label: Expected behavior 40 | description: Describe what should happen. 41 | - type: textarea 42 | attributes: 43 | label: Context 44 | description: What are you trying to accomplish? Providing context helps us come up with a solution that is more useful in the real world. 45 | - type: textarea 46 | attributes: 47 | label: Your environment 48 | description: Help us reproduce the issue. 49 | value: | 50 | | Software | Version | 51 | | ------------------- | --------------------- | 52 | | Design file version | v5.?.? | 53 | | Design tool | Figma/Adobe XD/Sketch | 54 | | etc. | | 55 | --------------------------------------------------------------------------------