import { Paper } from '@material-ui/core' import { makeStyles } from '@material-ui/core/styles' import classnames from 'classnames' import React, { memo } from 'react' import { MainStatus } from 'src/components/Status' import { ActionButton } from 'src/components/buttons' import { H3 } from 'src/components/typography' import { ReactComponent as AuthorizeReversedIcon } from 'src/styling/icons/button/authorize/white.svg' import { ReactComponent as AuthorizeIcon } from 'src/styling/icons/button/authorize/zodiac.svg' import { ReactComponent as RejectReversedIcon } from 'src/styling/icons/button/cancel/white.svg' import { ReactComponent as RejectIcon } from 'src/styling/icons/button/cancel/zodiac.svg' import { ReactComponent as EditReversedIcon } from 'src/styling/icons/button/edit/white.svg' import { ReactComponent as EditIcon } from 'src/styling/icons/button/edit/zodiac.svg' import { propertyCardStyles } from './PropertyCard.styles' const useStyles = makeStyles(propertyCardStyles) const OVERRIDE_PENDING = 'automatic' const OVERRIDE_AUTHORIZED = 'verified' const OVERRIDE_REJECTED = 'blocked' const PropertyCard = memo( ({ className, contentClassName, title, state, authorize, reject, edit, confirm, isEditing, formName, children }) => { const classes = useStyles() const label1ClassNames = { [classes.label1]: true, [classes.label1Pending]: state === OVERRIDE_PENDING, [classes.label1Rejected]: state === OVERRIDE_REJECTED, [classes.label1Accepted]: state === OVERRIDE_AUTHORIZED } const AuthorizeButton = () => ( authorize()}> Authorize ) const RejectButton = () => ( reject()}> Reject ) const EditButton = () => ( edit()}> Edit ) const ConfirmButton = () => ( Confirm ) const authorized = state === OVERRIDE_PENDING ? { label: 'Pending', type: 'neutral' } : state === OVERRIDE_REJECTED ? { label: 'Rejected', type: 'error' } : { label: 'Accepted', type: 'success' } return ( {title} {state && ( )} {children} {authorize && state !== OVERRIDE_AUTHORIZED && AuthorizeButton()} {reject && state !== OVERRIDE_REJECTED && RejectButton()} {edit && !isEditing && EditButton()} {confirm && isEditing && ConfirmButton()} ) } ) export { PropertyCard, OVERRIDE_PENDING, OVERRIDE_AUTHORIZED, OVERRIDE_REJECTED }