import type { ForwardedRef } from "react"; import React, { forwardRef, useState } from "react"; import Loader from "./loader"; import clsx from "clsx"; export interface ButtonProps { type?: "button" | "submit" | "reset"; className?: string; icon?: React.ReactNode; children?: React.ReactNode; loader?: boolean; disabled?: boolean; onClick?: (e: React.MouseEvent) => Promise | void; } const Button = forwardRef( (props: ButtonProps, ref: ForwardedRef) => { const [loading, setLoading] = useState(false); const onClick = (e: React.MouseEvent) => { if (props.loader == true) setLoading(true); try { void Promise.resolve(props.onClick?.(e)).then(); } catch (e) { setLoading(false); } }; return ( ); } ); Button.displayName = "Button"; export default Button;