import { CSSProperties, ReactElement } from 'react'; import { ButtonProps, ButtonStyleType } from '../button/index.js'; import { SlotClassNames, SlotStyles, HtmlProps } from '../types/slots.types.js'; import { IconContent } from '../types/icon.types.js'; export type ActionButtonsSlots = 'root' | 'submitButton' | 'cancelButton'; /** Text ActionButtons renders of its own, for translating it. */ export interface ActionButtonsLabels { /** The confirming button (default `Save`). */ submit?: ReactElement | number | string; /** The dismissing button (default `Cancel`). */ cancel?: ReactElement | number | string; } export interface ActionButtonsProps extends HtmlProps { onSubmit?: () => void; onClose?: () => void; /** Default `Filled`. */ submitButtonStyle?: ButtonStyleType; /** Default `Primary`; `Error` for a destructive confirm. */ submitButtonColor?: ButtonProps['color']; isSubmitButtonLoading?: boolean; isSubmitButtonDisabled?: boolean; submitButtonIcon?: IconContent; /** Default `Outlined`. */ cancelButtonStyle?: ButtonStyleType; /** Default `Primary`. */ cancelButtonColor?: ButtonProps['color']; isCancelButtonLoading?: boolean; isCancelButtonDisabled?: boolean; cancelButtonIcon?: IconContent; hidePrimaryButton?: boolean; hideSecondaryButton?: boolean; noMargin?: boolean; stackButtons?: boolean; className?: string; style?: CSSProperties; classNames?: SlotClassNames; styles?: SlotStyles; /** Overrides the text ActionButtons renders of its own. Merged per key. */ labels?: ActionButtonsLabels; }