Documentation Index Fetch the complete documentation index at: https://cometchat-22654f5b-react-uikit-v7.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
AI Integration Quick Reference
{
"component" : "CometChatFullScreenViewer" ,
"package" : "@cometchat/chat-uikit-react" ,
"import" : "import { CometChatFullScreenViewer } from \" @cometchat/chat-uikit-react \" ;" ,
"cssImport" : "import \" @cometchat/chat-uikit-react/css-variables.css \" ;" ,
"description" : "Full-screen modal overlay for viewing images, videos, audio, and file previews with gallery navigation." ,
"cssRootClass" : ".cometchat-fullscreen-viewer" ,
"primaryOutput" : {
"prop" : "onClose" ,
"type" : "() => void"
},
"props" : {
"data" : {
"isOpen" : { "type" : "boolean" , "default" : "false" },
"url" : { "type" : "string" , "default" : "undefined" },
"mediaType" : { "type" : "CometChatFullScreenViewerMediaType" , "default" : "'image'" },
"fileName" : { "type" : "string" , "default" : "undefined" },
"fileSize" : { "type" : "number" , "default" : "undefined" },
"attachments" : { "type" : "CometChatMediaAttachment[]" , "default" : "[]" },
"startIndex" : { "type" : "number" , "default" : "0" },
"senderName" : { "type" : "string" , "default" : "undefined" },
"senderAvatar" : { "type" : "string" , "default" : "undefined" },
"senderStatus" : { "type" : "string" , "default" : "undefined" },
"sentAt" : { "type" : "string" , "default" : "undefined" }
},
"callbacks" : {
"onClose" : "() => void" ,
"onIndexChange" : "(index: number) => void" ,
"onDownload" : "(attachment: CometChatMediaAttachment | string) => void"
},
"behavior" : {
"enablePictureInPicture" : { "type" : "boolean" , "default" : "true" }
}
},
"events" : [],
"sdkListeners" : [],
"types" : {
"CometChatFullScreenViewerMediaType" : "'image' | 'video' | 'audio' | 'file'" ,
"CometChatMediaAttachment" : {
"url" : "string" ,
"type" : "CometChatFullScreenViewerMediaType" ,
"name" : "string | undefined" ,
"size" : "number | undefined"
}
}
}
Where It Fits
CometChatFullScreenViewer is a modal overlay component used by CometChatMessageList when a user taps an image, video, audio, or file bubble. It supports single-media mode and gallery mode with prev/next navigation.
import { useState } from "react" ;
import { CometChatFullScreenViewer } from "@cometchat/chat-uikit-react" ;
import "@cometchat/chat-uikit-react/css-variables.css" ;
function ChatWithViewer () {
const [ isOpen , setIsOpen ] = useState ( false );
return (
< div >
< button onClick = { () => setIsOpen ( true ) } > View Image </ button >
< CometChatFullScreenViewer.Root
isOpen = { isOpen }
onClose = { () => setIsOpen ( false ) }
url = "https://example.com/photo.jpg"
mediaType = "image"
senderName = "John Doe"
senderAvatar = "https://example.com/avatar.jpg"
sentAt = "Today at 2:30 PM"
/>
</ div >
);
}
Minimal Render
import { CometChatFullScreenViewer } from "@cometchat/chat-uikit-react" ;
import "@cometchat/chat-uikit-react/css-variables.css" ;
function ViewerDemo () {
return (
< CometChatFullScreenViewer.Root
isOpen = { true }
onClose = { () => {} }
url = "https://example.com/photo.jpg"
/>
);
}
Root CSS class: .cometchat-fullscreen-viewer
The viewer supports four media types:
Type Renders Controls image<img> with box-shadowNone (view only) video<video> with native controlsPlay/pause, seek, fullscreen audioAudio icon + <audio> with native controls Play/pause, seek fileFile icon + extension badge + download button Download link
// Video
< CometChatFullScreenViewer.Root
isOpen = { true }
onClose = { handleClose }
url = "https://example.com/video.mp4"
mediaType = "video"
fileName = "meeting.mp4"
fileSize = { 15728640 }
/>
// File preview
< CometChatFullScreenViewer.Root
isOpen = { true }
onClose = { handleClose }
url = "https://example.com/report.pdf"
mediaType = "file"
fileName = "quarterly-report.pdf"
fileSize = { 2097152 }
/>
Gallery Mode
Pass an attachments array to enable gallery navigation with prev/next buttons and keyboard arrow keys.
import { CometChatFullScreenViewer } from "@cometchat/chat-uikit-react" ;
import type { CometChatMediaAttachment } from "@cometchat/chat-uikit-react" ;
const attachments : CometChatMediaAttachment [] = [
{ url: "https://example.com/1.jpg" , type: "image" , name: "photo-1.jpg" },
{ url: "https://example.com/2.jpg" , type: "image" , name: "photo-2.jpg" },
{ url: "https://example.com/clip.mp4" , type: "video" , name: "clip.mp4" },
];
< CometChatFullScreenViewer.Root
isOpen = { true }
onClose = { handleClose }
attachments = { attachments }
startIndex = { 0 }
senderName = "Team Chat"
onIndexChange = { ( index ) => console . log ( "Viewing:" , index ) }
onDownload = { ( attachment ) => console . log ( "Download:" , attachment ) }
/>
Navigation stops at boundaries — prev is disabled at index 0, next is disabled at the last index.
Actions and Events
Callback Props
onClose
Fires when the viewer requests to close (close button, Escape key).
< CometChatFullScreenViewer.Root
isOpen = { isOpen }
onClose = { () => setIsOpen ( false ) }
url = "https://example.com/photo.jpg"
/>
onIndexChange
Fires when the gallery index changes via navigation.
< CometChatFullScreenViewer.Root
isOpen = { true }
onClose = { handleClose }
attachments = { attachments }
onIndexChange = { ( index ) => console . log ( "Now viewing index:" , index ) }
/>
onDownload
Fires when the download button is clicked. Receives the current attachment or URL.
< CometChatFullScreenViewer.Root
isOpen = { true }
onClose = { handleClose }
url = "https://example.com/photo.jpg"
onDownload = { ( url ) => window . open ( url as string ) }
/>
Common Patterns
Image viewer with sender info
< CometChatFullScreenViewer.Root
isOpen = { isOpen }
onClose = { () => setIsOpen ( false ) }
url = { imageUrl }
mediaType = "image"
senderName = "Alice"
senderAvatar = { avatarUrl }
senderStatus = "Online"
sentAt = "Today at 3:15 PM"
/>
Minimal viewer (no sender info)
< CometChatFullScreenViewer.Root
isOpen = { isOpen }
onClose = { () => setIsOpen ( false ) }
url = { imageUrl }
/>
File download
< CometChatFullScreenViewer.Root
isOpen = { isOpen }
onClose = { () => setIsOpen ( false ) }
url = { fileUrl }
mediaType = "file"
fileName = "document.pdf"
fileSize = { 1048576 }
onDownload = { ( url ) => triggerDownload ( url as string ) }
/>
CSS Architecture
The component uses CSS custom properties (design tokens) defined in @cometchat/chat-uikit-react/css-variables.css. The cascade:
Global tokens set on the .cometchat root wrapper.
Component CSS (.cometchat-fullscreen-viewer) consumes these tokens via var().
Overrides target .cometchat-fullscreen-viewer descendant selectors.
Key Selectors
Target Selector Root overlay .cometchat-fullscreen-viewerHeader bar .cometchat-fullscreen-viewer__headerHeader left .cometchat-fullscreen-viewer__header-leftHeader center .cometchat-fullscreen-viewer__header-centerHeader right .cometchat-fullscreen-viewer__header-rightSender info .cometchat-fullscreen-viewer__sender-infoSender name .cometchat-fullscreen-viewer__sender-nameAvatar .cometchat-fullscreen-viewer__avatarFile info .cometchat-fullscreen-viewer__file-info-headerGallery index .cometchat-fullscreen-viewer__index-displayClose button .cometchat-fullscreen-viewer__close-btnBody .cometchat-fullscreen-viewer__bodyImage .cometchat-fullscreen-viewer__body-imageVideo .cometchat-fullscreen-viewer__body-videoAudio container .cometchat-fullscreen-viewer__audio-containerFile preview .cometchat-fullscreen-viewer__file-previewNav prev .cometchat-fullscreen-viewer__nav-button--prevNav next .cometchat-fullscreen-viewer__nav-button--nextError state .cometchat-fullscreen-viewer__error-state
Customization Matrix
What to change Where Property/API Example Handle close Component props onCloseonClose={() => setOpen(false)}Set media type Component props mediaTypemediaType="video"Enable gallery Component props attachmentsattachments={[...]}Track navigation Component props onIndexChangeonIndexChange={(i) => ...}Handle download Component props onDownloadonDownload={(a) => ...}Change colors, fonts Global CSS .cometchat-fullscreen-viewerSee selectors above
Props
All props are optional unless noted.
isOpen
Whether the viewer is open. Required.
onClose
Callback when the viewer requests to close. Required.
url
Media URL (single mode).
Type stringDefault undefined
Type of media to display.
Type 'image' | 'video' | 'audio' | 'file'Default 'image'
fileName
File name displayed in header and file preview.
Type stringDefault undefined
fileSize
File size in bytes.
Type numberDefault undefined
attachments
Array of media attachments for gallery mode.
Type CometChatMediaAttachment[]Default []
interface CometChatMediaAttachment {
url : string ;
type : 'image' | 'video' | 'audio' | 'file' ;
name ?: string ;
size ?: number ;
}
startIndex
Starting index for gallery mode.
senderName
Sender name displayed in header.
Type stringDefault undefined
senderAvatar
Sender avatar URL displayed in header.
Type stringDefault undefined
senderStatus
Sender status text displayed in header.
Type stringDefault undefined
sentAt
Formatted timestamp string displayed in header.
Type stringDefault undefined
onIndexChange
Callback when the gallery index changes.
Type (index: number) => voidDefault undefined
onDownload
Callback when the download button is clicked.
Type (attachment: CometChatMediaAttachment | string) => voidDefault undefined
enablePictureInPicture
Enable Picture-in-Picture for video.
className
Custom CSS class applied to the root element.
Type stringDefault undefined
CSS Selectors
Target Selector Root overlay .cometchat-fullscreen-viewerHeader .cometchat-fullscreen-viewer__headerHeader left .cometchat-fullscreen-viewer__header-leftHeader center .cometchat-fullscreen-viewer__header-centerHeader right .cometchat-fullscreen-viewer__header-rightSender info .cometchat-fullscreen-viewer__sender-infoAvatar .cometchat-fullscreen-viewer__avatarAvatar image .cometchat-fullscreen-viewer__avatar-imageAvatar initials .cometchat-fullscreen-viewer__avatar-initialsSender name .cometchat-fullscreen-viewer__sender-nameSender status .cometchat-fullscreen-viewer__sender-statusSender date .cometchat-fullscreen-viewer__sender-dateFile info header .cometchat-fullscreen-viewer__file-info-headerFile info name .cometchat-fullscreen-viewer__file-info-nameGallery index .cometchat-fullscreen-viewer__index-displayAction button .cometchat-fullscreen-viewer__action-buttonClose icon .cometchat-fullscreen-viewer__close-iconBody .cometchat-fullscreen-viewer__bodyImage .cometchat-fullscreen-viewer__body-imageVideo container .cometchat-fullscreen-viewer__video-containerVideo .cometchat-fullscreen-viewer__body-videoAudio container .cometchat-fullscreen-viewer__audio-containerAudio icon .cometchat-fullscreen-viewer__audio-iconAudio filename .cometchat-fullscreen-viewer__audio-filenameFile preview .cometchat-fullscreen-viewer__file-previewFile icon .cometchat-fullscreen-viewer__file-iconFile extension .cometchat-fullscreen-viewer__file-extensionFile name .cometchat-fullscreen-viewer__file-preview-nameFile size .cometchat-fullscreen-viewer__file-preview-sizeDownload button .cometchat-fullscreen-viewer__download-buttonNav button .cometchat-fullscreen-viewer__nav-buttonNav prev .cometchat-fullscreen-viewer__nav-button--prevNav next .cometchat-fullscreen-viewer__nav-button--nextError state .cometchat-fullscreen-viewer__error-stateError icon .cometchat-fullscreen-viewer__error-iconError text .cometchat-fullscreen-viewer__error-text