import Link from "next/link"; import { t } from "@lingui/core/macro"; import { useEffect } from "react"; import { useForm } from "react-hook-form"; import { HiXMark } from "react-icons/hi2"; import Button from "~/components/Button"; import Input from "~/components/Input"; import { useModal } from "~/providers/modal"; import { usePopup } from "~/providers/popup"; import { api } from "~/utils/api"; interface NewFeedbackFormInput { feedback: string; } export default function FeedbackModal() { const { closeModal } = useModal(); const { showPopup } = usePopup(); const { handleSubmit, setValue, watch, reset } = useForm({ defaultValues: { feedback: "", }, }); const createFeedback = api.feedback.create.useMutation({ onSuccess: async () => { reset(); closeModal(); showPopup({ header: t`Feedback sent`, message: t`Thank you for your feedback!`, icon: "success", }); }, onError: async () => { showPopup({ header: t`Unable to send feedback`, message: t`Please try again later, or contact customer support.`, icon: "error", }); }, }); const onSubmit = (values: NewFeedbackFormInput) => { createFeedback.mutate({ feedback: values.feedback, url: window.location.href, }); }; return (

{t`Feedback`}

setValue("feedback", e.target.value)} contentEditable value={watch("feedback")} className="min-h-[120px]" onKeyDown={async (e) => { e.stopPropagation(); if (e.key === "Enter" && e.shiftKey) { e.preventDefault(); await handleSubmit(onSubmit)(); } if (e.key === "Escape") { closeModal(); } }} />

{t`Need help?`}{" "} {t`Contact us`} {t`, or see our`}{" "} {t`docs`} .

); }