milligram/.github/contributing.md

4.0 KiB

Contributing

We would love for you to contribute to Milligram and help us make this even better! Start reading this document to see it is not difficult as you might have imagined.

Note: For issues relating to the site, please use the milligram/milligram.github.io

Table of Contents

Open an Issue

Open an Issue to report any problems or improvements. When necessary, use Codepen to show the problem. Be sure to include some description to explain the problem.

Submit a Pull Request

To submit a new feature, make sure that changes are done to the source code. Follow our style guide and do not forget the tests and attach the link Codepen along with the description.

Try to solve a problem for each pull request, this increases the chances of acceptance. When in doubt, open a new issue so we can answer you. Look existing issues for ideas or to see if a similar issue has already been submitted.

  1. Fork the Github repo: git clone https://github.com/milligram/milligram.git
  2. Create a new branch: git checkout -b issuenumber-feature-name
  3. Commit your changes: git commit -m 'issuenumber-feature-name'
  4. Push to the branch: git push origin my-feature-name
  5. Submit a pull request!

Building

First install Node.js for the build process. Now install all the dependencies, run npm install from the project directory. Once you have the dependencies installed, run npm start. This will run the build task which compiles the Sass files into Milligram.css file in the expanded and compressed version.

You can do all of this from your browser using Gitpod, the free online dev environment.

Open in Gitpod

Style Guide

Milligram use Sass to give super powers to CSS. Look at how the code is being maintained, we must always be consistent. We try to follow best practices as much as possible. In addition, here are some tips you should follow:

  • Properties and selectors are sorted in alphabetical order
  • Always use tab to indentation, no spaces
  • Always use single quote, i.e. content: ''
  • Quote attribute values in selectors, i.e. input[type='checkbox']
  • Avoid specifying units for zero-values, i.e. margin: 0
  • Use rem unit instead of px
  • Use lowercase and shorthand hex values, i.e. #fff
  • Use one discrete selector per line in multi-selector rulesets
  • Include a single space after colon and after each comma
  • Separate each ruleset by a blank line
  • Don't use prefixes, there is a task to generate this automatically
.selector-a,
.selector-b,
.selector-c,
.selector-d[type='text']
  box-sizing: border-box
  color: #333
  content: ''
  display: inline-block
  font-family: 'Helvetica-Neue', 'Helvetica', 'Arial', sans-serif
  margin-bottom: 0
  margin-left: 5.0rem

  .other-selector-a
    background: #fff

    .other-selector-b
      background: #fff

    &.increasing-the-specificity
      color: #000

Note: This style guide was inspired by Idiomatic.css.

Test

Breaking CSS is easy. Checking every responsive page element is hard. That's why Milligram uses automated visual regression testing for responsive web UI by comparing DOM screenshots at various viewport sizes. To view the comparison run npm run visual-regression after making changes to the source code.

Code of Conduct

Help us keep Milligram open and inclusive. Please read and follow our thoughts on Code of Conduct.

License

By contributing your code, you agree to license your contribution under the MIT license.