import { ButtonBaseTypeMap, ExtendButtonBaseTypeMap } from "../ButtonBase";
import { Theme } from "../styles";
import { ButtonClasses } from "./buttonClasses";
import SxProps from "@suid/system/sxProps";
import { DistributiveOmit, ElementType, OverridableComponent, OverridableStringUnion, OverridableTypeMap, OverrideProps } from "@suid/types";
import { JSX, JSXElement } from "solid-js";
export interface ButtonPropsVariantOverrides {
}
export interface ButtonPropsColorOverrides {
}
export interface ButtonPropsSizeOverrides {
}
export type ButtonTypeMap
= {
name: "MuiButton";
defaultPropNames: "color" | "disabled" | "disableElevation" | "disableFocusRipple" | "fullWidth" | "size" | "variant";
selfProps: {
/**
* The content of the component.
*/
children?: JSXElement;
/**
* Override or extend the styles applied to the component.
*/
classes?: Partial;
/**
* The color of the component. It supports those theme colors that make sense for this component.
* @default 'primary'
*/
color?: OverridableStringUnion<"inherit" | "primary" | "secondary" | "success" | "error" | "info" | "warning", ButtonPropsColorOverrides>;
/**
* If `true`, the component is disabled.
* @default false
*/
disabled?: boolean;
/**
* If `true`, no elevation is used.
* @default false
*/
disableElevation?: boolean;
/**
* If `true`, the keyboard focus ripple is disabled.
* @default false
*/
disableFocusRipple?: boolean;
/**
* Element placed after the children.
*/
endIcon?: JSXElement;
/**
* If `true`, the button will take up the full width of its container.
* @default false
*/
fullWidth?: boolean;
/**
* The URL to link to when the button is clicked.
* If defined, an `a` element will be used as the root node.
*/
href?: string;
/**
* The size of the component.
* `small` is equivalent to the dense button styling.
* @default 'medium'
*/
size?: OverridableStringUnion<"small" | "medium" | "large", ButtonPropsSizeOverrides>;
/**
* Element placed before the children.
*/
startIcon?: JSXElement;
/**
* The system prop that allows defining system overrides as well as additional CSS styles.
*/
sx?: SxProps;
/**
* The variant to use.
* @default 'text'
*/
variant?: OverridableStringUnion<"text" | "outlined" | "contained", ButtonPropsVariantOverrides>;
};
props: P & ButtonTypeMap["selfProps"] & Omit;
defaultComponent: 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: M["props"] & (M["props"] extends {
classes?: Record;
} ? DistributiveOmit : ButtonTypeMap["props"]);
defaultComponent: M["defaultComponent"];
}
export type ExtendButton = ((props: {
href: string;
} & OverrideProps, "a">) => JSX.Element) & OverridableComponent>;
export type ButtonProps = OverrideProps, D>;
export default ButtonProps;
//# sourceMappingURL=ButtonProps.d.ts.map