import React from 'react';
import { type ActionsMenuGroup, type ActionsMenuItem } from './actions-menu';
import type { ButtonProps, SplitButtonIconAction } from './button';
export type PageActionButton = {
    /** Button label. Omit to render an icon-only button. */
    label?: string;
    /** Accessible name. Required for icon-only buttons (when `label` is omitted). */
    ariaLabel?: string;
    /** Click handler. Optional when `href` or `submenu` is provided. */
    onClick?: () => void;
    icon?: React.ReactNode;
    variant?: ButtonProps['variant'];
    disabled?: boolean;
    /**
     * For SplitButton actions (when `iconAction` is set): disables only the main
     * half. Combine with `iconAction.disabled` for icon-only disable. Ignored
     * for non-SplitButton actions.
     */
    mainDisabled?: boolean;
    loading?: boolean;
    /** Show action only on mobile (below md). Default: visible on all screens. */
    showOnlyMobile?: boolean;
    /**
     * Render the desktop button as icon-only (label hidden, icon centered). The full
     * label still appears in the mobile "..." dropdown. The desktop icon is forced to
     * `text-ods-text-primary`; the mobile row keeps the caller-provided icon color.
     */
    iconOnlyOnDesktop?: boolean;
    /** Render as a link (next/link). Mutually exclusive with `submenu`. */
    href?: string;
    /** Forwarded to next/link's prefetch. Only applies when `href` is set. */
    prefetch?: boolean;
    /** Open link in a new tab. Only applies when `href` is set. */
    openInNewTab?: boolean;
    /**
     * Render the action as a `SplitButton` (two independent click targets).
     * The main half runs `onClick`/`href`; the icon half runs its own action.
     * Mutually exclusive with `submenu`.
     */
    iconAction?: SplitButtonIconAction;
    /**
     * Render a button with a chevron that opens a dropdown. The whole button is
     * a single click target — clicking anywhere opens the menu.
     * Mutually exclusive with `iconAction` and `href`/`onClick`.
     */
    submenu?: ActionsMenuItem[];
};
export interface PageActionsProps {
    variant?: 'icon-buttons' | 'primary-buttons' | 'menu-primary';
    actions: PageActionButton[];
    menuActions?: ActionsMenuGroup[];
    /**
     * Desktop-only slot rendered before the action buttons (e.g. a `TabSelector`
     * for view-mode toggles). Hidden on mobile and never merged into the "…" menu.
     * Honored by the `icon-buttons` and `menu-primary` variants.
     */
    selector?: React.ReactNode;
    className?: string;
}
export declare function PageActions({ variant, actions, menuActions, selector, className, }: PageActionsProps): React.JSX.Element;
export declare function usePageActionsBottomPadding(variant: PageActionsProps['variant']): "" | "pb-40 md:pb-0";
export default PageActions;
//# sourceMappingURL=page-actions.d.ts.map