mediasfu-reactjs
Version:
MediaSFU Prebuilt ReactJS SDK - Compatible with React 18 & 19, TypeScript & JavaScript
76 lines • 3.33 kB
TypeScript
import React from "react";
import { RespondToWaitingType } from "../../methods/waitingMethods/respondToWaiting";
import "./WaitingRoomModal.css";
import { WaitingRoomParticipant } from "../../@types/types";
import { Socket } from "socket.io-client";
import { ModalRenderMode } from "../menuComponents/MenuModal";
export interface WaitingRoomModalParameters {
filteredWaitingRoomList: WaitingRoomParticipant[];
getUpdatedAllParams: () => WaitingRoomModalParameters;
[key: string]: any;
}
export interface WaitingRoomModalOptions {
isWaitingModalVisible: boolean;
onWaitingRoomClose: () => void;
waitingRoomCounter: number;
onWaitingRoomFilterChange: (filter: string) => void;
waitingRoomList: WaitingRoomParticipant[];
updateWaitingList: (updatedList: WaitingRoomParticipant[]) => void;
roomName: string;
socket: Socket;
position?: string;
backgroundColor?: string;
parameters: WaitingRoomModalParameters;
/** Theme control - whether dark mode is active */
isDarkMode?: boolean;
/** Enable glassmorphism effects (modern UI) */
enableGlassmorphism?: boolean;
/** Render mode: modal (default overlay), sidebar (inline for desktop), inline (no wrapper) */
renderMode?: ModalRenderMode;
onWaitingRoomItemPress?: RespondToWaitingType;
title?: React.ReactNode;
overlayProps?: React.HTMLAttributes<HTMLDivElement>;
contentProps?: React.HTMLAttributes<HTMLDivElement>;
headerProps?: React.HTMLAttributes<HTMLDivElement>;
titleProps?: React.HTMLAttributes<HTMLDivElement>;
badgeWrapperProps?: React.HTMLAttributes<HTMLDivElement>;
badgeProps?: React.HTMLAttributes<HTMLSpanElement>;
closeButtonProps?: React.ButtonHTMLAttributes<HTMLButtonElement>;
closeIconComponent?: React.ReactNode;
bodyProps?: React.HTMLAttributes<HTMLDivElement>;
searchWrapperProps?: React.HTMLAttributes<HTMLDivElement>;
searchInputProps?: React.InputHTMLAttributes<HTMLInputElement>;
waitingListProps?: React.HTMLAttributes<HTMLDivElement>;
participantRowProps?: React.HTMLAttributes<HTMLDivElement>;
acceptButtonProps?: React.ButtonHTMLAttributes<HTMLButtonElement>;
rejectButtonProps?: React.ButtonHTMLAttributes<HTMLButtonElement>;
acceptIconComponent?: React.ReactNode;
rejectIconComponent?: React.ReactNode;
emptyState?: React.ReactNode | ((context: {
counter: number;
}) => React.ReactNode);
renderHeader?: (options: {
defaultHeader: React.ReactNode;
counter: number;
onClose: () => void;
}) => React.ReactNode;
renderSearch?: (options: {
defaultSearch: React.ReactNode;
onFilter: (value: string) => void;
}) => React.ReactNode;
renderParticipant?: (options: {
participant: WaitingRoomParticipant;
index: number;
defaultParticipant: React.ReactNode;
handleAccept: () => void;
handleReject: () => void;
}) => React.ReactNode;
renderBody?: (options: {
defaultBody: React.ReactNode;
counter: number;
}) => React.ReactNode;
}
export type WaitingRoomModalType = (options: WaitingRoomModalOptions) => React.JSX.Element;
declare const WaitingRoomModal: React.FC<WaitingRoomModalOptions>;
export default WaitingRoomModal;
//# sourceMappingURL=WaitingModal.d.ts.map