import type { MediaItem } from "./mediaItems"; import type { MediaImageViewerLabels } from "./components/MediaImageViewerProps"; import type { MediaVideoPlayerLabels } from "./components/MediaVideoPlayerProps"; import type { MediaAudioPlayerLabels } from "./components/MediaAudioPlayerProps"; import type { MediaDocumentStageLabels, ResolveDocument } from "./components/MediaDocumentStageProps"; /** All copy shown in the lightbox chrome, merged over `defaultMediaViewerLabels`. */ export interface MediaViewerLabels { /** Close (X) button's accessible name and tooltip. */ close: string; /** Copy-link button's accessible name before a link is copied. */ copyLink: string; /** Replaces `copyLink` on the button for `COPIED_FEEDBACK_MS` after copying. */ copied: string; /** Visible "n / total" text in the header; hidden when there's only one item. */ counter: (current: number, total: number) => string; /** Download button's accessible name for non-YouTube items. */ download: string; /** Accessible name of the filmstrip `nav` region. */ filmstrip: string; /** Header kind-pill text for a `doc` item. */ kindDoc: string; /** Header kind-pill text for a generic `file` item. */ kindFile: string; /** Header kind-pill text for a `pdf` item. */ kindPdf: string; /** Header kind-pill text for a `video` item. */ kindVideo: string; /** Header kind-pill text for a `youtube` item. */ kindYoutube: string; /** Header kind-pill text for an `audio` item. */ kindAudio: string; /** Header kind-pill text for a `text` item. */ kindText: string; /** Header kind-pill text for a `spreadsheet` item. */ kindSpreadsheet: string; /** Header kind-pill text for a `presentation` item. */ kindPresentation: string; /** Header kind-pill text for an `archive` item. */ kindArchive: string; /** Accessible name of the next-item nav arrow. */ next: string; /** Accessible name of the external-link button shown for YouTube items. */ openOnYoutube: string; /** @deprecated Never read by MediaViewer; defined but unused. */ photoCount: (count: number) => string; /** @deprecated Never read by MediaViewer; defined but unused. */ videoCount: (count: number) => string; /** @deprecated Never read by MediaViewer; defined but unused. */ documentCount: (count: number) => string; /** @deprecated Never read by MediaViewer; defined but unused. */ youtubeCount: (count: number) => string; /** Accessible name of the previous-item nav arrow. */ previous: string; /** @deprecated Never read by MediaViewer; defined but unused. */ shortcuts: string; /** Screen-reader announcement on navigation, distinct from the visible counter. */ nowShowing: (current: number, total: number) => string; /** Builds the footer's upload date line from an already-formatted date. */ uploadedOn: (date: string) => string; /** iframe `title` for the embedded YouTube player. */ youtubeTitle: string; } export declare const defaultMediaViewerLabels: MediaViewerLabels; /** Props for the full-screen media lightbox — image/video/audio/document gallery with keyboard nav. */ export interface MediaViewerProps { /** Mounts and shows the lightbox modal when true. */ isOpen: boolean; /** Fires from the close button and Modal's own dismiss (Esc, overlay click). */ onClose: () => void; /** The full ordered collection; navigation wraps at both ends. */ items: MediaItem[]; /** Omit for uncontrolled (viewer owns the index, starting at `defaultIndex`); pass to control it. */ index?: number; /** Fires on every navigation in both modes; required to move past `index` when controlled. */ onIndexChange?: (index: number) => void; /** Uncontrolled-mode starting index; ignored once `index` is passed. */ defaultIndex?: number; /** Header heading text; also the fallback for an item with no `name`. */ title: string; /** Required only when `items` can include a pdf/doc/file kind — asserted loudly if missing. */ resolveDocument?: ResolveDocument; /** Overrides for any of `defaultMediaViewerLabels`, merged over the defaults. */ labels?: Partial; /** Passed through to `MediaImageViewer`'s `labels` prop. */ imageLabels?: Partial; /** Passed through to `MediaVideoPlayer`'s `labels` prop. */ videoLabels?: Partial; /** Passed through to `MediaAudioPlayer`'s `labels` prop. */ audioLabels?: Partial; /** Passed through to `MediaDocumentStage`'s `labels` prop. */ documentLabels?: Partial; }