Skip to main content Home About the Design SystemRoadmap OverviewDesignersDevelopers OverviewColorGridIconographyInteractionsSpacingTypography Overview Global colorBox shadowTypographyBorderOpacitySpaceLengthIconBreakpointsMedia queries 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 Menu dropdown Navigation link Navigation (primary) Navigation (secondary) Navigation (vertical) Pagination PopoverPlanned Progress stepper Scheme toggle Site status Skeleton Skip link Spinner Statistic Subnavigation Surface Switch Table Tabs Tag Tile Timestamp Tooltip Video embed OverviewColor PalettesCustomizingDevelopers All PatternsAccordionCall to ActionCardFilterFormLink with iconLogo wallSearch barSticky bannerSticky cardTabsTagTile All Personalization PatternsAnnouncement FundamentalsAccessibility toolsAssistive technologiesCI/CDContentContributorsDesignDevelopmentManual testingResourcesScreen readers Design/code status Release notes Get support

Video embed

OverviewStyleGuidelinesCodeAccessibilityDemos
ImportingUsagerh-video-embedImportingUsagerh-video-embed

Importing

Add rh-video-embed to your page with this import statement:

<script type="module">
  import '@rhds/elements/rh-video-embed/rh-video-embed.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-video-embed>
  <img slot="thumbnail" src="video-thumb.jpg" alt="Image description"/>
  <template>
    <iframe title="Title of video" width="900" height="499" src="https://www.youtube.com/embed/Hc8emNr2igU" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
  </template>
  <p slot="caption"><a class="rh-video-embed-caption-link" href="https://www.redhat.com/">View the infographic</a></p>
</rh-video-embed>

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

rh-video-embed

A Video embed is a graphical preview of a video overlayed with a play button. When clicked, the embedded YouTube video will begin playing.

Slots 7

Slot Name Summary Description
thumbnail

Optional thumbnail image on top of video embed; should include alt text

[default]

Place video embed code here; iframe should include a title attribute with the video title
Note: [default] unnamed slots do not have a slot="name" attribute.

autoplay

DO NOT USE! (Used by rh-video-embed.)

consent-message

Text explaining opt-in to cookies is required, e.g. <p>View this video by opting in to “Advertising Cookies.”</p>

consent-button-text

Text for CTA button to update preferences, e.g. "Update preferences"

play-button-text

Text for play button; recommended value "Video title (video)"

caption

Optional caption below video embed

Attributes 2

Attribute DOM Property Description Type Default
require-consent requireConsent

Add to rh-video-embed when a video requires consent for cookies

boolean
false
consented consented

Boolean flag to flip with JavaScript when cookie consent has been granted or revoked. See the Require Consent demo for reference.

boolean
false

Methods 1

Method Name Description
firstUpdated()

Events 3

Event Name Description
consent-click

"Update preferences" consent button is clicked

request-play

Play button is clicked

play

Video is about to be played

CSS Shadow Parts 5

Part Name Summary Description
figure

The outer container for rh-video-embed

video

The container for the video, thumbnail, and play button

consent-body

The container for the consent message and consent button

play

The play button on top of the thumbnail

caption

The container for the caption

CSS Custom Properties 0

None

Design Tokens 20

Token Description Copy
--rh-color-border-interactive
Full CSS Variable Permalink to this token
--rh-opacity-20

20% opacity

Full CSS Variable Permalink to this token
--rh-opacity-80

80% opacity

Full CSS Variable Permalink to this token
--rh-opacity-50

50% opacity

Full CSS Variable Permalink to this token
--rh-color-text-secondary
Full CSS Variable Permalink to this token
--rh-font-size-body-text-sm

14px font size

Full CSS Variable Permalink to this token
--rh-line-height-body-text

Line height for body text

Full CSS Variable Permalink to this token
--rh-font-family-heading

Heading font family

Full CSS Variable Permalink to this token
--rh-font-size-heading-xs

h6 heading font size

Full CSS Variable Permalink to this token
--rh-line-height-heading

Line height for headings

Full CSS Variable Permalink to this token
--rh-space-lg

16px spacer

Full CSS Variable Permalink to this token
--rh-space-xl

24px spacer

Full CSS Variable Permalink to this token
--rh-font-size-heading-sm

h5 heading font size

Full CSS Variable Permalink to this token
--rh-border-radius-default

3px border radius; Example: Card

Full CSS Variable Permalink to this token
--rh-border-width-lg

3px border width: Example: Expanded Accordion panel

Full CSS Variable Permalink to this token
--rh-border-width-md

2px border width: Example: Alert

Full CSS Variable Permalink to this token
--rh-color-surface-darkest

Primary surface (dark theme)

Full CSS Variable Permalink to this token
--rh-length-2xl

32px length token

Full CSS Variable Permalink to this token
--rh-length-4xl

64px length token

Full CSS Variable Permalink to this token
--rh-color-surface
Full CSS Variable Permalink to this token
© 2026 Red Hat Deploys by Netlify