Interface: VideoComponent
Defined in: passages/story/types.ts:275
Component for displaying video content with standard HTML5 video controls. Supports local files and remote URLs with customizable playback behavior.
Example
// Basic video with controls
{
type: 'video',
content: '/videos/cutscene.mp4',
props: { controls: true }
}
// Looping background video
{
type: 'video',
content: '/videos/ambient.mp4',
props: {
autoPlay: true,
loop: true,
muted: true,
controls: false
}
}
Extends
BaseComponent
Properties
content
content:
string
Defined in: passages/story/types.ts:292
URL or path to the video file. Supports common formats (MP4, WebM, OGG) depending on browser support.
Example
content: 'https://example.com/video.mp4' // Remote URL
content: '/videos/intro.mp4' // Local path
content: 'cutscene.mp4' // Public folder asset
id?
optional
id:string
Defined in: passages/story/types.ts:24
Optional unique identifier for this component. Can be used to reference or manipulate specific components programmatically.
Example
{ type: 'text', id: 'intro-text', content: 'Welcome!' }
Inherited from
BaseComponent.id
initialVariant?
optional
initialVariant:"hidden"
|"display"
|"disclosure"
Defined in: passages/story/types.ts:39
Controls the initial visibility state of the component.
Remarks
This property is designed for future UI implementation to support dynamic component visibility. Currently defined but not yet implemented in the UI layer.
"display"
- Component is visible and rendered immediately (default behavior)"hidden"
- Component exists but is not visible initially"disclosure"
- Component is initially collapsed/hidden but can be expanded by user interaction
Default Value
"display"
Inherited from
BaseComponent.initialVariant
props?
optional
props:object
Defined in: passages/story/types.ts:297
Optional configuration for video playback and styling.
autoPlay?
optional
autoPlay:boolean
Whether the video should start playing automatically when rendered.
Default Value
true
Remarks
Many browsers restrict autoplay without user interaction, especially with audio.
Consider setting muted: true
for reliable autoplay behavior.
className?
optional
className:string
CSS class name(s) to apply to the video element.
Example
props: { className: 'rounded-lg shadow-xl' }
controls?
optional
controls:boolean
Whether to display native browser video controls (play, pause, volume, etc.).
Default Value
false
Remarks
Set to true
to allow user control over playback.
Set to false
for non-interactive videos or custom controls.
loop?
optional
loop:boolean
Whether the video should restart from the beginning when it reaches the end.
Default Value
true
Remarks
Useful for ambient/background videos that should play continuously.
muted?
optional
muted:boolean
Whether the video audio should be muted.
Default Value
true
Remarks
Setting to true
helps bypass browser autoplay restrictions.
Users can still unmute via controls if controls: true
.
type
type:
"video"
Defined in: passages/story/types.ts:279
Discriminator property identifying this as a video component.