Back to Component Library Return to the main component library index
Buttons & Actions
Interactive download button with lazy loading for performance optimization.
Import:
import { DownloadButton } from "/snippets/components/primitives/buttons.jsx" ;
Props:
Prop Type Default Required Description labelstring"Download"No Button text label iconstring"download"No Left icon name downloadLinkstring- Yes URL of the file to download rightIconstring""No Optional right icon name borderbooleanfalseNo Whether to show a border around the button
Examples:
Basic
Custom Label
With Icons
Code
< DownloadButton downloadLink = "https://example.com/file.pdf" />
< DownloadButton
label = "Download PDF"
downloadLink = "https://example.com/file.pdf"
icon = "file-pdf"
rightIcon = "arrow-right"
border = { true }
/>
BasicBtn
Placeholder component for basic button functionality. Currently returns empty div.
Import:
import { BasicBtn } from "/snippets/components/primitives/buttons.jsx" ;
Props: None
Note: This is a placeholder component and currently non-functional.
Icons & Branding
Icons & Branding
LivepeerIcon
Theme-aware Livepeer logo icon that automatically adapts to light/dark mode.
Import:
import { LivepeerIcon } from "/snippets/components/primitives/icons.jsx" ;
Props:
Prop Type Default Required Description sizenumber16No Icon size in pixels colorstringtheme-aware No Custom color override (defaults to theme-aware color)
Examples:
Default
Custom Color
Code
LivepeerIconFlipped
Horizontally flipped Livepeer icon. Useful for decorative purposes or directional indicators.
Import:
import { LivepeerIconFlipped } from "/snippets/components/primitives/icons.jsx" ;
Props: Same as LivepeerIcon (accepts all Icon component props)
Examples:
Normal
Flipped< LivepeerIconFlipped size = { 24 } />
LivepeerSVG
Inline SVG version of the Livepeer logo. Uses em units for responsive sizing.
Import:
import { LivepeerSVG } from "/snippets/components/primitives/icons.jsx" ;
Props:
Prop Type Default Required Description sizenumber24No Size parameter (currently unused, uses 1em) ...propsobject- No Additional SVG props
Examples:
< LivepeerSVG size = { 32 } />
LivepeerIconOld
Legacy Livepeer icon component using the light symbol SVG file.
Import:
import { LivepeerIconOld } from "/snippets/components/primitives/icons.jsx" ;
Props: Accepts all Icon component props
Note: This is the older version. Prefer LivepeerIcon for new code.
Links & Navigation
Links & Navigation
GotoLink
Simple navigation link with icon for internal documentation pages.
Import:
import { GotoLink } from "/snippets/components/primitives/links.jsx" ;
Props:
Prop Type Default Required Description labelstring- Yes Link text/label relativePathstring- Yes Relative URL path textstring""No Optional text to display before the link iconstring"arrow-turn-down-right"No Icon to display
Examples:
Basic
With Text
Custom Icon
Code
< GotoLink label = "Getting Started" relativePath = "/get-started" />
< GotoLink label = "API Reference" relativePath = "/api" text = "See the" icon = "book" />
GotoCard
Card component for navigation with link, icon, and optional CTA.
Import:
import { GotoCard } from "/snippets/components/primitives/links.jsx" ;
Props:
Prop Type Default Required Description labelstring- Yes Card title relativePathstring- Yes Relative URL path iconstring"arrow-turn-down-right"No Icon to display textReactNode- Yes Card content ctastring""No Call-to-action button text ...propsobject- No Additional Card component props
Examples:
< GotoCard
label = "API Reference"
relativePath = "/api/reference"
text = "Complete API documentation"
cta = "View Docs"
/>
CustomCallout
A stylized callout box with customizable icon and colors. Automatically converts hex colors to rgba for proper opacity handling.
Import:
import { CustomCallout } from "/snippets/components/primitives/links.jsx" ;
Props:
Prop Type Default Required Description childrenReactNode- Yes Content to display in the callout iconstring"lightbulb"No Icon name to display colorstringtheme accent No Primary color for icon, border, and background iconSizenumber16No Size of the icon in pixels textSizestring"0.875rem"No Font size for the text content textColorstringmatches color No Text color (defaults to match icon color)
Examples:
Info
Warning
Success
Code
This is an informational message with a blue info icon.
Warning: This action cannot be undone.
Success! Your changes have been saved.
< CustomCallout icon = "info" color = "#3b82f6" >
Important information message
</ CustomCallout >
< CustomCallout icon = "warning" color = "#ef4444" >
Warning message
</ CustomCallout >
TipWithArrow
Callout box with an arrow indicator in the top-right corner. Similar to CustomCallout but includes an arrow icon.
Import:
import { TipWithArrow } from "/snippets/components/primitives/links.jsx" ;
Props:
Prop Type Default Required Description childrenReactNode- Yes Content to display in the tip iconstring"lightbulb"No Main icon to display on the left arrowIconstring"arrow-up-right"No Arrow icon to display in top-right colorstringtheme accent No Primary color for icons, border, and background iconSizenumber16No Size of the main icon in pixels arrowSizenumber16No Size of the arrow icon in pixels
Examples:
Check out the related documentation for more details!
Tip: Use this component to point users to related content.
< TipWithArrow icon = "info" color = "#3b82f6" >
Check out the related documentation!
</ TipWithArrow >
LinkArrow
Link component with arrow icon and optional newline.
Import:
import { LinkArrow } from "/snippets/components/primitives/links.jsx" ;
Props:
Prop Type Default Required Description hrefstring- Yes Link URL labelstring- Yes Link text newlinebooleantrueNo Whether to add a line break before the link borderColorstring- No Optional border color
Examples:
< LinkArrow href = "https://livepeer.org" label = "Visit Livepeer" />
< LinkArrow href = "/docs" label = "Documentation" newline = { false } />
Text & Typography
Text & Typography
Subtitle
Styled subtitle text component with customizable styling.
Import:
import { Subtitle } from "/snippets/components/primitives/text.jsx" ;
Props:
Prop Type Default Required Description textstring- No Subtitle text (alternative to children) childrenReactNode- No Alternative content (alternative to text) styleobject{}No Custom styles object style.fontSizestring"1rem"No Font size style.fontStylestring"italic"No Font style style.colorstring"var(--accent)"No Text color style.marginBottomstring0No Bottom margin
Examples:
This is a subtitle
Custom styled subtitle
< Subtitle text = "This is a subtitle" />
< Subtitle style = { { fontSize: "1.2rem" , color: "#00cc88" } } >
Custom styled subtitle
</ Subtitle >
CopyText
Inline code with copy button. Displays text in a code block with a clickable copy button.
Import:
import { CopyText } from "/snippets/components/primitives/text.jsx" ;
Props:
Prop Type Default Required Description textstring- Yes The text to display and copy labelstring- No Optional label before the text
Examples:
Address: 0x1234567890abcdef< CopyText text = "0x1234567890abcdef" />
< CopyText text = "npm install livepeer" label = "Command:" />
CardTitleTextWithArrow
Card title component with arrow icon integrated into the title.
Import:
import { CardTitleTextWithArrow } from "/snippets/components/primitives/text.jsx" ;
Props:
Prop Type Default Required Description childrenReactNode- Yes Title text content ...cardPropsobject- No Additional Card component props
Examples:
< CardTitleTextWithArrow >
My Card Title
</ CardTitleTextWithArrow >
AccordionTitleWithArrow
Accordion title component with arrow icon and optional link.
Import:
import { AccordionTitleWithArrow } from "/snippets/components/primitives/text.jsx" ;
Props:
Prop Type Default Required Description textstring- Yes Title text hrefstring- Yes Link URL colorstring"var(--text)"No Text color
Examples:
< AccordionTitleWithArrow text = "Learn More" href = "/docs" />
Dividers
Dividers
CustomDivider
Decorative horizontal divider with Livepeer branding icons on both ends. Optionally includes centered text between the divider lines. Icons automatically adapt to light/dark theme.
Import:
import { CustomDivider } from "/snippets/components/primitives/divider.jsx" ;
Props:
Prop Type Default Required Description middleTextstring""No Optional text to display in the center of the divider colorstring"var(--border)"No Color for the middle text styleobject{}No Additional CSS styles style.marginstring"24px 0"No Vertical margin style.fontSizestring"16px"No Font size for middle text
Examples:
Basic
With Text
Custom Color
Code
Section Break
OR
< CustomDivider />
< CustomDivider middleText = "Section Break" />
< CustomDivider middleText = "OR" color = "#2d9a67" />
Layout
Layout Primitives
Layout components for organizing content without inline styles in MDX files.
FlexContainer
Flexbox container component for arranging items in rows or columns.
Import:
import { FlexContainer } from "/snippets/components/primitives/layout.jsx" ;
Props:
Prop Type Default Required Description childrenReactNode- Yes Content to display directionstring"row"No Flex direction: “row” | “column” | “row-reverse” | “column-reverse” gapstring"1rem"No Gap between items (CSS value) alignstring"flex-start"No Align items: “flex-start” | “center” | “flex-end” | “stretch” justifystring"flex-start"No Justify content: “flex-start” | “center” | “flex-end” | “space-between” | “space-around” | “space-evenly” wrapbooleanfalseNo Allow wrapping styleobject{}No Additional inline styles
Examples:
Row Layout
Column Layout
Centered
Code
< FlexContainer gap = "1rem" >
< Card > Item 1 </ Card >
< Card > Item 2 </ Card >
</ FlexContainer >
< FlexContainer direction = "column" gap = "0.5rem" align = "center" >
< Card > Item 1 </ Card >
< Card > Item 2 </ Card >
</ FlexContainer >
GridContainer
CSS Grid container component for grid layouts.
Import:
import { GridContainer } from "/snippets/components/primitives/layout.jsx" ;
Props:
Prop Type Default Required Description childrenReactNode- Yes Content to display columnsstring|number- No Number of columns or CSS grid-template-columns value gapstring"1rem"No Gap between items (CSS value) styleobject{}No Additional inline styles
Examples:
< GridContainer columns = { 3 } gap = "2rem" >
< Card > Item 1 </ Card >
< Card > Item 2 </ Card >
< Card > Item 3 </ Card >
</ GridContainer >
Spacer
Vertical or horizontal spacing component.
Import:
import { Spacer } from "/snippets/components/primitives/layout.jsx" ;
Props:
Prop Type Default Required Description sizestring"1rem"No Spacing size (CSS value) directionstring"vertical"No Spacing direction: “vertical” | “horizontal”
Examples:
< Card > Content 1 </ Card >
< Spacer size = "2rem" />
< Card > Content 2 </ Card >
Tables
Table Primitives
Table components for structured data display without inline styles.
StyledTable
Theme-aware table component with variant support.
Import:
import { StyledTable , TableRow , TableCell } from "/snippets/components/primitives/tables.jsx" ;
Props:
Prop Type Default Required Description childrenReactNode- Yes Table content (thead, tbody, etc.) variantstring"default"No Table variant: “default” | “bordered” | “minimal” styleobject{}No Additional inline styles
Examples:
Name Status Item 1 Active Item 2 Pending
< StyledTable variant = "bordered" >
< thead >
< TableRow header >
< TableCell header > Header 1 </ TableCell >
< TableCell header align = "center" > Header 2 </ TableCell >
</ TableRow >
</ thead >
< tbody >
< TableRow >
< TableCell > Data 1 </ TableCell >
< TableCell align = "center" > Data 2 </ TableCell >
</ TableRow >
</ tbody >
</ StyledTable >
TableRow Props:
Prop Type Default Required Description childrenReactNode- Yes Table cells headerbooleanfalseNo Is this a header row? hoverbooleanfalseNo Enable hover effect styleobject{}No Additional inline styles
TableCell Props:
Prop Type Default Required Description childrenReactNode- Yes Cell content alignstring"left"No Text alignment: “left” | “center” | “right” headerbooleanfalseNo Is this a header cell? styleobject{}No Additional inline styles
Containers
Container Primitives
Container components for grouping and organizing content.
BorderedBox
Theme-aware bordered container component.
Import:
import { BorderedBox } from "/snippets/components/primitives/containers.jsx" ;
Props:
Prop Type Default Required Description childrenReactNode- Yes Content to display variantstring"default"No Border variant: “default” | “accent” | “muted” paddingstring"1rem"No Internal padding (CSS value) borderRadiusstring"8px"No Border radius (CSS value) styleobject{}No Additional inline styles
Examples:
Default
Accent Variant
Code
This is a bordered box with default styling.
This box has an accent-colored border.
< BorderedBox variant = "accent" padding = "1.5rem" >
Important content here
</ BorderedBox >
CenteredContainer
Centered content container component.
Import:
import { CenteredContainer } from "/snippets/components/primitives/containers.jsx" ;
Props:
Prop Type Default Required Description childrenReactNode- Yes Content to display maxWidthstring"800px"No Maximum width (CSS value) paddingstring"0"No Internal padding (CSS value) styleobject{}No Additional inline styles
Examples:
Centered Card This card is centered with a max width of 600px.
< CenteredContainer maxWidth = "600px" >
Centered content here
</ CenteredContainer >
FullWidthContainer
Full-width breakout container component for hero sections and full-width content.
Import:
import { FullWidthContainer } from "/snippets/components/primitives/containers.jsx" ;
Props:
Prop Type Default Required Description childrenReactNode- Yes Content to display backgroundColorstring- No Background color (CSS value or CSS variable) styleobject{}No Additional inline styles
Examples:
< FullWidthContainer backgroundColor = "var(--accent)" >
Full-width hero content
</ FullWidthContainer >
Next: Display Components Continue to Display Components →
Last modified on February 18, 2026