import clsx from "clsx"; import { cloneElement, ElementType, isValidElement } from "react"; import EXTERNAL_LINK_PROPS from "../../util/externalLinkProps"; import StyledButton from "./StyledButton"; import { ButtonProps, scales, variants } from "./types"; const Button = (props: ButtonProps): JSX.Element => { const { startIcon, endIcon, external, className, isLoading, disabled, children, ...rest } = props; const internalProps = external ? EXTERNAL_LINK_PROPS : {}; const isDisabled = isLoading || disabled; return ( <> {isValidElement(startIcon) && cloneElement(startIcon, { // @ts-ignore mr: "0.5rem", })} {children} {isValidElement(endIcon) && cloneElement(endIcon, { // @ts-ignore ml: "0.5rem", })} ); }; Button.defaultProps = { isLoading: false, external: false, variant: variants.PRIMARY, scale: scales.MD, disabled: false, }; export default Button;