'use client';
import { HTMLProps, useEffect, useRef } from 'react';
import { useFormStatus } from 'react-dom';
import Spinner, { SpinnerColor } from './Spinner';
import { clsx } from 'clsx/lite';
import { toastSuccess } from '@/toast';
interface Props extends HTMLProps {
icon?: JSX.Element
styleAsLink?: boolean
spinnerColor?: SpinnerColor
onFormSubmitToastMessage?: string
}
export default function SubmitButtonWithStatus({
icon,
styleAsLink,
spinnerColor,
onFormSubmitToastMessage,
children,
disabled,
className,
type: _type,
...buttonProps
}: Props) {
const { pending } = useFormStatus();
const pendingPrevious = useRef(pending);
useEffect(() => {
if (
pendingPrevious.current &&
!pending &&
onFormSubmitToastMessage
) {
toastSuccess(onFormSubmitToastMessage);
}
pendingPrevious.current = pending;
}, [pending, onFormSubmitToastMessage]);
return (
);
};