UNPKG

@cometchat/chat-uikit-react-native

Version:

Ready-to-use Chat UI Components for React Native

205 lines (199 loc) 8.86 kB
import { getCallButtonStyle } from "../../calls/CometChatCallButtons/style"; import { getCallLogsItemStyle, getCallLogsStyleLight, getCallLogsStyleDark } from "../../calls/CometChatCallLogs/style"; import { getIncomingCallStyle } from "../../calls/CometChatIncomingCall/style"; import { getOutgoingCallStyle } from "../../calls/CometChatOutgoingCall"; import { getConversationStyleDark, getConversationStyleLight, } from "../../CometChatConversations/style"; import { getGroupMemberStyleDark, getGroupMemberStyleLight, } from "../../CometChatGroupMembers/style"; import { getGroupListStyleLight, getUserGroupStyleDark } from "../../CometChatGroups/GroupsStyle"; import { getComposerStyle } from "../../CometChatMessageComposer/styles"; import { getMessageHeaderStyle } from "../../CometChatMessageHeader/styles"; import { getMessageInormationListStyleDark, getMessageInormationListStyleLight, } from "../../CometChatMessageInformation/styles"; import { getMessageListStylesDark, getMessageListStylesLight, } from "../../CometChatMessageList/style"; import { getThreadHeaderStyleDark, getThreadHeaderStyleLight, } from "../../CometChatThreadHeader/style"; import { getUserListStyleDark, getUserListStyleLight } from "../../CometChatUsers/style"; import { getAvatarStyle } from "../../shared/views/CometChatAvatar/styles"; import { getBadgeStyle } from "../../shared/views/CometChatBadge"; import { getConfirmDialogStyleDark, getConfirmDialogStyleLight, } from "../../shared/views/CometChatConfirmDialog/style"; import { getDateStyleDark, getDateStyleLight } from "../../shared/views/CometChatDate"; import { getQuickReactionStyleDark, getQuickReactionStyleLight, } from "../../shared/views/CometChatQuickReactions/QuickReactionsStyle"; import { getReactionListStyleDark, getReactionListStyleLight, } from "../../shared/views/CometChatReactionList/ReactionListStyle"; import { getMessageReceiptStyle } from "../../shared/views/CometChatReceipt/style"; import { getStatusIndicatorStyles } from "../../shared/views/CometChatStatusIndicator/styles"; import { getMentionsListStyleDark, getMentionsListStyleLight, } from "../../shared/views/CometChatSuggestionList/style"; import { ActionSheetStyle, CometChatTheme } from "../type"; import { defaultColorDark } from "./color/dark"; import { defaultColorLight } from "./color/light"; import { defaultSpacing } from "./spacing"; import { defaultTypography } from "./typography"; import { DeepPartial } from "../../shared/helper/types"; import { getMediaRecorderStyle } from "../../shared/views/CometChatMediaRecorder/style"; import { getDateSeparatorStyleDark, getDateSeparatorStyleLight } from "../../shared/views/CometChatDateSeperator"; const getActionSheetStyle = ( color: CometChatTheme["color"], spacing: CometChatTheme["spacing"], typography: CometChatTheme["typography"] ): ActionSheetStyle => { return { optionsItemStyle: { containerStyle: { paddingVertical: spacing.padding.p3, paddingHorizontal: spacing.padding.p8, backgroundColor: color.background1, flexDirection: "row", alignItems: "center", gap: 5, }, titleStyle: { ...typography.body.regular, color: color.textPrimary, }, iconStyle: { height: 24, width: 24, }, iconContainerStyle: {}, }, }; }; const getAIOptionsStyle = ( color: CometChatTheme["color"], spacing: CometChatTheme["spacing"], typography: CometChatTheme["typography"] ): ActionSheetStyle => { return { optionsItemStyle: { containerStyle: { padding: spacing.padding.p4, backgroundColor: color.background1, flexDirection: "row", alignItems: "center", gap: 5, }, titleStyle: { ...typography.body.regular, color: color.textPrimary, paddingLeft: spacing.padding.p1, }, iconStyle: { height: 24, width: 24, }, iconContainerStyle: {}, }, }; }; export const lightThemeMaker = ( spacing: CometChatTheme["spacing"], color: CometChatTheme["color"], typography: CometChatTheme["typography"] ): DeepPartial<CometChatTheme> => { return { mode:'light', spacing: spacing, color: color, typography: typography, avatarStyle: getAvatarStyle(color, spacing, typography), receiptStyles: getMessageReceiptStyle(color, spacing, typography), statusIndicatorStyle: getStatusIndicatorStyles(color, spacing, typography), badgeStyle: getBadgeStyle(color, spacing, typography), dateStyles: getDateStyleLight(color, spacing, typography), dateSeparatorStyles: getDateSeparatorStyleLight(color, spacing, typography), conversationStyles: getConversationStyleLight(color, spacing, typography), confirmDialogStyles: getConfirmDialogStyleLight(color, spacing, typography), messageHeaderStyles: getMessageHeaderStyle(color, spacing, typography), messageComposerStyles: getComposerStyle(color, spacing, typography), userStyles: getUserListStyleLight(color, spacing, typography), groupStyles: getGroupListStyleLight(color, spacing, typography), groupMemberStyle: getGroupMemberStyleLight(color, spacing, typography), callButtonStyles: getCallButtonStyle(color, spacing, typography), messageListStyles: getMessageListStylesLight(color, spacing, typography), reactionListStyles: getReactionListStyleLight(color, spacing, typography), messageInformationStyles: getMessageInormationListStyleLight(color, spacing, typography), actionSheetStyle: getActionSheetStyle(color, spacing, typography), mentionsListStyle: getMentionsListStyleLight(color, spacing, typography), threadHeaderStyles: getThreadHeaderStyleLight(color, spacing, typography), aiOptionsStyle: getAIOptionsStyle(color, spacing, typography), quickReactionStyle: getQuickReactionStyleLight(color, spacing, typography), outgoingCallStyle: getOutgoingCallStyle(color, spacing, typography), incomingCallStyle: getIncomingCallStyle(color, spacing, typography), callLogsStyles: getCallLogsStyleLight(color, spacing, typography), callLogsItemStyle: getCallLogsItemStyle(color, spacing, typography), mediaRecorderStyle: getMediaRecorderStyle(color, spacing, typography), }; }; export const darkThemeMaker = ( spacing: CometChatTheme["spacing"], color: CometChatTheme["color"], typography: CometChatTheme["typography"] ): DeepPartial<CometChatTheme> => { return { mode:'dark', spacing: spacing, color: color, typography: typography, avatarStyle: getAvatarStyle(color, spacing, typography), receiptStyles: getMessageReceiptStyle(color, spacing, typography), statusIndicatorStyle: getStatusIndicatorStyles(color, spacing, typography), badgeStyle: getBadgeStyle(color, spacing, typography), dateStyles: getDateStyleDark(color, spacing, typography), dateSeparatorStyles: getDateSeparatorStyleDark(color, spacing, typography), conversationStyles: getConversationStyleDark(color, spacing, typography), confirmDialogStyles: getConfirmDialogStyleDark(color, spacing, typography), messageHeaderStyles: getMessageHeaderStyle(color, spacing, typography), messageComposerStyles: getComposerStyle(color, spacing, typography), userStyles: getUserListStyleDark(color, spacing, typography), groupMemberStyle: getGroupMemberStyleDark(color, spacing, typography), groupStyles: getUserGroupStyleDark(color, spacing, typography), callButtonStyles: getCallButtonStyle(color, spacing, typography), messageListStyles: getMessageListStylesDark(color, spacing, typography), reactionListStyles: getReactionListStyleDark(color, spacing, typography), messageInformationStyles: getMessageInormationListStyleDark(color, spacing, typography), actionSheetStyle: getActionSheetStyle(color, spacing, typography), mentionsListStyle: getMentionsListStyleDark(color, spacing, typography), threadHeaderStyles: getThreadHeaderStyleDark(color, spacing, typography), aiOptionsStyle: getAIOptionsStyle(color, spacing, typography), quickReactionStyle: getQuickReactionStyleDark(color, spacing, typography), outgoingCallStyle: getOutgoingCallStyle(color, spacing, typography), incomingCallStyle: getIncomingCallStyle(color, spacing, typography), callLogsStyles: getCallLogsStyleDark(color, spacing, typography), callLogsItemStyle: getCallLogsItemStyle(color, spacing, typography), mediaRecorderStyle: getMediaRecorderStyle(color, spacing, typography), }; }; export const defaultLightTheme: DeepPartial<CometChatTheme> = lightThemeMaker( defaultSpacing, defaultColorLight, defaultTypography ); export const defaultDarkTheme: DeepPartial<CometChatTheme> = darkThemeMaker( defaultSpacing, defaultColorDark, defaultTypography );