import React, {FC, ReactElement, ReactText} from 'react'; import PropTypes from 'prop-types'; import {TouchableOpacity, View} from 'react-native'; import {Typography} from '..'; import {useTheme} from '../Theme/theme'; import defaultTheme from '../Theme/defaultTheme'; interface ButtonProps { variant?: string; size?: string; style?: Object; children?: ReactElement | ReactText; onPress?: () => void; color?: string; status?: string; accentLeft?: React.ReactNode; accentRight?: React.ReactNode; } const Button: FC = ({ variant, size, children, style, onPress, accentLeft, accentRight, ...other }): JSX.Element => { var theme = useTheme(); if (theme === undefined) { theme = defaultTheme; } const styles = theme.override.KoiButton; let typography; switch (size) { case 'small': typography = 'body2'; break; case 'large': typography = 'h3'; break; default: typography = 'body1'; } return ( {accentLeft && ( {accentLeft} )} {children} {accentRight && ( {accentRight} )} ); }; export default Button; Button.propTypes = { style: PropTypes.object, variant: PropTypes.string.isRequired, size: PropTypes.string.isRequired, accentLeft: PropTypes.node, accentRight: PropTypes.node, }; Button.defaultProps = { variant: 'default', size: 'medium', };