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 { useWorkspace } from "~/providers/workspace"; import { api } from "~/utils/api"; interface FormValues { name: string; } export function NewWorkspaceForm() { const { closeModal } = useModal(); const { showPopup } = usePopup(); const { switchWorkspace } = useWorkspace(); const { register, handleSubmit } = useForm(); const createWorkspace = api.workspace.create.useMutation({ onSuccess: (values) => { if (values.publicId && values.name) { switchWorkspace({ publicId: values.publicId, name: values.name, description: values.description, slug: values.slug, plan: values.plan, }); closeModal(); } }, onError: () => { showPopup({ header: t`Unable to create workspace`, message: t`Please try again later, or contact customer support.`, icon: "error", }); }, }); useEffect(() => { const nameElement: HTMLElement | null = document.querySelector("#workspace-name"); if (nameElement) nameElement.focus(); }, []); const onSubmit = (values: FormValues) => { createWorkspace.mutate({ name: values.name, }); }; return (

{t`New workspace`}

{ if (e.key === "Enter") { e.preventDefault(); await handleSubmit(onSubmit)(); } }} />
); }