Spaces:
Runtime error
Runtime error
| import type { ForwardedRef } from "react"; | |
| import React, { forwardRef } from "react"; | |
| import Loader from "../components/loader"; | |
| import Ping from "../components/Ping"; | |
| export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> { | |
| className?: string; | |
| icon?: React.ReactNode; | |
| children?: React.ReactNode; | |
| loader?: boolean; | |
| disabled?: boolean; | |
| ping?: boolean; | |
| onClick?: (e: React.MouseEvent<HTMLButtonElement>) => Promise<void> | void; | |
| } | |
| const Button = forwardRef((props: ButtonProps, ref: ForwardedRef<HTMLButtonElement>) => { | |
| const onClick = (e: React.MouseEvent<HTMLButtonElement>) => { | |
| void Promise.resolve(props.onClick?.(e)).then(); | |
| e.preventDefault(); | |
| }; | |
| return ( | |
| <button | |
| ref={ref} | |
| type={props.type} | |
| disabled={props.loader || props.disabled} | |
| className={props.className} | |
| onClick={onClick} | |
| > | |
| {props.ping && <Ping color="white" />} | |
| <div className="flex items-center justify-center gap-x-2.5 px-4 py-1 font-inter text-sm leading-6"> | |
| {props.loader ? <Loader /> : props.children} | |
| </div> | |
| </button> | |
| ); | |
| }); | |
| Button.displayName = "Button"; | |
| export default Button; | |