import { ButtonProps } from "@/Components/ui/button"

type IButtonTypes = ButtonProps['variant']

type IButtonSizes = "xs" | "sm" | "lg" | "xlg" | "default" | "icon" | null | undefined

interface IButtonClassProps {
  size?: string | null
  type?: IButtonTypes
  variant?: IButtonTypes
  className?: string
  defaultClassName?: string
}

interface IButtonProps extends IButtonClassProps {
  testId?: string
  onClick?: (e: React.MouseEvent<HTMLButtonElement | HTMLAnchorElement, MouseEvent>) => void
  onSubmit?: (e?: React.MouseEvent<HTMLButtonElement | HTMLAnchorElement, MouseEvent>) => unknown
  disabled?: boolean
  children?: React.ReactNode[] | React.ReactNode
  label?: string
  href?: string
  target?: string
  asChild?: boolean
}

export type {
  IButtonSizes,
  IButtonClassProps,
  IButtonProps
}
