import { ReactElement, ReactNode } from 'react'; import { PlannedToolbarActions } from './planToolbarActions'; import { ToolbarTranslations } from './useTranslations'; /** * Slot for toolbar content: JSX widgets or plain text titles. * * Slot components that support collapsing their label to icon-only should read * `useDynamicToolbarLayout()` (`filterIconOnly` / `trailingIconOnly`) — the * toolbar never mutates slot elements. */ export type ToolbarSlot = ReactElement | string; /** Callback ref used to track a slot's rendered width. */ export type MeasureRef = (element: HTMLElement | null) => void; export type UtilityRowVariant = 'inline-normal' | 'inline-selection' | 'utility-row'; export declare function SelectionIndicator({ selectedCount, onClearSelection, translations, }: { selectedCount: number; onClearSelection?: () => void; translations: ToolbarTranslations; }): JSX.Element; export declare function SelectionRow({ selectedCount, onClearSelection, translations, bulkActionsPlan, }: { selectedCount: number; onClearSelection?: () => void; translations: ToolbarTranslations; bulkActionsPlan: PlannedToolbarActions; }): JSX.Element; export declare function SearchSlot({ search, expanded, measureRef, }: { search: ToolbarSlot; expanded?: boolean; measureRef?: MeasureRef; }): JSX.Element; /** Keeps children mounted while hidden so slots fade instead of popping. */ export declare function FadeSlot({ visible, children }: { visible: boolean; children: ReactNode; }): JSX.Element; export declare function TitleText({ title, measureRef }: { title: ToolbarSlot; measureRef?: MeasureRef; }): JSX.Element; export declare function TitleBlock({ title, helperText, titleMeasureRef, }: { title?: ToolbarSlot; helperText?: ToolbarSlot; titleMeasureRef?: MeasureRef; }): JSX.Element | null; /** * Utility cluster — fixed internal order per variant (flex-nowrap). * - inline-normal: before-filter actions → filter → search → after-search actions * - inline-selection: bulk → filter → search * - utility-row (§4/§7): before-filter actions → search (flex) → filter → after-search actions * * Bulk actions render only in the `inline-selection` variant; the other * variants pair with a separate {@link SelectionRow} when selection is active. */ export declare function UtilityCluster({ variant, beforeFilterActionsPlan, filter, search, afterSearchActionsPlan, bulkActionsPlan, showPageActions, overflowMenuLabel, searchMeasureRef, align, }: { variant: UtilityRowVariant; beforeFilterActionsPlan: PlannedToolbarActions; filter?: ReactNode; search?: ToolbarSlot; afterSearchActionsPlan: PlannedToolbarActions; bulkActionsPlan?: PlannedToolbarActions; showPageActions: boolean; overflowMenuLabel: string; searchMeasureRef?: MeasureRef; align?: 'start' | 'end'; }): JSX.Element | null;