Skip to main content Home
About About the Design SystemRoadmap
Get started OverviewDesignersDevelopers
Foundations OverviewColorGridIconographySpacingTypography
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 stepsPlanned Site status Skip link Spinner Statistic Subnavigation Surface Switch Table Tabs Tag Tile Timestamp Tooltip Video embed
Theming OverviewColor PalettesCustomizingDevelopers
Patterns All PatternsCardTabsFilterFormLinkLink with iconLogo wallSearch barSkip navigationSticky bannerSticky cardTileVideo thumbnail
Personalization All Personalization PatternsAnnouncement
Accessibility FundamentalsAccessibility toolsAssistive technologiesCI/CDContentContributorsDesignDevelopmentManual testingResourcesScreen readers
Design/code status Release notes Get support

Accordion

OverviewStyleGuidelinesCodeAccessibilityDemos
ImportingUsagerh-accordionrh-accordion-headerrh-accordion-panelImportingUsagerh-accordionrh-accordion-headerrh-accordion-panel

Importing

Add rh-accordion to your page with this import statement:

<script type="module">
  import '@rhds/elements/rh-accordion/rh-accordion.js';
</script>
Copy to Clipboard Wrap lines

To learn more about installing RHDS elements on your site using an import map read our getting started docs.

Usage

<rh-accordion>
  <!-- H2 tags will be removed on upgrade, rh-accordion-header will set the correct heading level internally using the header tag that wraps it -->
  <h2><rh-accordion-header>Item One</rh-accordion-header></h2>
  <rh-accordion-panel>
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
  </rh-accordion-panel>
  <h2><rh-accordion-header>Item Two</rh-accordion-header></h2>
  <rh-accordion-panel>
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
  </rh-accordion-panel>
  <h2><rh-accordion-header>Item Three</rh-accordion-header></h2>
  <rh-accordion-panel>
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
  </rh-accordion-panel>
</rh-accordion>

<script type="module">
  import '@rhds/elements/rh-accordion/rh-accordion.js';
</script>
Copy to Clipboard Wrap lines

rh-accordion

An accordion is a stacked list of panels which allows users to expand or collapse information when selected. They feature panels that consist of a section text label and a caret icon that collapses or expands to reveal more information.

Slots 1
Slot Name Description

Place the rh-accordion-header and rh-accordion-panel elements here.

Attributes 4
Attribute DOM Property Description Type Default
accents accents

Sets accordion header's accents position to inline or bottom

'inline' | 'bottom' | undefined
inline
large large

If this accordion uses large styles

boolean
false
color-palette colorPalette

Color Palette for this accordion.

ColorPalette | undefined
unknown
expanded-index expandedIndex

Sets and reflects the currently expanded accordion 0-based indexes. Use commas to separate multiple indexes.

<rh-accordion expanded-index="1,2">
  ...
</rh-accordion>
unknown
unknown
Methods 6
Method Name Description
updateAccessibility()

Initialize the accordion by connecting headers and panels with aria controls and labels; set up the default disclosure state if not set by the author; and check the URL for default open

toggle(index: number)

Accepts a 0-based index value (integer) for the set of accordion items to expand or collapse.

expand(index: number, parentAccordion: RhAccordion)

Accepts a 0-based index value (integer) for the set of accordion items to expand. Accepts an optional parent accordion to search for headers and panels.

expandAll()

Expands all accordion items.

collapse(index: number)

Accepts a 0-based index value (integer) for the set of accordion items to collapse.

collapseAll()

Collapses all accordion items.

Events 3
Event Name Description
header
expand

when a panel expands

collapse

when a panel collapses

CSS Shadow Parts 0
None
CSS Custom Properties 0
None
Design Tokens 8
Token Copy
--rh-box-shadow-sm
Full CSS Variable Permalink to this token
--rh-color-border-subtle
Full CSS Variable Permalink to this token
--rh-color-surface
Full CSS Variable Permalink to this token
--rh-color-surface-darkest
Full CSS Variable Permalink to this token
--rh-color-surface-lightest
Full CSS Variable Permalink to this token
--rh-color-text-primary
Full CSS Variable Permalink to this token
--rh-font-size-body-text-lg
Full CSS Variable Permalink to this token
--rh-font-size-body-text-md
Full CSS Variable Permalink to this token

rh-accordion-header

Accordion Header We expect the light DOM of the rh-accordion-header to be a heading level tag (h1, h2, h3, h4, h5, h6)

Slots 2
Slot Name Description

accordion toggle content

accents

These elements will appear inline by default with the header title, between the header and the chevron (or after the chevron and header in disclosure mode). There is an option to set the accents placement to bottom

Attributes 1
Attribute DOM Property Description Type Default
expanded expanded
boolean
false
Methods 0
None
Events 1
Event Name Description
change

when the open panels change

CSS Shadow Parts 2
Part Name Description
text

inline element containing the heading text or slotted heading content

accents

container for accents within the header

CSS Custom Properties 0
None
Design Tokens 13
Token Copy
--rh-border-width-lg
Full CSS Variable Permalink to this token
--rh-border-width-sm
Full CSS Variable Permalink to this token
--rh-color-accent-brand
Full CSS Variable Permalink to this token
--rh-color-border-subtle
Full CSS Variable Permalink to this token
--rh-color-interactive-primary-default
Full CSS Variable Permalink to this token
--rh-color-surface-dark
Full CSS Variable Permalink to this token
--rh-color-surface-lighter
Full CSS Variable Permalink to this token
--rh-color-text-primary
Full CSS Variable Permalink to this token
--rh-font-family-body-text
Full CSS Variable Permalink to this token
--rh-font-weight-body-text-medium
Full CSS Variable Permalink to this token
--rh-space-lg
Full CSS Variable Permalink to this token
--rh-space-md
Full CSS Variable Permalink to this token
--rh-space-xl
Full CSS Variable Permalink to this token

rh-accordion-panel

Accordion Panel

Slots 1
Slot Name Description
undefined

The content of the accordion panel can be any basic markup including but not limited to div, paragraph, or nested accordion panels.

Attributes 1
Attribute DOM Property Description Type Default
expanded expanded
boolean
false
Methods 0
None
Events 0
None
CSS Shadow Parts 0
None
CSS Custom Properties 0
None
Design Tokens 7
Token Copy
--rh-border-width-lg
Full CSS Variable Permalink to this token
--rh-color-accent-brand
Full CSS Variable Permalink to this token
--rh-color-border-subtle
Full CSS Variable Permalink to this token
--rh-color-text-primary
Full CSS Variable Permalink to this token
--rh-space-lg
Full CSS Variable Permalink to this token
--rh-space-md
Full CSS Variable Permalink to this token
--rh-space-xl
Full CSS Variable Permalink to this token
© 2021-2025 Red Hat, Inc. Deploys by Netlify