import React from 'react'; import { Button as RNEButton, ButtonProps as RNEButtonProps, } from 'react-native-elements'; import { GestureResponderEvent, StyleProp, ViewStyle } from 'react-native'; import { Text } from './Text'; import { Theme, Spacing } from './styleUtils'; export const Button: React.FC = (props) => { const type = props.type || 'solid'; const buttonStyle: StyleProp = [ props.fill ? Theme.ButtonStyles.fill : null, Theme.ButtonStyles[type], { width: '100%' }, ]; const containerStyle: StyleProp = [ Theme.ButtonStyles.container, props.disabled ? Theme.ButtonStyles.disabled : null, props.margin ? Theme.spacing('margin', props.margin) : null, props.styles, ]; const handleOnPress = (event: GestureResponderEvent) => { if (!props.disabled && props.onPress) { props.onPress(event); } }; return ( {props.title} } style={[buttonStyle]} icon={props.icon} onPress={handleOnPress} loading={props.loading} /> ); }; interface ButtonProps { title: string; disabled?: boolean; margin?: Spacing; type?: RNEButtonProps['type']; onPress?: RNEButtonProps['onPress']; fill?: boolean; raised?: boolean; loading?: boolean; icon?: RNEButtonProps['icon']; styles?: StyleProp; }