import { AnyString } from "../utils/types.js";
import "../utils/index.js";
import { ThemingProps } from "../theme/types.js";
import { SystemProps } from "../system/system.js";
import "../system/index.js";
import { IconProp, IconProps } from "../icon/icon.types.js";
import "../icon/index.js";
import { JSX } from "react";

//#region src/button/button.types.d.ts
type ButtonProps = SystemProps & ThemingProps<'Button'> & {
  /** Deprecated. Please use variant instead. @deprecated  */colorScheme?: string; /** Icon for the drop-down element. @default falAngleDown */
  dropDownIcon?: IconProp; /** Icon that replaces any other content. */
  icon?: IconProp | JSX.Element; /** Socket displaying icon on the left side. */
  iconLeft?: IconProp | JSX.Element; /** Socket displaying icon on the right side. */
  iconRight?: IconProp | JSX.Element; /** Adds an active class name for further handling. */
  isActive?: boolean; /** Adds an drop down pointer to the left. */
  isDropDown?: boolean; /** Adds box shadow style. @default false */
  isElevated?: boolean; /** Makes the button take full width of the container. @deprecated */
  isFullWidth?: boolean; /** Replaces content with a loading spinner. @default false */
  isLoading?: boolean; /** Rounds the borders. @default false */
  isRound?: boolean; /** Separates right icon from the content. @deprecated */
  isSplit?: boolean; /** Modifies Button style and content based on the given state. */
  state?: ButtonState; /** Object definition of styles and content for each state. */
  stateMapping?: ButtonStateMapping; /** Socket placing text as alternative to children. */
  text?: React.ReactNode;
};
type ButtonState = 'error' | 'idle' | 'loading' | 'success' | AnyString;
type ButtonStateMapping = Record<string, SystemProps & {
  variant: ButtonProps['variant'];
  iconProps: IconProps;
}>;
/** Narrower prop definition for IconButton component */
type IconButtonProps = Omit<ButtonProps, 'iconLeft' | 'iconRight' | 'text'>;
//#endregion
export { ButtonProps, ButtonState, ButtonStateMapping, IconButtonProps };

//# sourceMappingURL=button.types.d.ts.map