import { makeStyles } from '@material-ui/core/styles' import { Form, Formik, Field } from 'formik' import * as R from 'ramda' import React from 'react' import ErrorMessage from 'src/components/ErrorMessage' import Modal from 'src/components/Modal' import { HelpTooltip } from 'src/components/Tooltip' import { H3, TL1, P } from 'src/components/typography' import * as Yup from 'yup' import { Button } from 'src/components/buttons' import { TextInput, NumberInput } from 'src/components/inputs/formik' import styles from './PromoCodes.styles' const useStyles = makeStyles(styles) const initialValues = { code: '', discount: '' } const validationSchema = Yup.object().shape({ code: Yup.string().required().trim().max(25).matches(/^\S*$/, 'No whitespace allowed'), discount: Yup.number().required().min(0).max(100) }) const PromoCodesModal = ({ showModal, onClose, errorMsg, addCode }) => { const classes = useStyles() const handleAddCode = (code, discount) => { addCode(R.toUpper(code), parseInt(discount)) } return ( <> {showModal && ( { handleAddCode(code, discount) }}> {({ errors }) => (

Promo code name

Define discount rate

This is a percentage discount off of your existing commission rates for a customer entering this code at the machine.

For instance, if you charge 8% commissions, and this code is set for 50%, then you'll instead be charging 4% on transactions using the code.

%
{(errorMsg || !R.isEmpty(errors)) && ( {errorMsg || R.head(R.values(errors))} )}
)}
)} ) } export default PromoCodesModal