UNPKG

@cometchat/chat-uikit-react-native

Version:

Ready-to-use Chat UI Components for React Native

71 lines 2.69 kB
import React, { useMemo } from "react"; import { StyleSheet, Text, TouchableOpacity, View } from "react-native"; import { useTheme } from "../../theme"; import { localize } from "../../shared"; import { deepMerge } from "../../shared/helper/helperFunctions"; /** * Component representing a meet call bubble. * * @param {CometChatMeetCallBubbleInterface} props - Component properties. * @returns {JSX.Element} The rendered component. */ export const CometChatMeetCallBubble = (props) => { const { icon, titleText, subTitleText, buttonText, onClick, style } = props; return (<View style={style?.containerStyle}> {/* Row container for icon and texts */} <View style={styles.row}> <View style={style?.iconContainerStyle}>{icon}</View> <View style={styles.textContainer}> <Text style={style?.titleStyle}>{titleText}</Text> <Text style={style?.subtitleStyle}>{subTitleText}</Text> </View> </View> {/* Divider */} <View style={style?.dividerStyle}/> {/* Action button */} <TouchableOpacity style={style?.buttonStyle} onPress={onClick}> <Text style={style?.buttonTextStyle}>{buttonText}</Text> </TouchableOpacity> </View>); }; /** * Component representing a call action bubble. * * This component displays a call action with an icon and text. * It differentiates styles if the call is missed. * * @param {CometChatUserCallBubbleInterface} props - Component properties. * @returns {JSX.Element} The rendered component. */ export const CometChatCallActionBubble = (props) => { const { titleText, icon, style } = props; const theme = useTheme(); // Merge default theme styles with optional style overrides const callActionBubbleStyles = useMemo(() => { return deepMerge(theme.messageListStyles.callActionBubbleStyles, style ?? {}); }, [theme.messageListStyles.callActionBubbleStyles, style]); return (<View style={{ justifyContent: "center", alignItems: "center" }}> <View style={titleText === localize("MISSED_CALL") ? callActionBubbleStyles.missedCallContainerStyle : callActionBubbleStyles.containerStyle}> {icon} <Text style={titleText === localize("MISSED_CALL") ? callActionBubbleStyles.missedCallTextStyle : callActionBubbleStyles.textStyle}> {titleText} </Text> </View> </View>); }; const styles = StyleSheet.create({ row: { flexDirection: "row", alignItems: "center", marginBottom: 16, gap: 8, }, textContainer: { gap: 4, }, }); //# sourceMappingURL=CometChatCallBubble.js.map