import * as React from 'react'; import { DistributiveOmit, OverridableStringUnion } from '@mui/types'; import { SxProps } from '@mui/system'; import { Theme } from '../styles'; import { ExtendButtonBase, ExtendButtonBaseTypeMap } from '../ButtonBase'; import { OverrideProps, OverridableComponent, OverridableTypeMap } from '../OverridableComponent'; import { ButtonClasses } from './buttonClasses'; export interface ButtonPropsVariantOverrides {} export interface ButtonPropsColorOverrides {} export interface ButtonPropsSizeOverrides {} export interface ButtonOwnProps { /** * The content of the component */ children?: React.ReactNode; } export type ButtonTypeMap< AdditionalProps = {}, RootComponent extends React.ElementType = 'button', > = ExtendButtonBaseTypeMap<{ props: AdditionalProps & ButtonOwnProps; defaultComponent: RootComponent; }>; /** * Utility to create component types that inherit props from ButtonBase. * This component has an additional overload if the `href` prop is set which * chan make extension quite tricky */ export interface ExtendButtonTypeMap { props: TypeMap['props'] & (TypeMap['props'] extends { classes?: Record } ? DistributiveOmit : ButtonTypeMap['props']); defaultComponent: TypeMap['defaultComponent']; } export type ExtendButton = (( props: { href: string } & OverrideProps, 'a'>, ) => React.JSX.Element) & OverridableComponent>; declare const Button: ExtendButtonBase; export type ButtonProps< RootComponent extends React.ElementType = ButtonTypeMap['defaultComponent'], AdditionalProps = {}, > = OverrideProps, RootComponent> & { component: React.ElementType; }; export default Button;