// @ts-ignore import React from 'react'; import { useTranslation } from 'react-i18next'; import { Button as NativePaperButton, Text, TouchableRipple } from 'react-native-paper'; import { BUTTON_MODES, BUTTON_TYPES } from '../../constants.native'; import BaseTheme from '../BaseTheme.native'; import { IButtonProps } from '../types'; import styles from './buttonStyles'; export interface IProps extends IButtonProps { color?: string; contentStyle?: Object | undefined; labelStyle?: Object | undefined; style?: Object | undefined; } const Button: React.FC = ({ accessibilityLabel, color: buttonColor, contentStyle, disabled, icon, labelKey, labelStyle, onClick: onPress, style, type }: IProps) => { const { t } = useTranslation(); const { CONTAINED } = BUTTON_MODES; const { DESTRUCTIVE, PRIMARY, SECONDARY, TERTIARY } = BUTTON_TYPES; let buttonLabelStyles; let buttonStyles; let color; let mode; if (type === PRIMARY) { buttonLabelStyles = styles.buttonLabelPrimary; color = BaseTheme.palette.action01; mode = CONTAINED; } else if (type === SECONDARY) { buttonLabelStyles = styles.buttonLabelSecondary; color = BaseTheme.palette.action02; mode = CONTAINED; } else if (type === DESTRUCTIVE) { color = BaseTheme.palette.actionDanger; buttonLabelStyles = styles.buttonLabelDestructive; mode = CONTAINED; } else { color = buttonColor; buttonLabelStyles = styles.buttonLabel; } if (disabled) { buttonLabelStyles = styles.buttonLabelDisabled; buttonStyles = styles.buttonDisabled; } else { buttonStyles = styles.button; } if (type === TERTIARY) { return ( { t(labelKey ?? '') } ); } return ( ); }; export default Button;