Skip to main content Home
About About the Design SystemRoadmap
Get started OverviewDesignersDevelopers
Foundations OverviewColorGridIconographyInteractionsSpacingTypography
Tokens Overview Global colorBox shadowTypographyBorderOpacitySpaceLengthIconBreakpointsMedia queries
Elements All elements Accordion Alert Announcement Audio player Avatar Back to top Badge Blockquote Breadcrumb Button Card Chip Code block Call to action Dialog Disclosure Footer Health index Icon Jump links Navigation (primary) Navigation (secondary) Pagination PopoverPlanned Progress stepper Scheme toggle Site status Skeleton Skip link Spinner Statistic Subnavigation Surface Switch Table Tabs Tag Tile Timestamp Tooltip Video embed
Theming OverviewColor PalettesCustomizingDevelopers
Patterns All PatternsCardFilterFormLink with iconLogo wallSearch barSticky bannerSticky cardTabsTagTile
Personalization All Personalization PatternsAnnouncement
Accessibility FundamentalsAccessibility toolsAssistive technologiesCI/CDContentContributorsDesignDevelopmentManual testingResourcesScreen readers
Design/code status Release notes Get support

Developers

OverviewInstallationUsageTokensContributing
How to installRed Hat CDNNPMjsDelivr CDNLightdom CSSLightdom CSS shimsHow to installRed Hat CDNNPMjsDelivr CDNLightdom CSSLightdom CSS shims

Notice

Our new CDN server will be the preferred method of installation going forward. If you are a Red Hat associate and have questions or comments about the CDN or installation process please connect with us on Slack.

How to install

There are three ways you can install the Red Hat Design System's Web Components: Red Hat CDN, NPM, or via a third party CDN like jsDelivr. Each element's "Code" page includes the same installation information with code snippets that are specific to that element.

Tokens CSS

In addition to loading JavaScript, RHDS strongly encourages loading our design tokens via a <link> tag in the <head>. Designers and developers use tokens instead of hard-coded values to create flexible yet seamless user experiences across a variety of Red Hat platforms and technologies. See our Tokens Installation page for further details.

Red Hat CDN

The recommended way to load the Red Hat Design System (RHDS) on Red Hat websites and applications is through the Red Hat Digital Experience CDN using an import map.

Note: Due to current information security standards regarding access to the CDN, the CDN only allows requests from *.redhat.com domains. This means for local development an /etc/hosts change to forward localhost to something like dev.foo.redhat.com and navigating to that instead of localhost is required. If you need help setting this up for your project please reach out on Slack.

Using import maps

  • If you have full control over the page you are using, add an import map to the <head> pointing to the CDN or update any existing import map.
  • If you are not responsible for the page's <head>, request that the page owner makes the change on your behalf.

Base import map

Below is the base import map for using version 3.1.1 RHDS components.

<script type="importmap">
  {
    "imports": {
      "@rhds/elements/": "https://www.redhatstatic.com/dssf-001/v2/@rhds/elements@3.1.1/elements/"
    },
    "scopes": {
      "https://www.redhatstatic.com/dssf-001/v2/": {
          "@floating-ui/core": "https://www.redhatstatic.com/dssf-001/v2/@floating-ui/core@1.7.1/dist/floating-ui.core.mjs",
          "@floating-ui/dom": "https://www.redhatstatic.com/dssf-001/v2/@floating-ui/dom@1.7.1/dist/floating-ui.dom.mjs",
          "@floating-ui/utils": "https://www.redhatstatic.com/dssf-001/v2/@floating-ui/utils@0.2.9/dist/floating-ui.utils.mjs",
          "@floating-ui/utils/dom": "https://www.redhatstatic.com/dssf-001/v2/@floating-ui/utils@0.2.9/dist/floating-ui.utils.dom.mjs",
          "@lit/context": "https://www.redhatstatic.com/dssf-001/v2/@lit/context@1.1.5/development/index.js",
          "@lit/reactive-element": "https://www.redhatstatic.com/dssf-001/v2/@lit/reactive-element@2.1.0/reactive-element.js",
          "@lit/reactive-element/decorators/": "https://www.redhatstatic.com/dssf-001/v2/@lit/reactive-element@2.1.0/decorators/",
          "@patternfly/pfe-core": "https://www.redhatstatic.com/dssf-001/v2/@patternfly/pfe-core@5.0.3/core.js",
          "@patternfly/pfe-core/": "https://www.redhatstatic.com/dssf-001/v2/@patternfly/pfe-core@5.0.3/",
          "@rhds/elements/lib/": "https://www.redhatstatic.com/dssf-001/v2/@rhds/elements@3.1.1/lib/",
          "@rhds/icons": "https://www.redhatstatic.com/dssf-001/v2/@rhds/icons@1.3.1/icons.js",
          "@rhds/icons/": "https://www.redhatstatic.com/dssf-001/v2/@rhds/icons@1.3.1/",
          "@rhds/tokens/media.js": "https://www.redhatstatic.com/dssf-001/v2/@rhds/tokens@3.0.1/js/media.js",
          "@rhds/tokens/": "https://www.redhatstatic.com/dssf-001/v2/@rhds/tokens@3.0.1/",
          "lit": "https://www.redhatstatic.com/dssf-001/v2/lit@3.3.0/index.js",
          "lit/": "https://www.redhatstatic.com/dssf-001/v2/lit@3.3.0/",
          "lit-element/lit-element.js": "https://www.redhatstatic.com/dssf-001/v2/lit-element@4.2.0/lit-element.js",
          "lit-html": "https://www.redhatstatic.com/dssf-001/v2/lit-html@3.3.0/lit-html.js",
          "lit-html/": "https://www.redhatstatic.com/dssf-001/v2/lit-html@3.3.0/",
          "tslib": "https://www.redhatstatic.com/dssf-001/v2/tslib@2.8.1/tslib.es6.mjs"
      }
    }
  }
</script>

Loading individual elements

Once the import map is established, you can load individual elements using a bare module specifier.

For example, you can load <rh-button> using the following:

<rh-button>Primary</rh-button>

<script type="module">
  import "@rhds/elements/rh-button/rh-button.js";
</script>

Note that modules may be placed in the <head>. Since they are deferred by default, they will not block rendering. Multiple import statements on the same page to the same script in this manner are completely safe, and will be deduplicated, so the browser won't make any additional calls as long as they use the same bare module specifier.

Still need CDN v1 bundles?

If you'd like to continue to use the bundles available in v1 of our CDN, they are still available on our new server at the following URL:

https://www.redhatstatic.com/dssf-001/v1-alpha/

To migrate, change /dx/v1-alpha/ to /dssf-001/v1-alpha/ in your current URLs.

NPM

Install RHDS using your team's preferred NPM package manager.

npm install @rhds/elements

Once that's been accomplished, you will need to use a bundler to resolve the bare module specifiers and optionally optimize the package for your site's particular use case and needs. Comprehensive guides to bundling are beyond the scope of this page; read more about bundlers on their websites:

jsDelivr CDN

Public CDNs

jsDelivr and other public CDNs should not be used on corporate domains. Use them for development purposes only!

Add an import map to the <head>, pointing to the jsDelivr CDN, or update any existing import map. This provides the same functionality as the Red Hat CDN but uses the publicly accessible jsDelivr CDN.

<script type="importmap">
  {
    "imports": {
      "@rhds/elements/": "https://cdn.jsdelivr.net/npm/@rhds/elements@3.1.1/elements/"
    },
    "scopes": {
      "https://cdn.jsdelivr.net/npm/": {
          "@floating-ui/core": "https://cdn.jsdelivr.net/npm/@floating-ui/core@1.7.1/dist/floating-ui.core.mjs",
          "@floating-ui/dom": "https://cdn.jsdelivr.net/npm/@floating-ui/dom@1.7.1/dist/floating-ui.dom.mjs",
          "@floating-ui/utils": "https://cdn.jsdelivr.net/npm/@floating-ui/utils@0.2.9/dist/floating-ui.utils.mjs",
          "@floating-ui/utils/dom": "https://cdn.jsdelivr.net/npm/@floating-ui/utils@0.2.9/dist/floating-ui.utils.dom.mjs",
          "@lit/context": "https://cdn.jsdelivr.net/npm/@lit/context@1.1.5/development/index.js",
          "@lit/reactive-element": "https://cdn.jsdelivr.net/npm/@lit/reactive-element@2.1.0/reactive-element.js",
          "@lit/reactive-element/decorators/": "https://cdn.jsdelivr.net/npm/@lit/reactive-element@2.1.0/decorators/",
          "@patternfly/pfe-core": "https://cdn.jsdelivr.net/npm/@patternfly/pfe-core@5.0.3/core.js",
          "@patternfly/pfe-core/": "https://cdn.jsdelivr.net/npm/@patternfly/pfe-core@5.0.3/",
          "@rhds/elements/lib/": "https://cdn.jsdelivr.net/npm/@rhds/elements@3.1.1/lib/",
          "@rhds/icons": "https://cdn.jsdelivr.net/npm/@rhds/icons@1.3.1/icons.js",
          "@rhds/icons/": "https://cdn.jsdelivr.net/npm/@rhds/icons@1.3.1/",
          "@rhds/tokens/media.js": "https://cdn.jsdelivr.net/npm/@rhds/tokens@3.0.1/js/media.js",
          "@rhds/tokens/": "https://cdn.jsdelivr.net/npm/@rhds/tokens@3.0.1/",
          "lit": "https://cdn.jsdelivr.net/npm/lit@3.3.0/index.js",
          "lit/": "https://cdn.jsdelivr.net/npm/lit@3.3.0/",
          "lit-element/lit-element.js": "https://cdn.jsdelivr.net/npm/lit-element@4.2.0/lit-element.js",
          "lit-html": "https://cdn.jsdelivr.net/npm/lit-html@3.3.0/lit-html.js",
          "lit-html/": "https://cdn.jsdelivr.net/npm/lit-html@3.3.0/",
          "tslib": "https://cdn.jsdelivr.net/npm/tslib@2.8.1/tslib.es6.mjs"
      }
    }
  }
</script>

Once the import map is established, you can load individual elements using the same approach as with the Red Hat CDN. For example, you can load <rh-button> using:

<rh-button>Primary</rh-button>

<script type="module">
  import "@rhds/elements/rh-button/rh-button.js";
</script>

Note that modules may be placed in the <head>. Since they are deferred by default, they will not block rendering.

Lightdom CSS

Some elements require you to load "Lightdom CSS" stylesheets, which are necessary for styling deeply slotted child elements. In some cases, these may also help reduce some Cumulative Layout Shift (CLS) experience before the element has fully initialized, but are not intended to be used without initializing the element or by themselves to prevent CLS.

Red Hat CDN
<link rel="stylesheet"
      href="https://www.redhatstatic.com/dssf-001/v2/@rhds/elements@3.1.1/rh-footer/rh-footer-lightdom.css">
Third party CDN
<link rel="stylesheet"
      href="https://cdn.jsdelivr.net/npm/@rhds/elements@3.1.1/elements/rh-footer/rh-footer-lightdom.css">

If you're looking for lightdom stylesheets on a third party CDN, the URL patterns follow a similar convention.

Note: a future version of RHDS will remove the requirement to manually load these stylesheets

Lightdom CSS shims

Some elements have provided an optional -lightdom-shim.css file to aid in limiting CLS as much as possible, by styling some parts of the element before it has fully initialized (i.e., :not(:defined)). These "shims" are inherently different than the required "Lightdom CSS" mentioned above, and are only a temporary stop-gap until Delcarative Shadow DOM is more widely available; at which point the shims will no longer be needed and will become deprecated.

<link rel="stylesheet"
      href="https://www.redhatstatic.com/dssf-001/v2/@rhds/elements@3.1.1/rh-cta/rh-cta-lightdom-shim.css">

Designers

To get started using our design system as a designer, go to the Designers page.

© 2025 Red Hat Deploys by Netlify