xref: /MusicFree/src/components/base/toast.tsx (revision ef714860d2ba5fac469a96d1c94e8bd97275738c)
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    },
42    text: {
43        fontSize: fontSizeConst.content,
44        includeFontPadding: false,
45        marginLeft: fontSizeConst.tag,
46        color: '#333333',
47    },
48    icon: {
49        fontSize: fontSizeConst.appbar,
50        includeFontPadding: false,
51        marginLeft: fontSizeConst.content,
52    },
53});
54