/** @packageDocumentation
 * @module WidgetContentLayout
 */
import "./WidgetContentLayout.scss";
import type { ComponentPropsWithRef } from "react";
import * as React from "react";
import type { ToggleSwitch } from "@itwin/itwinui-react";
type IconMenu = IconMenuButton | IconMenuDivider;
interface IconMenuButton {
    icon: React.ReactNode;
    onClick: () => void;
    label: string;
    tooltipContent?: string;
    type?: "button";
    disabled?: boolean;
    isActive?: boolean;
}
interface IconMenuDivider {
    type: "divider";
    key?: string;
}
interface WidgetContentLayoutHeaderProps extends ComponentPropsWithRef<"div"> {
    /**
     * Toggle switch in the header.
     */
    toggle?: React.ComponentProps<typeof ToggleSwitch>;
    /**
     * Array of buttons to display in the header.
     */
    buttons?: React.ReactNode[];
    /**
     * Menu in the header.
     */
    menu?: {
        title: string;
        items: {
            label: string;
            onClick: () => void;
        }[];
    };
    /**
     * Title to display in the header.
     */
    title?: string;
    /**
     * Callback function for search functionality.
     */
    onSearch?: (value: string) => void;
    /**
     * Array of icon menu items to display in the header.
     */
    icons?: IconMenu[];
    /**
     * Size of the icons.
     */
    iconSize?: "small" | "large";
    /**
     * Child elements to render within the header.
     */
    children?: React.ReactNode;
}
interface WidgetContentLayoutBodyProps extends ComponentPropsWithRef<"div"> {
    /**
     * Whether the body is in a loading state.
     */
    isLoading?: boolean;
    /**
     * Whether to show a non-blocking loading indicator.
     */
    isNonBlockingLoading?: boolean;
    /**
     * Child elements to render within the body.
     */
    children?: React.ReactNode;
}
interface WidgetContentLayoutFooterProps extends ComponentPropsWithRef<"div"> {
    /**
     * Child elements to render within the footer.
     */
    children?: React.ReactNode;
}
interface WidgetContentLayoutProps extends ComponentPropsWithRef<"div"> {
    /**
     * Whether the entire layout is in a loading state.
     */
    isLoading?: boolean;
    /**
     * Whether to hide dividers between sections.
     */
    hideDividers?: boolean;
    /**
     * Child elements (Header, Body, Footer) to render.
     */
    children?: React.ReactNode;
}
/**
 * A layout component for widgets that provides a top section for buttons, a body section and a footer section.
 * @example
 * <WidgetContentLayout>
 *  <WidgetContentLayout.Header />
 *  <WidgetContentLayout.Body>
 *   <ContentComponent />
 *  </WidgetContentLayout.Body>
 *  <WidgetContentLayout.Footer>
 *   <FooterComponent />
 *  </WidgetContentLayout.Footer>
 * </WidgetContentLayout>
 *  @public
 */
export declare const WidgetContentLayout: React.ForwardRefExoticComponent<Omit<WidgetContentLayoutProps, "ref"> & React.RefAttributes<HTMLDivElement>> & {
    Header: React.ForwardRefExoticComponent<Omit<WidgetContentLayoutHeaderProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
    Body: React.ForwardRefExoticComponent<Omit<WidgetContentLayoutBodyProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
    Footer: React.ForwardRefExoticComponent<Omit<WidgetContentLayoutFooterProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
};
export {};
//# sourceMappingURL=WidgetContentLayout.d.ts.map