import { type HTMLAttributes, type ReactNode } from 'react';
import type { GridApi } from 'ag-grid-community';
import { type ButtonProps } from '../button/button';
import { type IconButtonProps } from '../button/icon-button';
export interface ToolbarProviderProps {
getApi: () => GridApi | undefined;
selectionCount: number;
onPrint: () => void;
markColumnsUserTouched?: (colIds: readonly string[]) => void;
children: ReactNode;
}
export declare function ToolbarProvider({ getApi, selectionCount, onPrint, markColumnsUserTouched, children, }: ToolbarProviderProps): import("react/jsx-runtime").JSX.Element;
export type ToolbarRootProps = HTMLAttributes;
type ToolbarIconButtonProps = Omit & {
/** Accessible label — becomes the tooltip text and `aria-label`. */
label?: string;
};
export interface ExportCsvProps extends ToolbarIconButtonProps {
/** Optional override — receives the live AG Grid API. */
onExport?: (api: GridApi) => void;
}
export interface ExportPdfProps extends ToolbarIconButtonProps {
/**
* Optional override for the default PDF generation. When omitted, clicking
* the button calls the built-in handler (`defaultExportPdf`) which
* dynamic-imports `jspdf` + `jspdf-autotable` and produces a paged PDF
* of the current sort/filter state. Supply your own to plug in a
* server-side PDF generator or a custom layout.
*/
onClick?: (api: GridApi | undefined) => void;
/** Filename for the generated PDF (default `data-table-export.pdf`). */
fileName?: string;
}
export declare function resolveTokenToRgb(varName: string, fallback?: [number, number, number]): [number, number, number];
interface DefaultExportPdfOptions {
fileName: string;
}
/**
* Default Export PDF handler. Exported for tests and for consumers who want
* to call it from a custom `onClick` (e.g. to add a logo or signature).
*/
export declare function defaultExportPdf(api: GridApi | undefined, options: DefaultExportPdfOptions): Promise;
export type PrintProps = ToolbarIconButtonProps;
export interface QuickSearchProps {
/** Placeholder text. Falls back to `t('dataTable.quickSearch.placeholder')`. */
placeholder?: string;
/** Debounce ms before pushing to AG Grid. Defaults to 150 ms. */
debounceMs?: number;
}
export interface RefreshButtonProps extends Omit {
/** Called when the user clicks Refresh. */
onRefresh: () => void;
/** Accessible label. Falls back to `t('dataTable.refresh')`. */
label?: string;
}
export interface FacetFilterOption {
value: TValue | null;
label: string;
}
export interface FacetFilterProps {
/** Column field to filter on. */
field: string;
/** Options shown as pills. `value: null` clears the filter. */
options: FacetFilterOption[];
/** Accessible label for the pill group. */
label?: string;
}
export type ExportFormat = 'csv' | 'xlsx' | 'pdf' | 'custom';
export interface ExportMenuItemProps {
/** Built-in format or `custom` for consumer-supplied handler. */
format: ExportFormat;
/** Label override. Built-in formats default to `t('dataTable.export.{format}')`. */
label?: string;
/** Consumer handler — required for `format: 'custom'`. */
onClick?: (api: GridApi | undefined) => void;
/** File-name override (only used by built-in formats). */
fileName?: string;
}
export interface ExportMenuProps extends Omit {
/** Custom menu items. When omitted, renders the default CSV+Excel+PDF trio. */
children?: ReactNode;
/** Accessible label for the trigger. */
label?: string;
}
export interface ColumnToggleProps extends Omit {
label?: string;
/** Override the trigger glyph (defaults to the Columns3Cog icon). */
icon?: ReactNode;
/** Extra content rendered below the column list (e.g. a settings switch). */
footer?: ReactNode;
/** Extra content rendered above the column list, directly under the title
* (e.g. a grouping switch). */
header?: ReactNode;
}
export interface BulkActionProps extends Omit {
label: string;
icon?: ReactNode;
onClick: (api: GridApi | undefined) => void;
variant?: 'default' | 'destructive';
}
export declare const Toolbar: import("react").ForwardRefExoticComponent> & {
FilterBar: import("react").ForwardRefExoticComponent & import("react").RefAttributes>;
Actions: import("react").ForwardRefExoticComponent & import("react").RefAttributes>;
/** @deprecated Use `Toolbar.ExportMenu` with a `csv` item. */
ExportCsv: import("react").ForwardRefExoticComponent>;
/** @deprecated Use `Toolbar.ExportMenu` with a `pdf` item. */
ExportPdf: import("react").ForwardRefExoticComponent>;
Print: import("react").ForwardRefExoticComponent & {
/** Accessible label — becomes the tooltip text and `aria-label`. */
label?: string;
} & import("react").RefAttributes>;
ColumnToggle: import("react").ForwardRefExoticComponent>;
BulkAction: import("react").ForwardRefExoticComponent>;
QuickSearch: {
({ placeholder, debounceMs }: QuickSearchProps): import("react/jsx-runtime").JSX.Element;
displayName: string;
};
Refresh: import("react").ForwardRefExoticComponent>;
FilterChips: {
(): import("react/jsx-runtime").JSX.Element | null;
displayName: string;
};
FacetFilter: ({ field, options, label, }: FacetFilterProps) => import("react/jsx-runtime").JSX.Element;
ExportMenu: import("react").ForwardRefExoticComponent> & {
Item: {
({ format, label, onClick, fileName, }: ExportMenuItemProps): import("react/jsx-runtime").JSX.Element;
displayName: string;
};
};
};
export {};
//# sourceMappingURL=toolbar.d.ts.map