import * as React from 'react'; import { SlotCommonProps } from '../types/slot'; import { DistributiveOmit, OverridableComponent, OverridableTypeMap, OverrideProps } from '@mui/types'; import { ButtonBaseProps } from '../ButtonBase'; import { ExtendButtonBaseTypeMap } from '../ButtonBase/ButtonBase.types'; export type ButtonVariant = 'filled' | 'outlined' | 'text'; export type ButtonColor = 'primary' | 'error'; export interface ButtonTypeMap

{ props: P & { /** * The color scheme used by the Button * @default 'primary' */ color?: ButtonColor; /** * The style of button to use * @default 'filled' */ variant?: ButtonVariant; } & Omit; defaultComponent: D; } export type ButtonProps = OverrideProps, D>; /** * utility to create component types that inherit props from ButtonBase. * This component has an additional overload if the `href` prop is set which * can 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>;