Thank you for showing interest in contributing to Mantine. All of your contributions are extremely valuable to the success of this project!
- Improve documentation - fix incomplete or missing docs, bad wording, examples, or explanations
- Give feedback - we are constantly working to make Mantine a better experience, so please feel free to share what you like, dislike, or any improvements you'd like to see via GitHub Discussions or Discord
- Share Mantine - help us spread the word by sharing Mantine, or even Tweet about Mantine directly
- GitHub Issues - work on an outstanding issue to help us keep Mantine a sturdy, reliable UI solution
- Suggest New Features - please feel free to dicuss any new features you'd like to see by creating a GitHub issue or sending a Discord message
- After deciding which GitHub issue or feature you'd like to work on, create a local branch to track your changes
- If applicable, add unit tests while implementing your code
- Ensure that all commits follow our commit convention
- It is highly recommended that you run the
npm testcommand to ensure new contributions integrate with the old before initiating a merge request - Create a merge request and keep up-to-date with any feedback you receive from a maintainer
If you are unable to finish your task, please let us know in the GitHub Issue in which your work was initiated. The Mantine community is friendly; we won't judge or ask any questions if you decide to cancel your submission.
Mantine is a monorepo, so it is important to write the correct commit messages to keep the git history clean. All commits made in this repository are divided into 3 groups:
- package commits - related to a particular package
- docs commits - related to documentation
- core commits - only related to repository tooling (not associated with any package)
The commit message consists of 3 parts:
[area] Optional title: MessageExamples:
[core] Fix documentation deployment script– Change made in repository script, it is not related to documentation or any package[docs] Update report issues link– Change related to documentation website[@mantine/core] Button: Add theme focus styles– Change in@mantine/corepackage at Button component[@mantine/hooks] use-list-state: Add remove handler– Change in@mantine/hookspackage at use-list-state hook
- master: the current version, or alternatively, patches for current minor version (1.0.x)
- dev: contains the next minor version (1.x.0) (more often than not, you'll want to create a PR directly to this branch)
- Fork the Mantine repository
- Install the editorconfig extension for your editor
- Install dependencies with yarn –
yarn - Take an initial peek at our components by running
npm run storybook
All npm scripts are located inside the package.json file. Individual packages do not have dedicated scripts.
docs– starts the docs development serverstorybook- starts the storybook development server
syncpack– runs syncpacktypecheck– runs TypeScript typechecking withtsc --noEmiton all packages and docslint– runs ESLint on src folderjest– runs tests with jesttest– runs all above testing scripts
docs:docgen– generates components types information with docgen scriptdocs:sizes– generates bundle size information for all packagesdocs:clean– runsgatsby cleandocs:build– runs all above docs scripts and build production docs bundledocs:deploy– runs all above docs scripts and deploys docs to GitHub Pages