npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@cmsgov/medicare-site-package

v1.10.0

Published

A 'site package' on top of the CMSGOV Design System. Consists of SCSS overrides and React components for use on Medicare.gov websites.

Downloads

38

Readme

A Site Package is a method for sharing common, site-specific, design and code resources between the various teams working on Medicare.gov. These resources are unique to Medicare.gov, and not generalized for inclusion in the Design System. It includes assets like design system overrides and site-specific components.

Usage

Installation

yarn add @cmsgov/medicare-site-package (or you can use npm install).

Once downloaded, you can edit any of the site package files in the src directory if you need to, though it's recommended to put your project's overrides in their own files so that any updates to the M.gov DSSP files can be updated via this process.

If you don't have any overrides you want to make, or you don't want to incorporate SASS/SCSS into your project, you can take the compiled file from /dist/index.css.

Building and Watching the Whole Package

If you haven't done so already, run yarn install to install all of the dependencies needed to build or watch.

Having done so, should you make any changes to your version that necessitate rebuilding it, you can rebuild via yarn build. This will generate new, production-ready versions of /dist/index.js and /dist/index.min.css and will also update the type definition file.

Building and Watching just the Sass/CSS

Having ensured you have a sass compiler installed, run yarn build-css to build a minified CSS version. The resultant file will be /dist/index.min.css. If you are in the midst of testing changes and/or want a non-minified version, running yarn test-css will output /dist/index.css.

Importing Sass

The source files included are written in Sass (.scss). You can add your node_modules directory to your Sass includePaths and import the file like below.

Note: The site package's Sass file imports the core, layout, and support design system Sass files as well, so the following is all you need to import to gain access to those resources:

@import "@cmsgov/medicare-site-package/src/index";

Building and Watching just the React Components

This can be done via yarn build-js and yarn watch-js respectively.

Importing React components

For components distributed through the site package, you can import them like this:

import { Header } from "@cmsgov/medicare-site-package";

Note: Ensure that you use a bundler with tree shaking enabled to avoid bundling unused components.

File structure

├── dist
│   ├── index.css                         Compiled CSS
│   ├── index.css.map                     Compiled CSS Source Map
│   ├── index.d.ts                        TypeScript Definitions File (only useful if you're using TypeScript)
│   ├── index.js                          Compiled JS (pre-minified)
│   ├── index.min.css                     Minified and Compiled CSS
│   └── index.min.css                     Minified and Compiled CSS Source Map
└── src
    ├── components                        React components specially-designed for Medicare.gov sites
    │   └── images                        Componentized images, such as Medicare.gov and DHHS logos
    ├── example-implementations           Example implementations of the components into things like headers and footers
    ├── index.scss                        Main Sass entry point with all imports
    └── scss
        ├── _buttons.scss                 Design system Button variable overrides
        ├── _color.scss                   Design system Color variable overrides
        ├── _font_vars.scss               Design system Font variable overrides
        ├── _fonts_and_typography.scss    Overrides for specific typography-related style rules
        ├── _overrides.scss               Collects `_fonts_and_typography.scss` and `_utilities.scss` into one import
        ├── _utilities.scss               Sass utilities not already-included in the design system
        ├── _variables.scss               Collects the variable overrides into one import
        └── components                    Styles for the Medicare.gov-specific React components

Design assets

You can find a the Medicare design system Sketch file and related fonts in the design-assets folder.


Why a site package?

Medicare.gov consists of multiple codebases maintained by different teams. Deploying a design system avoids the duplication of code and assets across codebases and working against the software development principle to keep things DRY. Having multiple codebases would naturally lead to differences and would cause inefficiencies and inconsistencies to creep across the user interface and user experience.

The Design System is one way we're addressing the issues mentioned above. However, the design system is meant to be used by many CMS (Centers for Medicare & Medicaid Services) websites, not just Medicare.gov. As a result, the resources within the design system are not tied to a particular website.

Goals

The primary goal of the Site Package is to reduce the amount of duplicate instances of Medicare.gov front-end components and design assets, and having a single source of truth which all teams can contribute to and use.

A secondary goal for the Site Package is for it to serve as an intermediate step in a component's journey to becoming a design system component. This gives the teams working on HealthCare.gov a space to share and iterate on components that at first appear to only have a use case on Medicare.gov.

Non-goals

  • The Site Package is not meant to be as robust or as large as the Design System. It should be as small as possible, and ideally all reusable components would be from the design system.
  • The Site Package is not meant to serve as a resource for best practices or accessibility guidelines — that's the responsibility of the design system.
  • The Medicare.gov Site Package is not meant to be a solution for other CMS websites.

Additional links

  • For more information on the original Design System, check out its GitHub page.