Usage
If the user edits a ticket, there will be a ticket passed as parameter to the TicketUpsertForm so the button will display ‘Edit’ else ‘Create’.
<SubmitButton label={ticket ? "Edit" : "Create"} />Implementation
src/components/form/submit-button.tsx"use client";
import { LucideLoaderCircle } from "lucide-react";
import { useFormStatus } from "react-dom";
import { Button } from "../ui/button";
type SubmitButtonProps = {
label: string;
};
const SubmitButton = ({ label }: SubmitButtonProps) => {
const { pending } = useFormStatus();
return (
<Button disabled={pending} type="submit">
{pending && <LucideLoaderCircle className="h-4 w-4 animate-spin" />}
{label}
</Button>
);
};
export { SubmitButton };