@aidenlx/vidstack-react
Version:
UI component library for building high-quality, accessible video and audio experiences on the web.
1,297 lines (1,251 loc) • 106 kB
TypeScript
import { PlayerSrc as PlayerSrc$1, MediaProviderLoader, VTTContent, MediaContext, MediaProviderAdapter, MediaRemoteControl, MediaState, ThumbnailSrc, MediaCrossOrigin, ThumbnailImage, SliderState, SliderOrientation, TextTrack, TextTrackInit, AudioTrack, VideoQuality, FileDownloadInfo, MediaPlayerQuery, DefaultLayoutTranslations, TooltipPlacement, PlyrControl, PlyrMarker, PlyrLayoutTranslations, PlyrLayoutWord, Src, MediaType } from '../../types/vidstack.js';
export { DefaultLayoutWord } from '../../types/vidstack.js';
import * as React from 'react';
import * as maverick_js from 'maverick.js';
import { AnyRecord, State, Component, ReadSignal, WriteSignal } from 'maverick.js';
import 'maverick.js/std';
import { MediaPlayerInstance, MediaAnnouncerInstance, MediaProviderInstance, ControlsInstance, ControlsGroupInstance, TooltipInstance, TooltipTriggerInstance, TooltipContentInstance, ToggleButtonInstance, AirPlayButtonInstance, GoogleCastButtonInstance, PlayButtonInstance, CaptionButtonInstance, FullscreenButtonInstance, MuteButtonInstance, PIPButtonInstance, SeekButtonInstance, LiveButtonInstance, SliderValueInstance, SliderInstance, SliderPreviewInstance, VolumeSliderInstance, QualitySliderInstance, AudioGainSliderInstance, SpeedSliderInstance, ThumbnailInstance, TimeSliderInstance, SliderThumbnailInstance, SliderVideoInstance, SliderChaptersInstance, RadioGroupInstance, RadioInstance, MenuInstance, MenuButtonInstance, MenuPortalInstance, MenuItemsInstance, MenuItemInstance, GestureInstance, CaptionsInstance, PosterInstance, TimeInstance } from '../../types/vidstack-instances.js';
import { ReactElementProps, ReactProps } from 'maverick.js/react';
import { CaptionsFileFormat, CaptionsParserFactory, VTTCue } from 'media-captions';
import 'dashjs';
import 'hls.js';
interface RemotionSrc<InputProps extends RemotionInputProps = RemotionInputProps> {
/** React component which is generally a Remotion video. */
src: React.ComponentType<unknown>;
/** Remotion source type. */
type: 'video/remotion';
/**
* Pass props to the component that you have specified using the component prop.
*/
inputProps?: InputProps;
/**
* The width of the composition.
*
* @defaultValue 1920
*/
compositionWidth?: number;
/**
* The height of the composition.
*
* @defaultValue 1080
*/
compositionHeight?: number;
/**
* The frame rate of the video per second.
*
* @defaultValue 30
*/
fps?: number;
/**
* The duration of the video in frames. Must be an integer and greater than 0.
*/
durationInFrames: number;
/**
* Start the playback from a specific frame.
*
* @defaultValue 0
*/
initialFrame?: number;
/**
* Limit playback to only play after a certain frame. The video will start from this frame and
* move to this position once it has ended. Must be an integer, not smaller than 0, not bigger
* than `outFrame` and not bigger than `durationInFrames - 1`.
*
* @defaultValue 0
*/
inFrame?: number | null;
/**
* Limit playback to only play before a certain frame. The video will end at this frame
* and move to the beginning once it has ended. Must be an integer, not smaller than 1, not
* smaller than `inFrame` and not bigger than `durationInFrames`.
*
* @defaultValue `durationInFrames`
*/
outFrame?: number;
/**
* If you use an `<Audio />` tag, it might not play in some browsers (specifically iOS Safari)
* due to browser autoplay policies. This is why the player pre-mounts a set of audio tags with
* silent audio that get played upon user interaction. These audio tags can then be used to play
* real audio later and will not be subject to the autoplay policy of the browser.
*
* This option controls how many audio tags are being rendered, the default is 5. If you mount
* more audio tags than shared audio tags are available, then an error will be thrown.
*
* If you'd like to opt out of this behavior, you can pass 0 to mount native audio tags
* simultaneously as you mount Remotion's <Audio /> tags.
*
* @defaultValue 5
*/
numberOfSharedAudioTags?: number;
/**
* A callback function that allows you to return a custom UI that gets displayed while the
* provider is loading.
*/
renderLoading?: RemotionLoadingRenderer;
/**
* A callback for rendering a custom error message.
*/
errorFallback?: RemotionErrorRenderer;
/**
* Called when an error or uncaught exception has happened in the video.
*/
onError?(error: Error): void;
}
interface RemotionInputProps extends Record<string, unknown> {
}
interface RemotionLoadingRenderer {
(): React.ReactNode;
}
interface RemotionErrorRenderer {
(error: Error): React.ReactNode;
}
type PlayerSrc = PlayerSrc$1 | RemotionSrc;
interface MediaPlayerProps extends Omit<ReactElementProps<MediaPlayerInstance>, 'src'> {
/**
* The URL or object of the current media resource/s to be considered for playback.
*
* @see {@link https://vidstack.io/docs/player/core-concepts/loading#sources}
*/
src?: PlayerSrc;
aspectRatio?: string;
asChild?: boolean;
children: React.ReactNode;
ref?: React.Ref<MediaPlayerInstance>;
}
/**
* All media components exist inside the `<MediaPlayer>` component. This component's main
* responsibilities are to manage media state updates, dispatch media events, handle media
* requests, and expose media state through HTML attributes and CSS properties for styling
* purposes.
*
* @docs {@link https://www.vidstack.io/docs/player/components/media/player}
* @example
* ```tsx
* <MediaPlayer src="...">
* <MediaProvider />
* </MediaPlayer>
* ```
*/
declare const MediaPlayer: React.ForwardRefExoticComponent<Omit<MediaPlayerProps, "ref"> & React.RefAttributes<MediaPlayerInstance>>;
interface MediaAnnouncerProps extends ReactElementProps<MediaAnnouncerInstance> {
ref?: React.Ref<HTMLElement>;
}
/**
*
* @docs {@link https://www.vidstack.io/docs/player/components/display/announcer}
* @example
* ```tsx
* <MediaAnnouncer />
* ```
*/
declare const MediaAnnouncer: React.ForwardRefExoticComponent<Omit<MediaAnnouncerProps, "ref"> & React.RefAttributes<HTMLElement>>;
interface MediaProviderProps extends Omit<ReactElementProps<MediaProviderInstance>, 'loaders'> {
loaders?: Array<{
new (): MediaProviderLoader;
}>;
iframeProps?: React.IframeHTMLAttributes<HTMLIFrameElement>;
mediaProps?: React.HTMLAttributes<HTMLMediaElement>;
children?: React.ReactNode;
ref?: React.Ref<MediaProviderInstance>;
}
/**
* Renders the current provider at this component location.
*
* @docs {@link https://www.vidstack.io/docs/player/components/media/provider}
* @example
* ```tsx
* <MediaPlayer src="...">
* <MediaProvider />
* </MediaPlayer>
* ```
*/
declare const MediaProvider: React.ForwardRefExoticComponent<Omit<MediaProviderProps, "ref"> & React.RefAttributes<MediaProviderInstance>>;
interface IconProps extends React.PropsWithoutRef<React.SVGProps<SVGSVGElement>>, React.RefAttributes<SVGElement | SVGSVGElement> {
/**
* The horizontal (width) and vertical (height) length of the underlying `<svg>` element.
*
* @see {@link https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/width}
* @see {@link https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/height}
*/
size?: number;
part?: string;
/** @internal */
paths?: string;
}
interface IconComponent extends React.ForwardRefExoticComponent<IconProps> {
}
declare const Icon: IconComponent;
/**
* Creates a new `TextTrack` object and adds it to the player.
*
* @see {@link https://www.vidstack.io/docs/player/api/text-tracks}
* @example
* ```tsx
* <MediaPlayer>
* <MediaProvider>
* <Track
* src="english.vtt"
* kind="subtitles"
* label="English"
* lang="en-US"
* default
* />
* </MediaProvider>
* </MediaPlayer>
* ```
*/
declare function Track$2({ lang, ...props }: TrackProps$2): null;
declare namespace Track$2 {
var displayName: string;
}
interface TrackProps$2 {
/**
* A unique identifier.
*
* @see {@link https://developer.mozilla.org/en-US/docs/Web/API/TextTrack/id}
*/
readonly id?: string;
/**
* URL of the text track resource. This attribute must be specified and its URL value must have
* the same origin as the document — unless the <audio> or <video> parent element of the track
* element has a `crossorigin` attribute.
*/
readonly src?: string;
/**
* Used to directly pass in text track file contents.
*/
readonly content?: string | VTTContent;
/**
* The captions file format to be parsed or a custom parser factory (functions that returns a
* captions parser). Supported types include: 'vtt', 'srt', 'ssa', 'ass', and 'json'.
*
* @defaultValue 'vtt'
*/
readonly type?: 'json' | CaptionsFileFormat | CaptionsParserFactory;
/**
* The text encoding type to be used when decoding data bytes to text.
*
* @defaultValue 'utf-8'
* @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Encoding_API/Encodings}
*
*/
readonly encoding?: string;
/**
* Indicates that the track should be enabled unless the user's preferences indicate that
* another track is more appropriate. This may only be used on one track element per media
* element.
*
* @defaultValue false
*/
readonly default?: boolean;
/**
* The kind of text track this object represents. This decides how the track will be handled
* by the player.
*
* @see {@link https://developer.mozilla.org/en-US/docs/Web/API/TextTrack/kind}
*/
readonly kind: TextTrackKind;
/**
* A human-readable label for the text track. This will be displayed to the user.
*
* @see {@link https://developer.mozilla.org/en-US/docs/Web/API/TextTrack/label}
*/
readonly label?: string;
/**
* A string containing a language identifier. For example, `"en-US"` for United States English
* or `"pt-BR"` for Brazilian Portuguese.
*
* @see {@link https://developer.mozilla.org/en-US/docs/Web/API/TextTrack/language}
* @see {@link https://datatracker.ietf.org/doc/html/rfc5646}
*/
readonly language?: string;
/**
* A string containing a language identifier. For example, `"en-US"` for United States English
* or `"pt-BR"` for Brazilian Portuguese. This is a short alias for `language`.
*
* @see {@link https://developer.mozilla.org/en-US/docs/Web/API/TextTrack/language}
* @see {@link https://datatracker.ietf.org/doc/html/rfc5646}
*/
readonly lang?: TrackProps$2['language'];
/**
* React list key.
*/
readonly key?: string;
}
interface RootProps$c extends ReactElementProps<ControlsInstance> {
asChild?: boolean;
children?: React.ReactNode;
ref?: React.Ref<HTMLElement>;
}
/**
* This component creates a container for control groups.
*
* @docs {@link https://www.vidstack.io/docs/player/components/media/controls}
* @example
* ```tsx
* <Controls.Root>
* <Controls.Group></Controls.Group>
* <Controls.Group></Controls.Group>
* <Controls.Root>
* ```
*/
declare const Root$c: React.ForwardRefExoticComponent<Omit<RootProps$c, "ref"> & React.RefAttributes<HTMLElement>>;
interface GroupProps extends ReactElementProps<ControlsGroupInstance> {
asChild?: boolean;
children?: React.ReactNode;
ref?: React.Ref<HTMLElement>;
}
/**
* This component creates a container for media controls.
*
* @docs {@link https://www.vidstack.io/docs/player/components/media/controls#group}
* @example
* ```tsx
* <Controls.Root>
* <Controls.Group></Controls.Group>
* <Controls.Group></Controls.Group>
* <Controls.Root>
* ```
*/
declare const Group: React.ForwardRefExoticComponent<Omit<GroupProps, "ref"> & React.RefAttributes<HTMLElement>>;
declare const controls_d_Group: typeof Group;
type controls_d_GroupProps = GroupProps;
declare namespace controls_d {
export { controls_d_Group as Group, Root$c as Root };
export type { controls_d_GroupProps as GroupProps, RootProps$c as RootProps };
}
interface RootProps$b extends ReactProps<TooltipInstance> {
asChild?: boolean;
children: React.ReactNode;
}
/**
* A contextual text bubble that displays a description for an element that appears on pointer
* hover or keyboard focus.
*
* @docs {@link https://www.vidstack.io/docs/player/components/tooltip}
* @see {@link https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/tooltip_role}
* @example
* ```tsx
* <Tooltip.Root>
* <Tooltip.Trigger></Tooltip.Trigger>
* <Tooltip.Content></Tooltip.Content>
* </Tooltip.Root>
* ```
*/
declare function Root$b({ children, ...props }: RootProps$b): React.JSX.Element;
declare namespace Root$b {
var displayName: string;
}
interface TriggerProps extends ReactElementProps<TooltipTriggerInstance> {
asChild?: boolean;
children?: React.ReactNode;
ref?: React.Ref<HTMLButtonElement>;
}
/**
* Wraps the element that will trigger showing/hiding the tooltip on hover or keyboard focus. The
* tooltip content is positioned relative to this element.
*
* @docs {@link https://www.vidstack.io/docs/player/components/tooltip}
* @example
* ```tsx
* <Tooltip.Root>
* <Tooltip.Trigger></Tooltip.Trigger>
* <Tooltip.Content></Tooltip.Content>
* </Tooltip.Root>
* ```
*/
declare const Trigger: React.ForwardRefExoticComponent<Omit<TriggerProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
interface ContentProps extends ReactElementProps<TooltipContentInstance> {
asChild?: boolean;
children?: React.ReactNode;
ref?: React.Ref<HTMLElement>;
}
/**
* This component contains the content that is visible when the tooltip trigger is interacted with.
*
* @docs {@link https://www.vidstack.io/docs/player/components/tooltip}
* @example
* ```tsx
* <Tooltip.Root>
* <Tooltip.Trigger></Tooltip.Trigger>
* <Tooltip.Content></Tooltip.Content>
* </Tooltip.Root>
* ```
*/
declare const Content: React.ForwardRefExoticComponent<Omit<ContentProps, "ref"> & React.RefAttributes<HTMLElement>>;
declare const tooltip_d_Content: typeof Content;
type tooltip_d_ContentProps = ContentProps;
declare const tooltip_d_Trigger: typeof Trigger;
type tooltip_d_TriggerProps = TriggerProps;
declare namespace tooltip_d {
export { tooltip_d_Content as Content, Root$b as Root, tooltip_d_Trigger as Trigger };
export type { tooltip_d_ContentProps as ContentProps, RootProps$b as RootProps, tooltip_d_TriggerProps as TriggerProps };
}
interface ToggleButtonProps extends ReactElementProps<ToggleButtonInstance, HTMLButtonElement> {
asChild?: boolean;
children?: React.ReactNode;
ref?: React.Ref<HTMLButtonElement>;
}
/**
* A toggle button is a two-state button that can be either off (not pressed) or on (pressed).
*
* @docs {@link https://www.vidstack.io/docs/player/components/buttons/toggle-button}
* @example
* ```tsx
* <ToggleButton aria-label="...">
* <OnIcon />
* <OffIcon />
* </ToggleButton>
* ```
*/
declare const ToggleButton: React.ForwardRefExoticComponent<Omit<ToggleButtonProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
interface AirPlayButtonProps extends ReactElementProps<AirPlayButtonInstance, HTMLButtonElement> {
asChild?: boolean;
children?: React.ReactNode;
ref?: React.Ref<HTMLButtonElement>;
}
/**
* A button for requesting to connect to Apple AirPlay.
*
* @see {@link https://www.apple.com/au/airplay}
* @docs {@link https://www.vidstack.io/docs/player/components/buttons/airplay-button}
* @example
* ```tsx
* <AirPlayButton>
* <AirPlayIcon />
* </AirPlayButton>
* ```
*/
declare const AirPlayButton: React.ForwardRefExoticComponent<Omit<AirPlayButtonProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
interface GoogleCastButtonProps extends ReactElementProps<GoogleCastButtonInstance, HTMLButtonElement> {
asChild?: boolean;
children?: React.ReactNode;
ref?: React.Ref<HTMLButtonElement>;
}
/**
* A button for requesting Google Cast.
*
* @see {@link https://developers.google.com/cast/docs/overview}
* @docs {@link https://www.vidstack.io/docs/player/components/buttons/google-cast-button}
* @example
* ```tsx
* <GoogleCastButton>
* <ChromecastIcon />
* </GoogleCastButton>
* ```
*/
declare const GoogleCastButton: React.ForwardRefExoticComponent<Omit<GoogleCastButtonProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
interface PlayButtonProps extends ReactElementProps<PlayButtonInstance, HTMLButtonElement> {
asChild?: boolean;
children?: React.ReactNode;
ref?: React.Ref<HTMLButtonElement>;
}
/**
* A button for toggling the playback state (play/pause) of the current media.
*
* @docs {@link https://www.vidstack.io/docs/player/components/buttons/play-button}
* @example
* ```tsx
* const isPaused = useMediaState('paused');
*
* <PlayButton>
* {isPaused ? <PlayIcon /> : <PauseIcon />}
* </PlayButton>
* ```
*/
declare const PlayButton: React.ForwardRefExoticComponent<Omit<PlayButtonProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
interface CaptionButtonProps extends ReactElementProps<CaptionButtonInstance, HTMLButtonElement> {
asChild?: boolean;
children?: React.ReactNode;
ref?: React.Ref<HTMLButtonElement>;
}
/**
* A button for toggling the showing state of the captions.
*
* @docs {@link https://www.vidstack.io/docs/player/components/buttons/caption-button}
* @example
* ```tsx
* const track = useMediaState('textTrack'),
* isOn = track && isTrackCaptionKind(track);
*
* <CaptionButton>
* {isOn ? <OnIcon /> : <OffIcon />}
* </CaptionButton>
* ```
*/
declare const CaptionButton: React.ForwardRefExoticComponent<Omit<CaptionButtonProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
interface FullscreenButtonProps extends ReactElementProps<FullscreenButtonInstance, HTMLButtonElement> {
asChild?: boolean;
children?: React.ReactNode;
ref?: React.Ref<HTMLButtonElement>;
}
/**
* A button for toggling the fullscreen mode of the player.
*
* @docs {@link https://www.vidstack.io/docs/player/components/buttons/fullscreen-button}
* @see {@link https://www.vidstack.io/docs/player/api/fullscreen}
* @example
* ```tsx
* const isActive = useMediaState('fullscreen');
*
* <FullscreenButton>
* {!isActive ? <EnterIcon /> : <ExitIcon />}
* </FullscreenButton>
* ```
*/
declare const FullscreenButton: React.ForwardRefExoticComponent<Omit<FullscreenButtonProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
interface MuteButtonProps extends ReactElementProps<MuteButtonInstance, HTMLButtonElement> {
asChild?: boolean;
children?: React.ReactNode;
ref?: React.Ref<HTMLButtonElement>;
}
/**
* A button for toggling the muted state of the player.
*
* @docs {@link https://www.vidstack.io/docs/player/components/buttons/mute-button}
* @example
* ```tsx
* const volume = useMediaState('volume'),
* isMuted = useMediaState('muted');
*
* <MuteButton>
* {isMuted || volume == 0 ? (
* <MuteIcon />
* ) : volume < 0.5 ? (
* <VolumeLowIcon />
* ) : (
* <VolumeHighIcon />
* )}
* </MuteButton>
* ```
*/
declare const MuteButton: React.ForwardRefExoticComponent<Omit<MuteButtonProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
interface PIPButtonProps extends ReactElementProps<PIPButtonInstance, HTMLButtonElement> {
asChild?: boolean;
children?: React.ReactNode;
ref?: React.Ref<HTMLButtonElement>;
}
/**
* A button for toggling the picture-in-picture (PIP) mode of the player.
*
* @docs {@link https://www.vidstack.io/docs/player/components/buttons/pip-button}
* @see {@link https://www.vidstack.io/docs/player/api/picture-in-picture}
* @example
* ```tsx
* const isActive = useMediaState('pictureInPicture');
*
* <PIPButton>
* {!isActive ? <EnterIcon /> : <ExitIcon />}
* </PIPButton>
* ```
*/
declare const PIPButton: React.ForwardRefExoticComponent<Omit<PIPButtonProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
interface SeekButtonProps extends ReactElementProps<SeekButtonInstance, HTMLButtonElement> {
asChild?: boolean;
children?: React.ReactNode;
ref?: React.Ref<HTMLButtonElement>;
}
/**
* A button for seeking the current media playback forwards or backwards by a specified amount.
*
* @docs {@link https://www.vidstack.io/docs/player/components/buttons/seek-button}
* @example
* ```tsx
* <SeekButton seconds={-10}>
* <SeekBackwardIcon />
* </SeekButton>
*
* <SeekButton seconds={10}>
* <SeekForwardIcon />
* </SeekButton>
* ```
*/
declare const SeekButton: React.ForwardRefExoticComponent<Omit<SeekButtonProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
interface LiveButtonProps extends ReactElementProps<LiveButtonInstance, HTMLButtonElement> {
asChild?: boolean;
children?: React.ReactNode;
ref?: React.Ref<HTMLButtonElement>;
}
/**
* This component displays the current live status of the stream. This includes whether it's
* live, at the live edge, or not live. In addition, this component is a button during live streams
* and will skip ahead to the live edge when pressed.
*
* 🚨 This component will have `aria-hidden="true"` applied when the current stream is _not_
* live.
*
* @docs {@link https://www.vidstack.io/docs/player/components/buttons/live-button}
* @example
* ```tsx
* <LiveButton>
* <LiveIcon />
* </LiveButton>
* ```
*/
declare const LiveButton: React.ForwardRefExoticComponent<Omit<LiveButtonProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
type PrimitivePropsWithRef<E extends React.ElementType> = Omit<React.ComponentProps<E>, 'style'> & React.Attributes & {
asChild?: boolean;
style?: React.CSSProperties | (React.CSSProperties & Record<`--${string}`, string | null | undefined>) | undefined;
};
interface SliderValueProps extends ReactElementProps<SliderValueInstance> {
asChild?: boolean;
children?: React.ReactNode;
ref?: React.Ref<HTMLElement>;
}
interface RootProps$a extends ReactElementProps<SliderInstance> {
asChild?: boolean;
children?: React.ReactNode;
ref?: React.Ref<SliderInstance>;
}
/**
* Versatile and user-friendly input control designed for seamless cross-browser compatibility and
* accessibility with ARIA support. It offers a smooth user experience for both mouse and touch
* interactions and is highly customizable in terms of styling. Users can effortlessly input numeric
* values within a specified range, defined by a minimum and maximum value.
*
* @docs {@link https://www.vidstack.io/docs/player/components/sliders/slider}
* @example
* ```tsx
* <Slider.Root>
* <Slider.Track>
* <Slider.TrackFill />
* </Slider.Track>
* <Slider.Thumb />
* </Slider.Root>
* ```
*/
declare const Root$a: React.ForwardRefExoticComponent<Omit<RootProps$a, "ref"> & React.RefAttributes<SliderInstance>>;
interface ThumbProps extends PrimitivePropsWithRef<'div'> {
}
/**
* Purely visual element used to display a draggable handle to the user for adjusting the value
* on the slider component.
*
* @example
* ```tsx
* <Slider.Root>
* <Slider.Thumb />
* </Slider.Root>
* ```
*/
declare const Thumb: React.ForwardRefExoticComponent<Omit<ThumbProps, "ref"> & React.RefAttributes<HTMLElement>>;
interface TrackProps$1 extends PrimitivePropsWithRef<'div'> {
}
/**
* Visual element inside the slider that serves as a horizontal or vertical bar, providing a
* visual reference for the range or values that can be selected by moving the slider thumb along
* it. Users can interact with the slider by dragging the thumb along the track to set a specific
* value.
*
* @example
* ```tsx
* <Slider.Root>
* <Slider.Track>
* <Slider.TrackFill />
* </Slider.Track>
* </Slider.Root>
* ```
*/
declare const Track$1: React.ForwardRefExoticComponent<Omit<TrackProps$1, "ref"> & React.RefAttributes<HTMLElement>>;
interface TrackFillProps$1 extends PrimitivePropsWithRef<'div'> {
}
/**
* Portion of the slider track that is visually filled or highlighted to indicate the selected or
* currently chosen range or value. As the slider thumb is moved along the track, the track
* fill dynamically adjusts to visually represent the portion of the track that corresponds to the
* selected value or range, providing users with a clear visual indication of their selection.
*
* @example
* ```tsx
* <Slider.Root>
* <Slider.Track>
* <Slider.TrackFill />
* </Slider.Track>
* </Slider.Root>
* ```
*/
declare const TrackFill$1: React.ForwardRefExoticComponent<Omit<TrackFillProps$1, "ref"> & React.RefAttributes<HTMLElement>>;
interface PreviewProps extends ReactElementProps<SliderPreviewInstance> {
asChild?: boolean;
children?: React.ReactNode;
ref?: React.Ref<HTMLElement>;
}
/**
* Used to provide users with a real-time or interactive preview of the value or selection they
* are making as they move the slider thumb. This can include displaying the current pointer
* value numerically, or displaying a thumbnail over the time slider.
*
* @docs {@link https://www.vidstack.io/docs/player/components/slider#preview}
* @example
* ```tsx
* <Slider.Root>
* <Slider.Preview>
* <Slider.Value />
* </Slider.Preview>
* </Slider.Root>
* ```
*/
declare const Preview: React.ForwardRefExoticComponent<Omit<PreviewProps, "ref"> & React.RefAttributes<HTMLElement>>;
interface ValueProps extends SliderValueProps {
}
/**
* Displays the specific numeric representation of the current or pointer value of the slider.
* When a user interacts with a slider by moving its thumb along the track, the slider value
* changes accordingly.
*
* @docs {@link https://www.vidstack.io/docs/player/components/slider#preview}
* @example
* ```tsx
* <Slider.Root>
* <Slider.Preview>
* <Slider.Value />
* </Slider.Preview>
* </Slider.Root>
* ```
*/
declare const Value: React.ForwardRefExoticComponent<Omit<ValueProps, "ref"> & React.RefAttributes<HTMLElement>>;
interface StepsProps extends Omit<PrimitivePropsWithRef<'div'>, 'children'> {
children: (step: number) => React.ReactNode;
}
/**
* Visual markers that can be used to indicate value steps on the slider track.
*
* @example
* ```tsx
* <Slider.Root>
* <Slider.Steps className="steps">
* {(step) => <div className="step" key={String(step)}></div>}
* </Slider.Steps>
* </Slider.Root>
* ```
*/
declare const Steps: React.ForwardRefExoticComponent<Omit<StepsProps, "ref"> & React.RefAttributes<HTMLElement>>;
declare const slider_d_Preview: typeof Preview;
type slider_d_PreviewProps = PreviewProps;
declare const slider_d_Steps: typeof Steps;
type slider_d_StepsProps = StepsProps;
declare const slider_d_Thumb: typeof Thumb;
type slider_d_ThumbProps = ThumbProps;
declare const slider_d_Value: typeof Value;
type slider_d_ValueProps = ValueProps;
declare namespace slider_d {
export { slider_d_Preview as Preview, Root$a as Root, slider_d_Steps as Steps, slider_d_Thumb as Thumb, Track$1 as Track, TrackFill$1 as TrackFill, slider_d_Value as Value };
export type { slider_d_PreviewProps as PreviewProps, RootProps$a as RootProps, slider_d_StepsProps as StepsProps, slider_d_ThumbProps as ThumbProps, TrackFillProps$1 as TrackFillProps, TrackProps$1 as TrackProps, slider_d_ValueProps as ValueProps };
}
interface RootProps$9 extends ReactElementProps<VolumeSliderInstance> {
asChild?: boolean;
children?: React.ReactNode;
ref?: React.Ref<VolumeSliderInstance>;
}
/**
* Versatile and user-friendly input volume control designed for seamless cross-browser and provider
* compatibility and accessibility with ARIA support. It offers a smooth user experience for both
* mouse and touch interactions and is highly customizable in terms of styling. Users can
* effortlessly change the volume level within the range 0 (muted) to 100.
*
* @docs {@link https://www.vidstack.io/docs/player/components/sliders/volume-slider}
* @example
* ```tsx
* <VolumeSlider.Root>
* <VolumeSlider.Track>
* <VolumeSlider.TrackFill />
* </VolumeSlider.Track>
* <VolumeSlider.Thumb />
* </VolumeSlider.Root>
* ```
*/
declare const Root$9: React.ForwardRefExoticComponent<Omit<RootProps$9, "ref"> & React.RefAttributes<VolumeSliderInstance>>;
declare const volumeSlider_d_Preview: typeof Preview;
type volumeSlider_d_PreviewProps = PreviewProps;
declare const volumeSlider_d_Steps: typeof Steps;
type volumeSlider_d_StepsProps = StepsProps;
declare const volumeSlider_d_Thumb: typeof Thumb;
type volumeSlider_d_ThumbProps = ThumbProps;
declare const volumeSlider_d_Value: typeof Value;
type volumeSlider_d_ValueProps = ValueProps;
declare namespace volumeSlider_d {
export { volumeSlider_d_Preview as Preview, Root$9 as Root, volumeSlider_d_Steps as Steps, volumeSlider_d_Thumb as Thumb, Track$1 as Track, TrackFill$1 as TrackFill, volumeSlider_d_Value as Value };
export type { volumeSlider_d_PreviewProps as PreviewProps, RootProps$9 as RootProps, volumeSlider_d_StepsProps as StepsProps, volumeSlider_d_ThumbProps as ThumbProps, TrackFillProps$1 as TrackFillProps, TrackProps$1 as TrackProps, volumeSlider_d_ValueProps as ValueProps };
}
interface RootProps$8 extends ReactElementProps<QualitySliderInstance> {
asChild?: boolean;
children?: React.ReactNode;
ref?: React.Ref<QualitySliderInstance>;
}
/**
* Versatile and user-friendly input video quality control designed for seamless cross-browser and
* provider compatibility and accessibility with ARIA support. It offers a smooth user experience
* for both mouse and touch interactions and is highly customizable in terms of styling.
*
* @docs {@link https://www.vidstack.io/docs/player/components/sliders/quality-slider}
* @example
* ```tsx
* <QualitySlider.Root>
* <QualitySlider.Track>
* <QualitySlider.TrackFill />
* </QualitySlider.Track>
* <QualitySlider.Thumb />
* </QualitySlider.Root>
* ```
*/
declare const Root$8: React.ForwardRefExoticComponent<Omit<RootProps$8, "ref"> & React.RefAttributes<QualitySliderInstance>>;
declare const qualitySlider_d_Preview: typeof Preview;
type qualitySlider_d_PreviewProps = PreviewProps;
declare const qualitySlider_d_Steps: typeof Steps;
type qualitySlider_d_StepsProps = StepsProps;
declare const qualitySlider_d_Thumb: typeof Thumb;
type qualitySlider_d_ThumbProps = ThumbProps;
declare const qualitySlider_d_Value: typeof Value;
type qualitySlider_d_ValueProps = ValueProps;
declare namespace qualitySlider_d {
export { qualitySlider_d_Preview as Preview, Root$8 as Root, qualitySlider_d_Steps as Steps, qualitySlider_d_Thumb as Thumb, Track$1 as Track, TrackFill$1 as TrackFill, qualitySlider_d_Value as Value };
export type { qualitySlider_d_PreviewProps as PreviewProps, RootProps$8 as RootProps, qualitySlider_d_StepsProps as StepsProps, qualitySlider_d_ThumbProps as ThumbProps, TrackFillProps$1 as TrackFillProps, TrackProps$1 as TrackProps, qualitySlider_d_ValueProps as ValueProps };
}
interface RootProps$7 extends ReactElementProps<AudioGainSliderInstance> {
asChild?: boolean;
children?: React.ReactNode;
ref?: React.Ref<AudioGainSliderInstance>;
}
/**
* Versatile and user-friendly audio boost control designed for seamless cross-browser and provider
* compatibility and accessibility with ARIA support. It offers a smooth user experience for both
* mouse and touch interactions and is highly customizable in terms of styling. Users can
* effortlessly change the audio gain within the range 0 to 100.
*
* @docs {@link https://www.vidstack.io/docs/player/components/sliders/audio-gain-slider}
* @example
* ```tsx
* <AudioGainSlider.Root>
* <AudioGainSlider.Track>
* <AudioGainSlider.TrackFill />
* </AudioGainSlider.Track>
* <AudioGainSlider.Thumb />
* </AudioGainSlider.Root>
* ```
*/
declare const Root$7: React.ForwardRefExoticComponent<Omit<RootProps$7, "ref"> & React.RefAttributes<AudioGainSliderInstance>>;
declare const audioGainSlider_d_Preview: typeof Preview;
type audioGainSlider_d_PreviewProps = PreviewProps;
declare const audioGainSlider_d_Steps: typeof Steps;
type audioGainSlider_d_StepsProps = StepsProps;
declare const audioGainSlider_d_Thumb: typeof Thumb;
type audioGainSlider_d_ThumbProps = ThumbProps;
declare const audioGainSlider_d_Value: typeof Value;
type audioGainSlider_d_ValueProps = ValueProps;
declare namespace audioGainSlider_d {
export { audioGainSlider_d_Preview as Preview, Root$7 as Root, audioGainSlider_d_Steps as Steps, audioGainSlider_d_Thumb as Thumb, Track$1 as Track, TrackFill$1 as TrackFill, audioGainSlider_d_Value as Value };
export type { audioGainSlider_d_PreviewProps as PreviewProps, RootProps$7 as RootProps, audioGainSlider_d_StepsProps as StepsProps, audioGainSlider_d_ThumbProps as ThumbProps, TrackFillProps$1 as TrackFillProps, TrackProps$1 as TrackProps, audioGainSlider_d_ValueProps as ValueProps };
}
interface RootProps$6 extends ReactElementProps<SpeedSliderInstance> {
asChild?: boolean;
children?: React.ReactNode;
ref?: React.Ref<SpeedSliderInstance>;
}
/**
* Versatile and user-friendly input playback rate control designed for seamless cross-browser and
* provider compatibility and accessibility with ARIA support. It offers a smooth user experience
* for both mouse and touch interactions and is highly customizable in terms of styling.
*
* @docs {@link https://www.vidstack.io/docs/player/components/sliders/speed-slider}
* @example
* ```tsx
* <SpeedSlider.Root>
* <SpeedSlider.Track>
* <SpeedSlider.TrackFill />
* </SpeedSlider.Track>
* <SpeedSlider.Thumb />
* </SpeedSlider.Root>
* ```
*/
declare const Root$6: React.ForwardRefExoticComponent<Omit<RootProps$6, "ref"> & React.RefAttributes<SpeedSliderInstance>>;
declare const speedSlider_d_Preview: typeof Preview;
type speedSlider_d_PreviewProps = PreviewProps;
declare const speedSlider_d_Steps: typeof Steps;
type speedSlider_d_StepsProps = StepsProps;
declare const speedSlider_d_Thumb: typeof Thumb;
type speedSlider_d_ThumbProps = ThumbProps;
declare const speedSlider_d_Value: typeof Value;
type speedSlider_d_ValueProps = ValueProps;
declare namespace speedSlider_d {
export { speedSlider_d_Preview as Preview, Root$6 as Root, speedSlider_d_Steps as Steps, speedSlider_d_Thumb as Thumb, Track$1 as Track, TrackFill$1 as TrackFill, speedSlider_d_Value as Value };
export type { speedSlider_d_PreviewProps as PreviewProps, RootProps$6 as RootProps, speedSlider_d_StepsProps as StepsProps, speedSlider_d_ThumbProps as ThumbProps, TrackFillProps$1 as TrackFillProps, TrackProps$1 as TrackProps, speedSlider_d_ValueProps as ValueProps };
}
interface RootProps$5 extends ReactElementProps<ThumbnailInstance, HTMLElement> {
asChild?: boolean;
children?: React.ReactNode;
ref?: React.Ref<HTMLElement>;
}
/**
* Used to load and display a preview thumbnail at the given `time`.
*
* @docs {@link https://www.vidstack.io/docs/player/components/display/thumbnail}
* @example
* ```tsx
* <Thumbnail.Root src="thumbnails.vtt" time={10} >
* <Thumbnail.Img />
* </Thumbnail.Root>
* ```
*/
declare const Root$5: React.ForwardRefExoticComponent<Omit<RootProps$5, "ref"> & React.RefAttributes<HTMLElement>>;
interface ImgProps extends PrimitivePropsWithRef<'img'> {
children?: React.ReactNode;
}
declare const Img: React.ForwardRefExoticComponent<Omit<ImgProps, "ref"> & React.RefAttributes<HTMLImageElement>>;
declare const thumbnail_d_Img: typeof Img;
type thumbnail_d_ImgProps = ImgProps;
declare namespace thumbnail_d {
export { thumbnail_d_Img as Img, Root$5 as Root };
export type { thumbnail_d_ImgProps as ImgProps, RootProps$5 as RootProps };
}
interface RootProps$4 extends ReactElementProps<TimeSliderInstance> {
asChild?: boolean;
children?: React.ReactNode;
ref?: React.Ref<TimeSliderInstance>;
}
/**
* Versatile and user-friendly input time control designed for seamless cross-browser and provider
* compatibility and accessibility with ARIA support. It offers a smooth user experience for both
* mouse and touch interactions and is highly customizable in terms of styling. Users can
* effortlessly change the current playback time within the range 0 to seekable end.
*
* @docs {@link https://www.vidstack.io/docs/player/components/sliders/time-slider}
* @example
* ```tsx
* <TimeSlider.Root>
* <TimeSlider.Track>
* <TimeSlider.TrackFill />
* <TimeSlider.Progress />
* </TimeSlider.Track>
* <TimeSlider.Thumb />
* </TimeSlider.Root>
* ```
*/
declare const Root$4: React.ForwardRefExoticComponent<Omit<RootProps$4, "ref"> & React.RefAttributes<TimeSliderInstance>>;
interface ChaptersProps extends Omit<ReactElementProps<SliderChaptersInstance>, 'children'> {
children: (cues: VTTCue[], forwardRef: React.RefCallback<HTMLElement>) => React.ReactNode;
}
/**
* Used to create predefined sections within a time slider interface based on the currently
* active chapters text track.
*
* @docs {@link https://www.vidstack.io/docs/player/components/slider-chapters}
* @example
* ```tsx
* <TimeSlider.Root>
* <TimeSlider.Chapters>
* {(cues, forwardRef) =>
* cues.map((cue) => (
* <div key={cue.startTime} ref={forwardRef}>
* <TimeSlider.Track>
* <TimeSlider.TrackFill />
* <TimeSlider.Progress />
* </TimeSlider.Track>
* </div>
* ))}
* </TimeSlider.Chapters>
* </TimeSlider.Root>
* ```
*/
declare const Chapters: React.ForwardRefExoticComponent<ChaptersProps & React.RefAttributes<HTMLDivElement>>;
interface ChapterTitleProps$1 extends PrimitivePropsWithRef<'div'> {
}
/**
* Used to display the active cue text based on the slider value and preview value.
*
* @example
* ```tsx
* <TimeSlider.Root>
* <TimeSlider.Preview>
* <TimeSlider.Chapter />
* </TimeSlider.Preview>
* </TimeSlider.Root>
* ```
*/
declare const ChapterTitle$1: React.ForwardRefExoticComponent<Omit<ChapterTitleProps$1, "ref"> & React.RefAttributes<HTMLElement>>;
interface ProgressProps extends PrimitivePropsWithRef<'div'> {
}
/**
* Visual element inside the slider that serves as a horizontal or vertical bar, providing a
* visual reference for the range of playback that has buffered/loaded.
*
* @example
* ```tsx
* <TimeSlider.Root>
* <TimeSlider.Track>
* <TimeSlider.Progress />
* </TimeSlider.Track>
* </TimeSlider.Root>
* ```
*/
declare const Progress: React.ForwardRefExoticComponent<Omit<ProgressProps, "ref"> & React.RefAttributes<HTMLElement>>;
interface ThumbnailProps extends ReactElementProps<SliderThumbnailInstance, HTMLElement> {
asChild?: boolean;
children?: React.ReactNode;
ref?: React.Ref<HTMLElement>;
}
type ThumbnailImgProps = ImgProps;
declare const Thumbnail: {
readonly Root: React.ForwardRefExoticComponent<Omit<ThumbnailProps, "ref"> & React.RefAttributes<HTMLElement>>;
readonly Img: React.ForwardRefExoticComponent<Omit<ImgProps, "ref"> & React.RefAttributes<HTMLImageElement>>;
};
interface VideoProps extends ReactElementProps<SliderVideoInstance, HTMLVideoElement> {
asChild?: boolean;
children?: React.ReactNode;
ref?: React.Ref<HTMLVideoElement>;
}
/**
* Used to load a low-resolution video to be displayed when the user is hovering over or dragging
* the time slider. The preview video will automatically be updated to be in-sync with the current
* preview position, so ensure it has the same length as the original media (i.e., same duration).
*
* @docs {@link https://www.vidstack.io/docs/player/components/sliders/slider-video}
* @example
* ```tsx
* <TimeSlider.Root>
* <TimeSlider.Preview>
* <TimeSlider.Video src="preview.mp4" />
* </TimeSlider.Preview>
* </TimeSlider.Root>
* ```
*/
declare const Video: React.ForwardRefExoticComponent<Omit<VideoProps, "ref"> & React.RefAttributes<HTMLVideoElement>>;
interface VideoProviderProps {
instance: SliderVideoInstance;
children?: React.ReactNode;
}
declare const timeSlider_d_Chapters: typeof Chapters;
type timeSlider_d_ChaptersProps = ChaptersProps;
declare const timeSlider_d_Preview: typeof Preview;
type timeSlider_d_PreviewProps = PreviewProps;
declare const timeSlider_d_Progress: typeof Progress;
type timeSlider_d_ProgressProps = ProgressProps;
declare const timeSlider_d_Steps: typeof Steps;
type timeSlider_d_StepsProps = StepsProps;
declare const timeSlider_d_Thumb: typeof Thumb;
type timeSlider_d_ThumbProps = ThumbProps;
declare const timeSlider_d_Thumbnail: typeof Thumbnail;
type timeSlider_d_ThumbnailImgProps = ThumbnailImgProps;
type timeSlider_d_ThumbnailProps = ThumbnailProps;
declare const timeSlider_d_Value: typeof Value;
type timeSlider_d_ValueProps = ValueProps;
declare const timeSlider_d_Video: typeof Video;
type timeSlider_d_VideoProps = VideoProps;
type timeSlider_d_VideoProviderProps = VideoProviderProps;
declare namespace timeSlider_d {
export { ChapterTitle$1 as ChapterTitle, timeSlider_d_Chapters as Chapters, timeSlider_d_Preview as Preview, timeSlider_d_Progress as Progress, Root$4 as Root, timeSlider_d_Steps as Steps, timeSlider_d_Thumb as Thumb, timeSlider_d_Thumbnail as Thumbnail, Track$1 as Track, TrackFill$1 as TrackFill, timeSlider_d_Value as Value, timeSlider_d_Video as Video };
export type { ChapterTitleProps$1 as ChapterTitleProps, timeSlider_d_ChaptersProps as ChaptersProps, timeSlider_d_PreviewProps as PreviewProps, timeSlider_d_ProgressProps as ProgressProps, RootProps$4 as RootProps, timeSlider_d_StepsProps as StepsProps, timeSlider_d_ThumbProps as ThumbProps, timeSlider_d_ThumbnailImgProps as ThumbnailImgProps, timeSlider_d_ThumbnailProps as ThumbnailProps, TrackFillProps$1 as TrackFillProps, TrackProps$1 as TrackProps, timeSlider_d_ValueProps as ValueProps, timeSlider_d_VideoProps as VideoProps, timeSlider_d_VideoProviderProps as VideoProviderProps };
}
interface RootProps$3 extends ReactElementProps<RadioGroupInstance> {
asChild?: boolean;
children?: React.ReactNode;
ref?: React.Ref<RadioGroupInstance>;
}
/**
* A radio group consists of options where only one of them can be checked. Each option is
* provided as a radio (i.e., a selectable element).
*
* @docs {@link https://www.vidstack.io/docs/player/components/menu/radio-group}
* @example
* ```tsx
* <RadioGroup.Root>
* <RadioGroup.Item value="1080">1080p</RadioGroup.Item>
* <RadioGroup.Item value="720">720p</RadioGroup.Item>
* </RadioGroup.Root>
* ```
*/
declare const Root$3: React.ForwardRefExoticComponent<Omit<RootProps$3, "ref"> & React.RefAttributes<RadioGroupInstance>>;
interface ItemProps$1 extends ReactElementProps<RadioInstance> {
asChild?: boolean;
children?: React.ReactNode;
ref?: React.Ref<HTMLElement>;
}
/**
* A radio represents a option that a user can select inside of a radio group. Only one radio
* can be checked in a group.
*
* @docs {@link https://www.vidstack.io/docs/player/components/menu/radio}
* @example
* ```tsx
* <RadioGroup.Item value="1080">1080p</RadioGroup.Item>
* ```
*/
declare const Item$1: React.ForwardRefExoticComponent<Omit<ItemProps$1, "ref"> & React.RefAttributes<HTMLElement>>;
declare namespace radioGroup_d {
export { Item$1 as Item, Root$3 as Root };
export type { ItemProps$1 as ItemProps, RootProps$3 as RootProps };
}
interface RootProps$2 extends ReactElementProps<MenuInstance> {
asChild?: boolean;
children: React.ReactNode;
ref?: React.Ref<MenuInstance>;
}
/**
* Root menu container used to hold and manage a menu button and menu items. This component is
* used to display options in a floating panel. They can be nested to create submenus.
*
* @docs {@link https://www.vidstack.io/docs/player/components/menu/menu}
* @example
* ```tsx
* <Menu.Root>
* <Menu.Button></Menu.Button>
* <Menu.Content placement="top end"></Menu.Content>
* </Menu.Root>
* ```
*/
declare const Root$2: React.ForwardRefExoticComponent<Omit<RootProps$2, "ref"> & React.RefAttributes<MenuInstance>>;
interface ButtonProps extends ReactElementProps<MenuButtonInstance, HTMLButtonElement> {
asChild?: boolean;
children?: React.ReactNode;
ref?: React.Ref<HTMLButtonElement>;
}
/**
* A button that controls the opening and closing of a menu component. The button will become a
* `menuitem` when used inside a submenu.
*
* @docs {@link https://www.vidstack.io/docs/player/components/menu/menu}
* @example
* ```tsx
* <Menu.Root>
* <Menu.Button></Menu.Button>
* <Menu.Content placement="top end"></Menu.Content>
* </Menu.Root>
* ```
*/
declare const Button: React.ForwardRefExoticComponent<Omit<ButtonProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
interface PortalProps extends ReactElementProps<MenuPortalInstance> {
asChild?: boolean;
children?: React.ReactNode;
ref?: React.Ref<HTMLElement>;
}
/**
* Portals menu items into the given container.
*
* @docs {@link https://www.vidstack.io/docs/player/components/menu#portal}
* @example
* ```tsx
* <Menu.Root>
* <Menu.Button></Menu.Button>
* <Menu.Portal>
* <Menu.Content placement="top end"></Menu.Content>
* </Menu.Portal>
* </Menu.Root>
* ```
*/
declare const Portal: React.ForwardRefExoticComponent<Omit<PortalProps, "ref"> & React.RefAttributes<HTMLElement>>;
interface ItemsProps extends ReactElementProps<MenuItemsInstance> {
asChild?: boolean;
children?: React.ReactNode;
ref?: React.Ref<HTMLElement>;
}
/**
* Used to group and display settings or arbitrary content in a floating panel.
*
* @docs {@link https://www.vidstack.io/docs/player/components/menu/menu}
* @example
* ```tsx
* <Menu.Root>
* <Menu.Button></Menu.Button>
* <Menu.Items placement="top end"></Menu.Items>
* </Menu.Root>
* ```
*/
declare const Items: React.ForwardRefExoticComponent<Omit<ItemsProps, "ref"> & React.RefAttributes<HTMLElement>>;
interface ItemProps extends ReactElementProps<MenuItemInstance> {
asChild?: boolean;
children?: React.ReactNode;
ref?: React.Ref<HTMLElement>;
}
/**
* Represents a specific option or action, typically displayed as a text label or icon, which
* users can select to access or perform a particular function or view related content.
*
* @docs {@link https://www.vidstack.io/docs/player/components/menu/menu}
* @example
* ```tsx
* <Menu.Root>
* <Menu.Button></Menu.Button>
* <Menu.Content placement="top end">
* <Menu.Item></Menu.Item>
* </Menu.Content>
* </Menu.Root>
* ```
*/
declare const Item: React.ForwardRefExoticComponent<Omit<ItemProps, "ref"> & React.RefAttributes<HTMLElement>>;
declare const menu_d_Button: typeof Button;
type menu_d_ButtonProps = ButtonProps;
declare const menu_d_Item: typeof Item;
type menu_d_ItemProps = ItemProps;
declare const menu_d_Items: typeof Items;
type menu_d_ItemsProps = ItemsProps;
declare const menu_d_Portal: typeof Portal;
type menu_d_PortalProps = PortalProps;
declare namespace menu_d {
export { menu_d_Button as Button, Items as Content, menu_d_Item as Item, menu_d_Items as Items, menu_d_Portal as Portal, Item$1 as Radio, Root$3 as RadioGroup, Root$2 as Root };
export type { menu_d_ButtonProps as ButtonProps, ItemsProps as ContentProps, menu_d_ItemProps as ItemProps, menu_d_ItemsProps as ItemsProps, menu_d_PortalProps as PortalProps, RootProps$3 as RadioGroupProps, ItemProps$1 as RadioProps, RootProps$2 as RootProps };
}
interface TitleProps extends PrimitivePropsWithRef<'span'> {
}
/**
* This component is used to load and display the current media title.
*
* @docs {@link https://www.vidstack.io/docs/player/components/display/title}
* @example
* ```tsx
* <Title />
* ```
*/
declare const Title: React.ForwardRefExoticComponent<Omit<TitleProps, "ref"> & React.RefAttributes<HTMLElement>>;
interface ChapterTitleProps extends PrimitivePropsWithRef<'span'> {
/**
* Specify text to be displayed when no chapter title is available.
*/
defaultText?: string;
}
/**
* This component is used to load and display the current chapter title based on the text tracks
* provided.
*
* @docs {@link https://www.vidstack.io/docs/player/components/display/chapter-title}
* @example
* ```tsx
* <ChapterTitle />
* ```
*/
declare const ChapterTitle: React.ForwardRefExoticComponent<Omit<ChapterTitleProps, "ref"> & React.RefAttributes<HTMLElement>>;
interface GestureProps extends ReactElementProps<GestureInstance> {
asChild?: boolean;
children?: React.ReactNode;
ref?: React.Ref<GestureInstance>;
}
/**
* This component enables actions to be performed on the media based on user gestures.
*
* @docs {@link https://www.vidstack.io/docs/player/components/media/gesture}
* @example
* ```tsx
* <Gesture event="pointerup" action="toggle:paused" />
* <Gesture event="dblpointerup" action="toggle:fullscreen" />
* ```
*/
declare const Gesture: React.ForwardRefExoticComponent<Omit<GestureProps, "ref"> & React.RefAttributes<GestureInstance>>;
interface CaptionsProps extends ReactElementProps<CaptionsInstance> {
asChild?: boolean;
children?: React.ReactNode;
ref?: React.Ref<CaptionsInstance>;
}
/**
* Renders and displays captions/subtitles. This will be an overlay for video and a simple
* captions box for audio.
*
* @docs {@link https://www.vidstack.io/docs/player/components/display/captions}
* @example
* ```tsx
* <Captions />
* ```
*/
declare const Captions: React.ForwardRefExoticComponent<Omit<CaptionsProps, "ref"> & React.RefAttributes<CaptionsInstance>>;
interface PosterProps extends ReactElementProps<PosterInstance, HTMLImageElement> {
alt?: string;
asChild?: boolean;
children?: React.ReactNode;
ref?: React.Ref<HT