xref: /MusicFree/src/components/base/toast.tsx (revision b882a19d884fffa32f7c8cef31652b909dceaa0f)
1import React from 'react';
2import rpx from '@/utils/rpx';
3import {StyleSheet, Text, View} from 'react-native';
4import Icon from 'react-native-vector-icons/MaterialCommunityIcons';
5import {fontSizeConst} from '@/constants/uiConst';
6
7interface IToastBaseProps {
8    text: string;
9    iconName: string;
10    iconColor: string;
11}
12function ToastBase(props: IToastBaseProps) {
13    const {text, iconName, iconColor} = props;
14    return (
15        <View style={styles.toastBasic}>
16            <Icon style={styles.icon} name={iconName} color={iconColor} />
17            <Text style={styles.text}>{text}</Text>
18        </View>
19    );
20}
21
22const toastConfig = {
23    success: ({text1}: any) => (
24        <ToastBase text={text1} iconName="check-circle" iconColor="#457236" />
25    ),
26    warn: ({text1}: any) => (
27        <ToastBase text={text1} iconName="alert-circle" iconColor="#de7622" />
28    ),
29};
30
31export default toastConfig;
32
33const styles = StyleSheet.create({
34    toastBasic: {
35        width: rpx(600),
36        height: rpx(84),
37        borderRadius: rpx(48),
38        backgroundColor: '#fbeee2',
39        flexDirection: 'row',
40        alignItems: 'center',
41        paddingRight: fontSizeConst.content,
42    },
43    text: {
44        fontSize: fontSizeConst.content,
45        includeFontPadding: false,
46        marginLeft: fontSizeConst.tag,
47        color: '#333333',
48    },
49    icon: {
50        fontSize: fontSizeConst.appbar,
51        includeFontPadding: false,
52        marginLeft: fontSizeConst.content,
53    },
54});
55