This repository contains the source code for Massachusetts Design System packages. Today it includes:
packages/assetsfor icons, animation files, and state seal assets published as@massds/mds-assetspackages/tokensfor CSS design tokens published as@massds/mds-tokenspackages/stylesfor generated helper and utility CSS published as@massds/mds-styles
Each package has its own README with package-specific development and publishing details.
For general guidance on how to use the Design System, check out the Design System Microsite.
In the upcoming quarter, we will be working on creating the HTML, CSS and Javascript for required components such as State Banner and Footer. We will announce when these components will be ready for testing and use.
We are a small but mighty crew enthusiastic to partner with teams hoping to leverage the Massachusetts Design System for upcoming projects. Please provide any feedback in our Community of Practice channel on Microsoft Teams or via email at designsystem@mass.gov.
Read more about the Community of Practice here.
- Choose the package you want to work in:
packages/assets,packages/tokens, orpackages/styles - Install dependencies from that package directory with
npm install - Run the package checks you need, such as
npm run lintornpm run build - Add a changelog fragment under
packages/<package>/changelog.d/if your change affects a published package
This expectation is also called out in the pull request template and validated in CI by
.github/workflows/check-package-changelogs.yml.
For package-specific setup and commands, see the README inside each package directory.
Packages are released independently and published to npm through GitHub Actions.
packages/assetspublishes through.github/workflows/publish-assets.ymlpackages/tokenspublishes through.github/workflows/publish-tokens.ymlpackages/styleswill need its own publish workflow before the first npm release
Recommended branch and tag strategy:
- Use
mainas the only long-lived release branch. - Squash&merge feature work into
mainthrough pull requests with required checks. - Create release tags only from
main. - Keep package-specific tag prefixes if more packages are added later, for example
assets-v*,tokens-v*, andcomponents-v*.
Release flow:
- Create a release branch
release/<package>-<version>frommain - Make sure the package version in
package.jsonis updated following semantic versioning and runnpm i & npm run build - Compile changelog fragments into
CHANGELOG.mdby runningnpm run changelog:releaseinside the package directory - Create a PR and merge into
main(without squashing) - In the GitHub UI, create a package-specific release tag on the release commit that matches the package version and copy in the relevant release notes from
CHANGELOG.md - Creating the tag in GitHub triggers the publish workflow
Tag format:
- Assets:
assets-v<version> - Tokens:
tokens-v<version> - Styles:
styles-v<version>
Release channels:
- Stable versions such as
1.0.0publish to npm with the defaultlatestdist-tag - Prerelease versions such as
1.1.0-beta.1publish to npm with thebetadist-tag
For package-specific release details, see: