import type { FormikHelpers } from 'formik'; import { Form, Formik } from 'formik'; import { useState } from 'react'; import tw from 'twin.macro'; import { object, string } from 'yup'; import createNest from '@/api/admin/nests/createNest'; import getNests from '@/api/admin/nests/getNests'; import { Button } from '@/components/elements/button'; import { Size, Variant } from '@/components/elements/button/types'; import Field from '@/components/elements/Field'; import FlashMessageRender from '@/components/FlashMessageRender'; import Modal from '@/components/elements/Modal'; import useFlash from '@/plugins/useFlash'; interface Values { name: string; description: string; } const schema = object().shape({ name: string().required('A nest name must be provided.').max(32, 'Nest name must not exceed 32 characters.'), description: string().max(255, 'Nest description must not exceed 255 characters.'), }); export default () => { const [visible, setVisible] = useState(false); const { clearFlashes, clearAndAddHttpError } = useFlash(); const { mutate } = getNests(); const submit = ({ name, description }: Values, { setSubmitting }: FormikHelpers) => { clearFlashes('nest:create'); setSubmitting(true); createNest(name, description) .then(async nest => { await mutate(data => ({ ...data!, items: data!.items.concat(nest) }), false); setVisible(false); }) .catch(error => { clearAndAddHttpError({ key: 'nest:create', error }); setSubmitting(false); }); }; return ( <> {({ isSubmitting, resetForm }) => ( { resetForm(); setVisible(false); }} >

New Nest

setVisible(false)} > Cancel
)}
); };