UNPKG

vidstack

Version:

Build awesome media experiences on the web.

59 lines (58 loc) 2.2 kB
import { type ReadSignal, type WriteSignal } from 'maverick.js'; import { Component, ComponentInstance, type HTMLCustomElement, type PropDeclarations } from 'maverick.js/element'; import type { MediaKeyShortcut } from '../../core/keyboard/types'; export declare const toggleButtonProps: PropDeclarations<ToggleButtonProps>; /** * 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} * @slot - Used to passing in content for showing pressed and not pressed states. * @example * ```html * <media-toggle-button aria-label="..."> * <svg slot="on">...</svg> * <svg slot="off">...</svg> * </media-toggle-button> * ``` */ export declare class ToggleButton<T extends ToggleButtonAPI = ToggleButtonAPI> extends Component<T> { static el: import("maverick.js/element").CustomElementDefinition<ToggleButtonAPI>; protected _pressed: ReadSignal<boolean> | WriteSignal<boolean>; protected _keyShortcut?: MediaKeyShortcut; constructor(instance: ComponentInstance<T>); /** * Whether the toggle is currently in a `pressed` state. */ get pressed(): boolean; protected onAttach(el: HTMLElement): void; protected onConnect(el: HTMLElement): void; protected _isARIAPressed(): "true" | "false"; protected _onPress(event: Event): void; protected _onMaybePress(event: Event): void; } export interface ToggleButtonAPI { props: ToggleButtonProps; } export interface ToggleButtonProps { /** * Whether the button should be disabled (non-interactive). */ disabled: boolean; /** * Whether the default button appearance should stay visible when elements have been passed inside * it. */ defaultAppearance: boolean; /** * Whether it should start in the on (pressed) state. This prop is only available on the base * `<media-toggle-button>`. */ defaultPressed: boolean; } export interface MediaToggleButtonElement extends HTMLCustomElement<ToggleButton> { } declare global { interface MaverickElements { 'media-toggle-button': MediaToggleButtonElement; } }