Skip to main content Red Hat Design System logo Contribute on Github

Audio player

Overview Style Features Guidelines Code Demos Accessibility

Installation

Red Hat CDN

CDN Prerelease

We are currently working on our CDN, which will be soon moving into beta. This will be the preferred method of installation in the near future. If you are a Red Hat associate and have questions or comments about the CDN or installation process please join us in our Red Hat Design System Google chat.

In the meantime, install this component using npm

The recommended way to load RHDS is via the Red Hat Digital Experience CDN, and using an import map.

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.

<script type="importmap">
{
"imports": {
"@rhds/elements/": "https://www.redhatstatic.com/dx/v1-alpha/@rhds/elements@1.1.0/elements/",
"@patternfly/elements/": "https://www.redhatstatic.com/dx/v1-alpha/@patternfly/elements@2.2.2/"
}
}
</script>

Once the import map is established, you can load the element with the following module, containing a bare module specifier:

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

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

Lightdom CSS

Lightdom CSS is required for this element to ensure a reduced Cumulative Layout Shift (CLS) experience before the element has fully initialized.

<link rel="stylesheet" href="https://www.redhatstatic.com/dx/v1-alpha/@rhds/elements@1.1.0/rh-audio-player/rh-audio-player-lightdom.css">
NPM

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

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:

Lightdom CSS

Lightdom CSS is required for this element to ensure a reduced Cumulative Layout Shift (CLS) experience before the element has fully initialized.

<link rel="stylesheet" href="/path/to/@rhds/elements/elements/rh-audio-player/rh-audio-player-lightdom.css">

Replace /path/to in the href attribute with the installation path to the rh-audio-player directory in your project.

JSPM

Public CDNs

JSPM 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 CDN, or update any existing import map.

<script type="importmap">
{
"imports": {
"@rhds/elements/": "https://jspm.dev/@rhds/elements/",
"@patternfly/elements/": "https://jspm.dev/@patternfly/elements/"
}
}
</script>

Once the import map is established, you can load the element with the following module, containing a bare module specifier:

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

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

Lightdom CSS

Lightdom CSS is required for this element to ensure a reduced Cumulative Layout Shift (CLS) experience before the element has fully initialized.

<link rel="stylesheet" href="https://jspm.dev/@rhds/elements@1.1.0/elements/rh-audio-player/rh-audio-player-lightdom.css">

Usage

rh-audio-player

Slots 6
Slot Name Description
series

optional, name of podcast series

title

optional, title of episode

media

html audio element

about

optional rh-audio-player-about panel with attribution

subscribe

optional rh-audio-player-subscribe panel with links to subscribe

transcript

optional rh-transcript panel with rh-cue elements

Attributes 9
DOM Property Description Type Default
mediaseries

Audio's series name, e.g. Podcast series.

string | undefined
unknown
mediatitle

Audio's title, e.g. Podcast episode title.

string | undefined
unknown
layout

Layout:

  • mini (default): minimal controls: play/pause, range; volume and other controls hidden behind menu
  • compact: artwork and more controls: time, skip, volume
  • compact-wide: like compact but full width
  • full: maximal controls and artwork
'mini' | 'compact' | 'compact-wide' | 'full' | undefined
unknown
poster

URL to audio's artwork

string | undefined
unknown
volume

Playback volume

number
0.5
playbackRate

Playback rate

number
1
expanded
boolean
false
lang
string
unknown
colorPalette

Element's color palette

ColorPalette | undefined
unknown
Methods 10
Method Name Description
mute()

Mutes media volume

unmute()

Unmutes media volume

incrementPlaybackrate()

Increases media playback rate by playback rate step value

decrementPlaybackrate()

Decreases media playback rate by playback rate step value

pause()

Pauses playback

play()

Starts or resumes playback

seek(seconds: number)

Seeks media to a given point in seconds

seekFromCurrentTime(seconds: unknown)

Seeks media a given number of secons from current elapsed time

rewind(by: unknown)

Rewinds media by 15 seconds (default)

forward(by: unknown)

Advances media by 15 seconds (default)

Events 0

None

CSS Shadow Parts 5
Part Name Description
panel

expandable panel

toolbar

main controls

about

about the episode panel

subscribe

subscribe panel

transcript

transcript panel

CSS Custom Properties 10
CSS Property Description Default
--rh-audio-player-background-color

color of player background -

var(--rh-color-surface-lightest, #ffffff)
--rh-audio-player-icon-background-color var(--rh-audio-player-background-color)
--rh-audio-player-border-color

color of player border -

var(--rh-color-border-subtle-on-light, #d2d2d2)
--rh-audio-player-secondary-text-color

player secondary text color -

var(--rh-color-text-secondary-on-light, #6a6e73)
--rh-audio-player-secondary-opacity

player secondary opacity used for partially faded elements -

0.75
--rh-audio-player-range-thumb-color

color of time and volume range slider thumb -

var(--rh-color-accent-brand-on-light, #ee0000)
--rh-tooltip-content-padding-block-start

padding top on tooltips -

var(--rh-space-md, 8px)
--rh-tooltip-content-padding-block-end

padding bottom on tooltips -

var(--rh-space-md, 8px)
--rh-tooltip-content-padding-inline-start

padding left on tooltips -

var(--rh-space-md, 8px)
--rh-tooltip-content-padding-inline-end

padding right on tooltips -

var(--rh-space-md, 8px)
Design Tokens 0

None

rh-audio-player-about

Audio Player About Panel

Slots 3
Slot Name Description
heading

custom heading for panel

panel content

profile

<rh-avatar> for attribution

Attributes 3
DOM Property Description Type Default
label

Default label content

string | undefined
unknown
mediaseries

Series this track belongs to, if applicable

string | undefined
unknown
mediatitle

Title of audio track

string | undefined
unknown
Methods 1
Method Name Description
scrollText()
Events 0

None

CSS Shadow Parts 3
Part Name Description
heading

panel heading

body

panel body

profile

panel profile / avatar

CSS Custom Properties 0

None

Design Tokens 0

None

rh-audio-player-subscribe

Audio Player Subscribe Panel

Slots 3
Slot Name Description
heading

custom heading for panel

panel content

link

link to subscribe to podcast

Attributes 2
DOM Property Description Type Default
heading
string | undefined
unknown
label
string | undefined
unknown
Methods 1
Method Name Description
scrollText()
Events 0

None

CSS Shadow Parts 3
Part Name Description
heading

scrolling text overflow

body

body content slot

links

subscribe links

CSS Custom Properties 0

None

Design Tokens 0

None

rh-transcript

Audio Player Transcript Panel

Slots 2
Slot Name Description
heading

custom heading for panel

rh-cue elements

Attributes 3
DOM Property Description Type Default
heading
string | undefined
unknown
label
string | undefined
unknown
lang
string
unknown
Methods 3
Method Name Description
setActiveCues(currentTime: unknown)
setDuration(mediaDuration: number)
scrollText()
Events 1
Event Name Description
transcriptdownload
CSS Shadow Parts 2
Part Name Description
heading

scrolling text overflow

toolbar

toolbar area above cues list

CSS Custom Properties 0

None

Design Tokens 0

None

© 2021-2024 Red Hat, Inc. Deploys by Netlify