'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 ( ); };