import { default as React } from 'react'; import { ButtonSize, ButtonVariant } from '../Button'; type DrawerButtonProps = { show?: boolean; text?: string; disabled?: boolean; action?: () => Promise | void; size?: ButtonSize; variant?: ButtonVariant; loading?: boolean; id?: string; className?: string; }; /** * Props del componente Drawer. */ export interface DrawerProps extends React.HTMLAttributes { children?: React.ReactNode; isOpen: boolean; setIsOpen: (isOpen: boolean) => void; title?: string; zIndex?: number; onClickOverlay?: (() => Promise | void) | false; onClose?: (() => Promise | void) | false; confirmButton?: DrawerButtonProps; cancelButton?: DrawerButtonProps; headerClassName?: string; contentClassName?: string; footerClassName?: string; } /** * Componente Drawer con overlay, arrastrable y footer configurable. * * Puedes pasar un objeto a `confirmButton` y `cancelButton` para controlar: * - `show`: si se renderiza el botón (por defecto true) * - `text`: texto del botón * - `action`: función a ejecutar al hacer click * - `variant`: variante visual del botón ("brand", "outline", etc.) * - `size`: tamaño del botón ("small", "medium", "large") * - `disabled`: deshabilita el botón * - `loading`: muestra estado de carga en el botón * - `id`: id del botón para asociarlo a un form * * @param isOpen - Controla la visibilidad del drawer. * @param setIsOpen - Función para abrir/cerrar el drawer desde el exterior. * @param title - Título que se muestra en el header del drawer. * @param zIndex - Número para controlar la superposición del drawer. * @param onClickOverlay - Callback opcional al hacer click fuera del drawer. Si se pasa `false`, el overlay no cierra el drawer ni ejecuta acción. * @param onClose - Callback opcional al pulsar el icono de cierre. Si se pasa `false`, no se renderiza el icono de cierre. * @param confirmButton - Configuración del botón de confirmación. * @param cancelButton - Configuración del botón de cancelación. * @param headerClassName - Clases CSS adicionales para el header. * @param contentClassName - Clases CSS adicionales para el contenido. * @param footerClassName - Clases CSS adicionales para el footer. * * @example * ```tsx * import { useState } from "react"; * import { Drawer, Button } from "bmi-next-brokers"; * * export default function Example() { * const [isDrawerOpen, setIsDrawerOpen] = useState(false); * * const handleConfirm = () => console.log("Confirmado"); * const handleCancel = () => console.log("Cancelado"); * * return ( * <> * * * console.log("Click overlay")} * onClose={() => console.log("Click en el icono de cierre")} * confirmButton={{ * text: "Guardar", * action: handleConfirm, * variant: "brand", * size: "small", * loading: false, * id: "form" * }} * cancelButton={{ * show: true, * text: "Cerrar", * action: handleCancel, * variant: "outline", * size: "small", * loading: false * }} * headerClassName="customHeader" * contentClassName="customContent" * footerClassName="customFooter" * > *
*

Contenido del drawer...

*
*
* * ); * } * ``` */ export declare const Drawer: ({ isOpen, setIsOpen, title, zIndex, className, headerClassName, contentClassName, footerClassName, onClickOverlay, onClose, confirmButton, cancelButton, children, ...props }: DrawerProps) => React.ReactPortal | null; export {};