import { ButtonTheme, ButtonColors, IconType, VisualSlotType, TooltipPosition, TooltipAlignment, TooltipColors, VisualSize, PillSize, IconFontColor, AnyIconDefinition } from './types'; import { BadgeColor, BadgeTheme, BadgeSize } from './badge'; import { ButtonIconConfig, ButtonBadgeConfig, ButtonSlotConfig, ButtonTooltipConfig } from './buttonConfig'; export type { ButtonIconConfig, ButtonBadgeConfig, ButtonSlotConfig } from './buttonConfig'; /** Alineación del texto en layout `{ var: 'spread' }`. */ export type ButtonSlotSpreadTextAlign = 'left' | 'center' | 'right'; /** * Layout «spread»: slots en extremos; el texto se controla con `textAlign`. * @example `{ var: 'spread', textAlign: 'center' }` */ export type ButtonSlotSpreadLayout = { var: 'spread'; textAlign?: ButtonSlotSpreadTextAlign; }; export type ButtonSlotLayout = 'inline' | ButtonSlotSpreadLayout; /** Objeto listo para footers/popup: texto centrado entre slots. */ export declare const BUTTON_SLOT_SPREAD_CENTER: ButtonSlotSpreadLayout; export declare function isButtonSlotSpreadLayout(layout: ButtonSlotLayout | undefined): layout is ButtonSlotSpreadLayout; export interface InnerButtonProps extends React.HTMLAttributes { className?: string; disabled?: boolean; classNameLabel?: string; /** * Tema visual del botón (`solid` o variante **`icon`** deprecada). * Preferir `solid` y botón solo icono vía `icon` + sin `children`. */ theme?: ButtonTheme; rounded?: boolean; clickable?: boolean; square?: boolean; badgeColor?: BadgeColor; badgeLabel?: string; badgeTheme?: BadgeTheme; badgeSize?: BadgeSize; badgeStroke?: boolean; badgeIcon?: IconType | AnyIconDefinition; badgeIconDuotonePrimary?: IconFontColor; badgeIconDuotoneSecondary?: IconFontColor; badgeIconDuotoneOpacityPrimary?: number; badgeIconDuotoneOpacitySecondary?: number; /** Si es true, muestra un spinner de carga en el badge */ badgeLoading?: boolean; color?: ButtonColors; /** * Icono principal del botón. * Puede ser un string simple (ej: "ImageOutlined"), un ReactElement, o un objeto de configuración completo. * Si se usa como string simple (sin estilos personalizados), funciona sin deprecación. * Si se usa como objeto de configuración, tiene la misma funcionalidad que iconProps. * Para estilos personalizados con props separadas, usar iconProps. */ icon?: VisualSlotType | React.ReactElement | ButtonIconConfig; colorIcon?: IconFontColor; /** @deprecated Usar iconProps.iconDuotonePrimary en su lugar */ iconDuotonePrimary?: IconFontColor; /** @deprecated Usar iconProps.iconDuotoneSecondary en su lugar */ iconDuotoneSecondary?: IconFontColor; /** @deprecated Usar iconProps.iconDuotoneOpacityPrimary en su lugar */ iconDuotoneOpacityPrimary?: number; /** @deprecated Usar iconProps.iconDuotoneOpacitySecondary en su lugar */ iconDuotoneOpacitySecondary?: number; /** * Slot izquierdo del botón. * Puede ser un string simple (ej: "EditOutlined"), un ReactElement, o un objeto de configuración completo. * Si se usa como string simple (sin estilos personalizados), funciona sin deprecación. * Si se usa como objeto de configuración, tiene la misma funcionalidad que leftSlotProps. * Para estilos personalizados con props separadas, usar leftSlotProps. */ leftSlot?: VisualSlotType | ButtonSlotConfig; /** * Slot derecho del botón. * Puede ser un string simple (ej: "ArrowRightOutlined"), un ReactElement, o un objeto de configuración completo. * Si se usa como string simple (sin estilos personalizados), funciona sin deprecación. * Si se usa como objeto de configuración, tiene la misma funcionalidad que rightSlotProps. * Para estilos personalizados con props separadas, usar rightSlotProps. */ rightSlot?: VisualSlotType | ButtonSlotConfig; /** @deprecated Usar leftSlotProps.iconDuotonePrimary en su lugar */ leftSlotDuotonePrimary?: IconFontColor; /** @deprecated Usar leftSlotProps.iconDuotoneSecondary en su lugar */ leftSlotDuotoneSecondary?: IconFontColor; /** @deprecated Usar leftSlotProps.iconDuotoneOpacityPrimary en su lugar */ leftSlotDuotoneOpacityPrimary?: number; /** @deprecated Usar leftSlotProps.iconDuotoneOpacitySecondary en su lugar */ leftSlotDuotoneOpacitySecondary?: number; /** @deprecated Usar rightSlotProps.iconDuotonePrimary en su lugar */ rightSlotDuotonePrimary?: IconFontColor; /** @deprecated Usar rightSlotProps.iconDuotoneSecondary en su lugar */ rightSlotDuotoneSecondary?: IconFontColor; /** @deprecated Usar rightSlotProps.iconDuotoneOpacityPrimary en su lugar */ rightSlotDuotoneOpacityPrimary?: number; /** @deprecated Usar rightSlotProps.iconDuotoneOpacitySecondary en su lugar */ rightSlotDuotoneOpacitySecondary?: number; fullWidth?: boolean; size?: 'xxs' | 'xs' | 'sm' | 'md' | 'lg'; iconSizeExtended?: 'none' | VisualSize; link?: string; borderable?: boolean | undefined; target?: string; /** * Atributo nativo `type` del `