// button.tsx // Copyright (C) 2020 Dwayne Harris // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License // along with this program. If not, see . import React, { FC, MouseEventHandler } from 'react' import noop from 'lodash/noop' import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' import { faSpinner } from '@fortawesome/free-solid-svg-icons' import { IconDefinition } from '@fortawesome/fontawesome-common-types' export interface Props { text: string icon?: IconDefinition loading?: boolean color: string backgroundColor: string onClick?: MouseEventHandler } const Button: FC = ({ text, icon, loading, color, backgroundColor, onClick = noop }) => { const isLoading = loading === undefined ? false : loading const content = () => ( <> {icon && } {text} ) return ( ) } export default Button