31 lines
772 B
TypeScript
31 lines
772 B
TypeScript
import { Button } from "@basango/ui/components/button";
|
|
import { Spinner } from "@basango/ui/components/spinner";
|
|
import { cn } from "@basango/ui/lib/utils";
|
|
import * as React from "react";
|
|
|
|
export function SubmitButton({
|
|
children,
|
|
isSubmitting,
|
|
disabled,
|
|
...props
|
|
}: {
|
|
children: React.ReactNode;
|
|
isSubmitting: boolean;
|
|
disabled?: boolean;
|
|
} & React.ComponentProps<"button">) {
|
|
return (
|
|
<Button
|
|
disabled={isSubmitting || disabled}
|
|
{...props}
|
|
className={cn("relative", props.className)}
|
|
>
|
|
<span className={cn(isSubmitting && "invisible")}>{children}</span>
|
|
{isSubmitting && (
|
|
<div className="absolute inset-0 flex items-center justify-center">
|
|
<Spinner />
|
|
</div>
|
|
)}
|
|
</Button>
|
|
);
|
|
}
|