Skip to main content

Examples

Loading

With Social Proof

Creator

Without Media

Generic

Props

ChatEmbed

A card embedded in a chat thread that links out to a creator profile or a fan experience such as a live stream or game. Media fills the card and the profile row sits on a blurred scrim along the bottom edge. The creator variant is 160px tall and the experience variant 239px; both fill their container up to 400px wide. Pass href (or onOpen) to make the whole card clickable; the action stays separately clickable above it. Use ChatEmbedSkeleton while the embed’s data loads and ChatEmbedUnavailable when the shared item no longer exists. Give media meaningful alt text when it conveys content, or alt="" when the title already describes it. When media is a video with verticalMedia, pass its poster frame as mediaBackdrop so the video is not decoded twice. socialProof is shown to everyone in the chat, so prefer a count over naming other fans.
ReactNode
required
Primary line of the profile row: a display name or an experience title.
ReactNode
Action at the end of the profile row, typically a Button with variant="white" and size="32".
boolean
default:"false"
Show the EU AI-disclosure badge on the creator line.
string
default:"AI creator"
Accessible label for the AI-disclosure badge.
AvatarProps
Avatar shown at the start of the profile row.
ReactNode
Badge in the top-left corner, typically a LiveStatus.
ReactNode
Short category label shown as a tag after the badge, e.g. “Game” or “Audio”.
string
Makes the whole card a link to this URL, named by the title. Not available with onOpen.
boolean
default:"false"
Renders the media in greyscale, e.g. once a live has ended.
ReactNode
Media filling the card, typically an img or video, over a dark surface.
ReactNode
Still image blurred behind verticalMedia, e.g. the same image or a video’s poster frame.
ReactNode
Short copy in a translucent pill in the top-right corner, e.g. “2 hours ago”.
(() => void)
Not available with href. Makes the whole card a button named by the title, e.g. to open a dialog.
ChatEmbedSocialProof
Only available on the experience variant. Social proof row shown above the profile row.
ReactNode
Secondary line under the title, e.g. a handle or “Made by @jane_doe ”.
HTMLAttributeAnchorTarget
Where to open href; "_blank" adds rel="noopener noreferrer". Not available with onOpen.
"creator" | "experience"
default:"creator"
Layout of the embed.
boolean
default:"false"
Show the verified badge on the creator line.
string
default:"Verified"
Accessible label for the verified badge.
boolean
default:"false"
Frame portrait media in a centred 9:16 column over mediaBackdrop.

ChatEmbedSkeleton

Loading placeholder sized to match a ChatEmbed, shown while the data for a shared link is being fetched.
string
default:"Loading"
Visually hidden text read by screen readers in place of the placeholder.
"creator" | "experience"
default:"creator"
Layout to match while the embed loads.

ChatEmbedUnavailable

Placeholder sized to match a ChatEmbed, shown in place of the card when the shared profile or experience has been removed, hidden or unpublished. Pass children to localise the message.
ReactNode
Icon shown above the message.
"creator" | "experience"
default:"creator"
Layout to match the embed it replaces.

Exported types

Also exported from @fanvue/ui: ChatEmbedProps, ChatEmbedSkeletonProps, ChatEmbedSocialProof, ChatEmbedUnavailableProps, ChatEmbedVariant.
Setup: Installation · Theming