import { ButtonHTMLAttributes, ReactNode } from "react"; import { type VariantProps } from "class-variance-authority"; import { button } from "./Button.styles"; import { TextProps } from "../../"; import { MotionProps } from "framer-motion"; type HTMLAndMotionProps = ButtonHTMLAttributes & MotionProps; export interface ButtonProps extends HTMLAndMotionProps, VariantProps { text?: string; onClick?: (e: any) => void; iconPre?: ReactNode | null; iconPost?: ReactNode | null; linkType?: "Content" | "External"; href?: string; target?: string; textStyle?: TextProps["textStyle"]; motion?: boolean; isLoading?: boolean; disabled?: boolean; loadingState?: any; } export type ButtonVars = ( variant: ButtonProps["variant"], size: ButtonProps["size"], linkType: ButtonProps["linkType"], className: ButtonProps["className"], isLoading: ButtonProps["isLoading"], ) => Record;