This is an official library of shared UI components for Monday builders. It is used both for internal and external Monday apps development.
This library is open-sourced, and we encourage everyone to use and contribute into it.
- Create a fork of this repository
- Please use the correct node version it is listed in the
.nvmrc
file (you can usenvm use
in order to switch to the right node version). - Install dependencies with
npm install
command - Sync from upstream if needed
- Run Storybook environment locally with
npm run storybook
command. - Make sure all components behave as expected by running all Jest tests locally with 'npm run test'.
- If there are changes in some of the library snapshot tests, make sure all changes are intentional. If they are, update them with 'npm run test:update'.
- Commit to your local fork using Semantic Commit Messages
- Create a PR with title based using Semantic Commit Messages
For example:
feat: add new TextArea component
- Go over the checklist in the PR and make sure that all checks are passed
- Wait for the Design and Code review
- Enjoy your change after merge!
Our code generator, Plop, is designed to simplify the creation of frequently used boilerplate code. To utilize it, execute the command npm run plop
. If you want to learn more about Plop, you can find additional information here.
Currently, our Plop code generator supports the creation of the following:
- Tests
- Component story documentation pages
- Hook story documentation pages
- Entirely new components, which include tests and story pages
We strongly recommend utilizing our Plop code generator within this repository for generating any of the mentioned items. Doing so ensures that your code will be created with the latest recommended structure, providing a solid foundation for your development tasks.
If you add new features or abilities to an existing component, please ensure your props' naming follows our conventions and best practices. Read more about it here.
As the main development environment and documentation playground, we are using Storybook. Each component should be developed in isolation in the Storybook environment. You can read more about our docs implementation best practices here.
Every component should support theming, you can find more information about it here.
All the guidelines about testing your new component or changes to the existing one you can find here.
We use Prettier with the default community guidelines. Please, make sure that you are formatting your code with prettier.
We are using Semantic commits convention for creating Pull Requests and commits messages inside of the Pull Request.
To release a new version, you can run the "Release new version" workflow.
If you want to run it locally, you can do so with Github's CLI:
$ gh workflow run "Release new version"