Typescript
VideoPlayerStyle {
backgroundColor: string;
headingText: BlazeVideosPlayerHeadingTextStyle;
buttons: BlazeVideosPlayerButtonsStyle;
icons: BlazeVideoIconsStyle;
cta: BlazeVideosPlayerCtaStyle;
seekBar: BlazeVideosPlayerSeekBarStyle;
captions: BlazeVideosPlayerCaptionsStyle;
}
Default color is #000000, type of string.
BlazeVideosPlayerHeadingTextStyle, which includes different text styles for mobile, tablet, and desktop. Here’s how you can format it in a table:
Typescript
BlazeVideosPlayerHeadingTextStyle = {
textStyle: BlazeTextStyle;
contentSource: 'TITLE';
isVisible: boolean;
font: string;
textColor: string;
};
BlazeTextStyle = {
mobile: BlazeTextDeviceStyle;
tablet: BlazeTextDeviceStyle;
desktop: BlazeTextDeviceStyle;
};
BlazeTextDeviceStyle = {
fontSize: string;
fontWeight: FontWeightType;
lineHeight?: string;
letterSpacing?: string;
textTransform?: TextTransformType;
};
FontWeightType = 'normal' | 'bold' | 'bolder' | 'lighter' | 'inherit' | 'initial' | 'unset' | '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900';
TextTransformType = 'capitalize' | 'uppercase' | 'lowercase' | 'none';
Property Mobile Tablet Desktop Font Size 16px17px18pxFont Weight 600600600Line Height 1.51.51.5Letter Spacing undefinedundefinedundefinedText Transform nonenonenoneFont Presets.playerFontPresets.playerFontPresets.playerFontText Color #F0F0F0#F0F0F0#F0F0F0Content Source TITLETITLETITLEIs Visible truetruetrue
Example Usage:
TypeScript
const headingTextConfig = {
textStyle: {
mobile: { fontSize: '16px', fontWeight: '600', textColor: '#F0F0F0' },
tablet: { fontSize: '17px', fontWeight: '600', textColor: '#F0F0F0' },
desktop: { fontSize: '18px', fontWeight: '600', textColor: '#F0F0F0' }
},
};
myTheme.playerLayout.headingText = headingTextConfig;
Typescript
BlazeVideosPlayerButtonsStyle = {
mute_unmute: BlazeButtonStyle;
exit: BlazeButtonStyle;
share: BlazeButtonStyle;
like_unlike: BlazeButtonStyle;
closed_captions: BlazeButtonStyle;
play_pause: BlazeButtonStyle;
prev_next: BlazeButtonStyle;
fullscreen: BlazeButtonStyle;
};
BlazeButtonStyle = {
mobile: BlazeButtonDeviceStyle;
tablet: BlazeButtonDeviceStyle;
desktop: BlazeButtonDeviceStyle;
};
BlazeButtonDeviceStyle = {
width: string;
height: string;
color: string;
padding: string;
isVisible: boolean;
borderRadius: string;
backgroundColor: string;
};
Button Name Device Width Height Color Padding Visible Border Radius Background Color Embedded Visible Mute/Unmute Mobile 24px24px#fff7px✅ 4pxtransparentN/A Tablet 26px26px#fff7px✅ 4pxtransparentN/A Desktop 28px28px#fff7px✅ 4pxtransparentN/A Exit Mobile 24px24px#fff7px✅ 4pxtransparentN/A Tablet 26px26px#fff7px✅ 4pxtransparentN/A Desktop 28px28px#fff7px❌ 4pxtransparentN/A Share Mobile 24px24px#fff7px✅ 4pxtransparentN/A Tablet 26px26px#fff7px✅ 4pxtransparentN/A Desktop 28px28px#fff7px✅ 4pxtransparentN/A Like/Unlike Mobile 24px24px#ffd3257px✅ 4pxtransparentN/A Tablet 26px26px#ffd3257px✅ 4pxtransparentN/A Desktop 28px28px#ffd3257px✅ 4pxtransparentN/A Play/Pause Mobile 38px38px#fff12px✅ 50%rgba(0, 0, 0, 0.5)N/A Tablet 42px42px#fff12px✅ 50%rgba(0, 0, 0, 0.5)N/A Desktop 28px28px#fff7px✅ 4pxtransparentN/A Prev/Next Mobile 36px36px#fff10px✅ 50%rgba(0, 0, 0, 0.5)N/A Tablet 40px40px#fff10px✅ 50%rgba(0, 0, 0, 0.5)N/A Desktop 28px28px#fff7px✅ 4pxtransparentN/A Closed Captions Mobile 24px24px#fff7px✅ 4pxtransparent✅ Tablet 26px26px#fff7px✅ 4pxtransparent✅ Desktop 28px28px#fff7px✅ 4pxtransparent✅ Fullscreen Mobile 24px24px#fff7px✅ 4pxtransparentN/A Tablet 26px26px#fff7px✅ 4pxtransparentN/A Desktop 28px28px#fff7px✅ 4pxtransparentN/A
Example Usage:
TypeScript
const buttonConfig = {
buttonStyle: {
mobile: { padding: '10px 20px', fontSize: '14px', backgroundColor: '#FF5733', color: '#FFFFFF' },
tablet: { padding: '12px 24px', fontSize: '16px', backgroundColor: '#FF5733', color: '#FFFFFF' },
desktop: { padding: '14px 28px', fontSize: '18px', backgroundColor: '#FF5733', color: '#FFFFFF' }
},
};
myTheme.playerLayout.buttons.share = buttonConfig;
BlazeVideosPlayerCtaStyle {
borderRadius: string;
text: BlazeTextStyle;
fontFamily?: string;
height: string;
icon: BlazeVideosPlayerCtaIconStyle;
visibility: BlazeVideoPlayerVisibility;
borderColor: string;
horizontalAlignment: ButtonPositionType;
isVisible: boolean;
}
BlazeTextStyle = {
mobile: BlazeTextDeviceStyle;
tablet: BlazeTextDeviceStyle;
desktop: BlazeTextDeviceStyle;
};
BlazeTextDeviceStyle = {
fontSize: string;
fontWeight: FontWeightType;
lineHeight?: string;
letterSpacing?: string;
textTransform?: TextTransformType;
};
FontWeightType = 'normal' | 'bold' | 'bolder' | 'lighter' | 'inherit' | 'initial' | 'unset' | '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900';
TextTransformType = 'capitalize' | 'uppercase' | 'lowercase' | 'none';
BlazeVideoPlayerVisibility = {
duration: number; // The duration in seconds for which the CTA will be visible after the overlay is hidden.
behavior: CtaVisibilityBehavior; // The behavior of the CTA.
};
CtaVisibilityBehavior = 'AlwaysVisible' | 'VisibleAfterOverlayHidden';
ButtonPositionType = 'LEFT' | 'CENTER' | 'RIGHT';
Property Description Default Value borderRadiusThe corner radius of the CTA. '20px'textThe text style for different devices. See text style table below. fontFamilyThe font family for the CTA text. Presets.playerFontheightThe height of the CTA. '40px'iconThe icon style inside the CTA. See icon style table below. visibilityThe visibility behavior of the CTA. See visibility table below. borderColorThe border color of the CTA. '' (empty string)horizontalAlignmentThe horizontal alignment of the CTA. 'LEFT'isVisibleThe visibility of the CTA. true
Device Font Size Font Weight Line Height Letter Spacing mobile'16px''700''17px''' (empty)tablet'16px''700''17px''' (empty)desktop'16px''700''17px''' (empty)
Property Description Default Value positionThe position of the icon inside the CTA. 'START'colorThe color of the icon. '' (empty)sizeThe size of the icon. '24px'isVisibleWhether the icon is visible. trueurlThe URL of the icon image. linkIconSvg
Property Description Default Value durationDuration the CTA is visible after the overlay is hidden. 5000 (milliseconds)behaviorThe behavior of the CTA visibility. 'VisibleAfterOverlayHidden'
TS
BlazeVideoIconsStyle {
play: string;
pause: string;
mute: string;
unmute: string;
share: string;
exit: string;
like: string;
unlike: string;
fullscreenEnter: string;
fullscreenExit: string;
closedCaptionsOn: string;
closedCaptionsOff: string;
navigation: {
prevVideo: string;
nextVideo: string;
};
}
Icon Name SVG Variable Mute muteIconSvgUnmute unmuteIconSvgExit closeIconSvgShare shareIconSvgLike likeIconSvgUnlike unlikeIconSvgSettings settingsIconSvgPlay playIconSvgPause pauseIconSvgFullscreen Enter fullscreenEnterIconSvgFullscreen Exit fullscreenExitIconSvgClosed Captions On closedCaptionsOnIconSvgClosed Captions Off closedCaptionsOffIconSvgPrev Video prevStoryIconSvgNext Video nextStoryIconSvg
Example Usage:
TypeScript
BlazeVideosPlayerIconsStyle = {
mute: `data:image/svg+xml;base64,${string}`;
unmute: `data:image/svg+xml;base64,${string}`;
exit: `data:image/svg+xml;base64,${string}`;
share: `data:image/svg+xml;base64,${string}`;
like: `data:image/svg+xml;base64,${string}`;
unlike: `data:image/svg+xml;base64,${string}`;
setting: `data:image/svg+xml;base64,${string}`;
play: `data:image/svg+xml;base64,${string}`;
pause: `data:image/svg+xml;base64,${string}`;
fullscreenEnter: `data:image/svg+xml;base64,${string}`;
fullscreenExit: `data:image/svg+xml;base64,${string}`;
closedCaptionsOn: `data:image/svg+xml;base64,${string}`;
closedCaptionsOff: `data:image/svg+xml;base64,${string}`;
navigation: {
prevVideo: `data:image/svg+xml;base64,${string}`;
nextVideo: `data:image/svg+xml;base64,${string}`;
};
};
Button Name Device Width Height Padding Visibility Border Radius Background Color Mute/Unmute Mobile 24px 24px 7px ✅ — — Tablet 26px 26px 7px ✅ — — Desktop 28px 28px 7px ✅ — — Exit Mobile 24px 24px 7px ✅ — — Tablet 26px 26px 7px ✅ — — Desktop 28px 28px 7px ❌ — — Share Mobile 24px 24px 7px ✅ — — Tablet 26px 26px 7px ✅ — — Desktop 28px 28px 7px ✅ — — Like/Unlike Mobile 24px 24px 7px ✅ — — Tablet 26px 26px 7px ✅ — — Desktop 28px 28px 7px ✅ — — Play/Pause Mobile 38px 38px 12px ✅ 50% rgba(51,51,51,0.9) Tablet 42px 42px 12px ✅ 50% rgba(51,51,51,0.9) Desktop 28px 28px 7px ✅ — — Prev/Next Mobile 36px 36px 10px ✅ 50% rgba(51,51,51,0.9) Tablet 40px 40px 10px ✅ 50% rgba(51,51,51,0.9) Desktop 28px 28px 7px ✅ 0 — Closed Captions Mobile 24px 24px 7px ✅ — — Tablet 26px 26px 7px ✅ — — Desktop 28px 28px 7px ✅ — — Fullscreen Mobile 24px 24px 7px ✅ — — Tablet 26px 26px 7px ✅ — — Desktop 28px 28px 7px ✅ — —
Example Usage:
TypeScript
const iconStyles = {
muteUnmute: {
mobile: { isVisible: true, width: '22px', height: '22px', padding: '10px' },
tablet: { isVisible: true, width: '22px', height: '22px', padding: '10px' },
desktop: { isVisible: true, width: '25px', height: '25px', padding: '10px' }
}
};
BlazeVideosPlayerSeekBarStyle {
isVisible: boolean;
verticalMargin: string;
horizontalMargin: string;
playingState: BlazeSeekBarStyle;
pausedState: BlazeSeekBarStyle;
}
BlazeSeekBarStyle = {
isVisible: boolean;
isThumbVisible: boolean;
backgroundColor: string;
progressColor: string;
bufferProgressColor?: string;
height: string;
borderRadius: string;
thumbColor: string;
thumbSize: string;
};
Property Value isVisible trueverticalSpacing '20px'horizontalSpacing '15px'
Property Value isVisible trueisThumbVisible falsebackgroundColor Colors.GrayprogressColor Colors.Whiteheight '3px'borderRadius '5px'thumbColor '' (empty)thumbSize '0px'
Property Value isVisible trueisThumbVisible truebackgroundColor Colors.GrayprogressColor Colors.Whiteheight '5px'borderRadius '5px'thumbColor Colors.WhitethumbSize '15px'
Example Usage:
TypeScript
const seekBar = {
isVisible: true,
bottomSpacing: '20px',
playingState: {
isVisible: true,
backgroundColor: '#808080',
progressColor: '#FFFFFF',
height: '3px',
isThumbVisible: false
}
};
Use this to customize the appearance and placement of closed captions in the inline video player.
TypeScript
BlazeVideosPlayerCaptionsStyle {
font?: string;
fontSize?: string;
fontWeight?: FontWeightType;
positioning?: {
horizontal?: 'start' | 'center';
vertical?: 'top' | 'center' | 'bottom';
};
}
Property Type Supported values fontstringAny valid font family fontSizestringAny valid CSS font size fontWeightFontWeightTypeStandard font weight values positioning.horizontalstringstart, centerpositioning.verticalstringtop, center, bottom
Property Description Default Value fontThe font family for the captions text. '"Inter", sans-serif'fontWeightThe font weight for the captions text. '700'positioning.horizontalThe horizontal alignment of the captions. 'start'positioning.verticalThe vertical alignment of the captions. 'top'
Example Usage:
TypeScript
myTheme.playerStyle.captions = {
font: "'Roboto', sans-serif",
fontSize: '16px',
fontWeight: '700',
positioning: {
horizontal: 'center',
vertical: 'bottom'
}
};
The status indicator appears in the video player header showing the current stream state: LIVE , UPCOMING , or ENDED .
TypeScript
BlazeVideosPlayerStatusIndicatorStyle {
isVisible: boolean;
padding: string;
position: BlazeVideosPlayerStatusIndicatorPositionStyle;
containerStyle?: BlazeVideosPlayerStatusIndicatorContainerStyle;
streamStates: {
upcoming: IndicatorStyle;
live: IndicatorStyle;
ended: IndicatorStyle;
};
upcomingDateStyle: IndicatorStyle;
}
BlazeVideosPlayerStatusIndicatorPositionStyle {
top: string;
left: string;
right: string;
}
BlazeVideosPlayerStatusIndicatorContainerStyle {
gap?: string;
alignItems?: string;
display?: string;
}
IndicatorStyle {
backgroundColor: string;
textColor: string;
text: string;
textSize: string;
font: string;
fontWeight?: FontWeightType;
borderRadius: string;
borderWidth: number;
borderColor: string;
padding: string;
letterSpacing: string;
isVisible: boolean;
icon?: {
url: string; // Base64-encoded SVG: data:image/svg+xml;base64,${string}
color?: string;
size?: string;
};
}
JavaScript
// Enable/disable status indicator
myVideoTheme.playerStyle.statusIndicator.isVisible = true;
// Position in player (top-left corner by default)
myVideoTheme.playerStyle.statusIndicator.position.top = '16px';
myVideoTheme.playerStyle.statusIndicator.position.left = '16px';
myVideoTheme.playerStyle.statusIndicator.position.right = 'auto';
// Padding around the indicator
myVideoTheme.playerStyle.statusIndicator.padding = '8px';
JavaScript
myVideoTheme.playerStyle.statusIndicator.streamStates.live.backgroundColor = '#FF0000';
myVideoTheme.playerStyle.statusIndicator.streamStates.live.textColor = '#FFFFFF';
myVideoTheme.playerStyle.statusIndicator.streamStates.live.text = 'LIVE';
myVideoTheme.playerStyle.statusIndicator.streamStates.live.textSize = '12px';
myVideoTheme.playerStyle.statusIndicator.streamStates.live.font = "'Roboto', sans-serif";
myVideoTheme.playerStyle.statusIndicator.streamStates.live.fontWeight = 'bold';
myVideoTheme.playerStyle.statusIndicator.streamStates.live.borderRadius = '4px';
myVideoTheme.playerStyle.statusIndicator.streamStates.live.borderWidth = 0;
myVideoTheme.playerStyle.statusIndicator.streamStates.live.borderColor = '#FFFFFF';
myVideoTheme.playerStyle.statusIndicator.streamStates.live.padding = '4px 12px';
myVideoTheme.playerStyle.statusIndicator.streamStates.live.letterSpacing = '0.5px';
myVideoTheme.playerStyle.statusIndicator.streamStates.live.isVisible = true;
// Optional: Add custom icon
myVideoTheme.playerStyle.statusIndicator.streamStates.live.icon = {
url: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiLz4=',
color: '#FFFFFF',
size: '12px'
};
JavaScript
myVideoTheme.playerStyle.statusIndicator.streamStates.upcoming.backgroundColor = '#9C9C9C';
myVideoTheme.playerStyle.statusIndicator.streamStates.upcoming.textColor = '#FFFFFF';
myVideoTheme.playerStyle.statusIndicator.streamStates.upcoming.text = 'UPCOMING';
myVideoTheme.playerStyle.statusIndicator.streamStates.upcoming.textSize = '12px';
myVideoTheme.playerStyle.statusIndicator.streamStates.upcoming.font = "'Roboto', sans-serif";
myVideoTheme.playerStyle.statusIndicator.streamStates.upcoming.borderRadius = '4px';
myVideoTheme.playerStyle.statusIndicator.streamStates.upcoming.padding = '4px 12px';
myVideoTheme.playerStyle.statusIndicator.streamStates.upcoming.letterSpacing = '0.5px';
myVideoTheme.playerStyle.statusIndicator.streamStates.upcoming.isVisible = true;
// Optional: Add custom icon (base64-encoded SVG)
myVideoTheme.playerStyle.statusIndicator.streamStates.upcoming.icon = {
url: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiLz4=',
color: '#FFFFFF',
size: '12px'
};
JavaScript
myVideoTheme.playerStyle.statusIndicator.streamStates.ended.backgroundColor = '#666666';
myVideoTheme.playerStyle.statusIndicator.streamStates.ended.textColor = '#FFFFFF';
myVideoTheme.playerStyle.statusIndicator.streamStates.ended.text = 'ENDED';
myVideoTheme.playerStyle.statusIndicator.streamStates.ended.textSize = '12px';
myVideoTheme.playerStyle.statusIndicator.streamStates.ended.font = "'Roboto', sans-serif";
myVideoTheme.playerStyle.statusIndicator.streamStates.ended.borderRadius = '4px';
myVideoTheme.playerStyle.statusIndicator.streamStates.ended.padding = '4px 12px';
myVideoTheme.playerStyle.statusIndicator.streamStates.ended.letterSpacing = '0.5px';
myVideoTheme.playerStyle.statusIndicator.streamStates.ended.isVisible = true;
// Optional: Add custom icon (base64-encoded SVG)
myVideoTheme.playerStyle.statusIndicator.streamStates.ended.icon = {
url: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiLz4=',
color: '#FFFFFF',
size: '12px'
};
Shows countdown timer for upcoming streams:
JavaScript
myVideoTheme.playerStyle.statusIndicator.upcomingDateStyle.textColor = '#FFFFFF';
myVideoTheme.playerStyle.statusIndicator.upcomingDateStyle.textSize = '11px';
myVideoTheme.playerStyle.statusIndicator.upcomingDateStyle.font = "'Roboto', sans-serif";
myVideoTheme.playerStyle.statusIndicator.upcomingDateStyle.padding = '2px 0 0 0';
myVideoTheme.playerStyle.statusIndicator.upcomingDateStyle.backgroundColor = 'transparent';
myVideoTheme.playerStyle.statusIndicator.upcomingDateStyle.isVisible = true;
Position the status indicator inline with the video title instead of absolutely positioned:
JavaScript
myVideoTheme.playerStyle.statusIndicator.containerStyle = {
display: 'flex',
gap: '12px',
alignItems: 'center'
};
The back-to-live button appears during live streams, allowing viewers to return to the live edge when they've scrubbed backward into DVR (Digital Video Recording) content.
TypeScript
BlazeVideosPlayerBackToLiveButtonStyle {
margins: string;
padding: string;
playbackStates: {
atLiveEdgeState: BlazeVideosPlayerBackToLiveButtonStateStyle;
behindLiveState: BlazeVideosPlayerBackToLiveButtonStateStyle;
};
}
BlazeVideosPlayerBackToLiveButtonStateStyle {
text: string;
textColor: string;
textSize: string;
font: string;
backgroundColor: string;
borderRadius: string;
icon?: {
url: string; // Base64-encoded SVG: data:image/svg+xml;base64,${string}
color?: string;
};
}
At Live Edge : Shows "LIVE" indicator (passive, non-clickable)
Behind Live : Shows "Back to Live" button (clickable, returns to live edge)
Example Usage:
TypeScript
// Margins and padding apply to both states
myTheme.playerStyle.backToLiveButton.margins = '0 16px 16px 0';
myTheme.playerStyle.backToLiveButton.padding = '8px 16px';
// Customize "At Live Edge" state (passive indicator)
myTheme.playerStyle.backToLiveButton.playbackStates.atLiveEdgeState.text = 'LIVE';
myTheme.playerStyle.backToLiveButton.playbackStates.atLiveEdgeState.textColor = '#FFFFFF';
myTheme.playerStyle.backToLiveButton.playbackStates.atLiveEdgeState.textSize = '13px';
myTheme.playerStyle.backToLiveButton.playbackStates.atLiveEdgeState.font = "'Roboto', sans-serif";
myTheme.playerStyle.backToLiveButton.playbackStates.atLiveEdgeState.backgroundColor = 'rgba(255, 0, 0, 0.9)';
myTheme.playerStyle.backToLiveButton.playbackStates.atLiveEdgeState.borderRadius = '20px';
// Customize "Behind Live" state (clickable button)
myTheme.playerStyle.backToLiveButton.playbackStates.behindLiveState.text = 'Back to Live';
myTheme.playerStyle.backToLiveButton.playbackStates.behindLiveState.textColor = '#FFFFFF';
myTheme.playerStyle.backToLiveButton.playbackStates.behindLiveState.textSize = '13px';
myTheme.playerStyle.backToLiveButton.playbackStates.behindLiveState.backgroundColor = 'rgba(0, 0, 0, 0.7)';
myTheme.playerStyle.backToLiveButton.playbackStates.behindLiveState.borderRadius = '20px';
Button Behavior:
Automatically appears in bottom-right corner during live playback
Shows "LIVE" indicator when viewer is at the live edge
Changes to "Back to Live" button when viewer scrubs backward
Clicking returns viewer to live edge with smooth transition
Hidden for VOD content and ended streams without DVR
The seek bar works the same as documented above in the Seek Bar Configuration section, but has special behavior for live streams:
Progress bar fills from left (oldest DVR content) to right (live edge)
Thumb appears when scrubbing backward from live edge
Thumb automatically hidden when at live edge
DVR window length determined by backend configuration
User can scrub backward to review recent moments
Example Usage:
TypeScript
// Customize seek bar for live streams (use red color)
myTheme.playerStyle.seekBar.playingState.progressColor = '#FF0000';
myTheme.playerStyle.seekBar.playingState.thumbColor = '#FF0000';
myTheme.playerStyle.seekBar.pausedState.progressColor = '#FF0000';
myTheme.playerStyle.seekBar.pausedState.thumbColor = '#FFFFFF';
Property Value isVisible truepadding '8px'position.top '16px'position.left '16px'position.right 'auto'
Property Value backgroundColor '#FF0000'textColor '#FFFFFF'text 'LIVE'textSize '12px'borderRadius '4px'padding '4px 12px'isVisible true
Property Value backgroundColor '#9C9C9C'textColor '#FFFFFF'text 'UPCOMING'textSize '12px'borderRadius '4px'padding '4px 12px'isVisible true
Property Value backgroundColor '#666666'textColor '#FFFFFF'text 'ENDED'textSize '12px'borderRadius '4px'padding '4px 12px'isVisible true
Property Value margins '0 16px 16px 0'padding '8px 16px'
Property Value text 'LIVE'textColor '#FFFFFF'textSize '13px'backgroundColor 'rgba(255, 0, 0, 0.9)'borderRadius '20px'
Property Value text 'Back to Live'textColor '#FFFFFF'textSize '13px'backgroundColor 'rgba(0, 0, 0, 0.7)'borderRadius '20px'