import React from 'react'; import { TouchableOpacity, View, Text, StyleSheet, StyleProp, ViewStyle } from 'react-native'; import { Icon } from 'react-native-elements'; import { useTheme } from './themes'; // Define an interface for the props interface ButtonProps { backgroundColor?: string; buttonTextColor?: string; disabled?: boolean; testID?: string; icon?: { name: string; type: string; color: string; }; title?: string; style?: StyleProp; onPress?: () => void; } export const Button: React.FC = props => { const { colors } = useTheme(); let backgroundColor = props.backgroundColor ?? colors.mainColor; let fontColor = props.buttonTextColor ?? colors.buttonTextColor; if (props.disabled) { backgroundColor = colors.buttonDisabledBackgroundColor; fontColor = colors.buttonDisabledTextColor; } const buttonStyle = { ...styles.button, backgroundColor, borderColor: props.disabled ? colors.buttonDisabledBackgroundColor : 'transparent', }; const textStyle = { ...styles.text, color: fontColor, }; return ( {props.icon && } {props.title && {props.title}} ); }; const styles = StyleSheet.create({ button: { borderWidth: 0.7, minHeight: 45, height: 48, maxHeight: 48, borderRadius: 25, justifyContent: 'center', alignItems: 'center', paddingHorizontal: 16, flexGrow: 1, }, content: { flexDirection: 'row', justifyContent: 'center', alignItems: 'center', }, text: { marginHorizontal: 8, fontSize: 16, fontWeight: '600', }, }); export default Button;