import { type ReactNode } from 'react';
/**
 * DataTable - Composant de tableau de données standardisé SmartStack
 *
 * Fonctionnalités:
 * - Tri par colonnes
 * - Pagination
 * - Recherche globale
 * - Colonnes personnalisables
 * - États vide/chargement
 * - Sélection de lignes (optionnel)
 *
 * Usage:
 * ```tsx
 * <DataTable
 *   data={users}
 *   columns={[
 *     { key: 'name', label: 'Nom', sortable: true },
 *     { key: 'email', label: 'Email', sortable: true },
 *     { key: 'role', label: 'Rôle', render: (user) => <Badge>{user.role}</Badge> },
 *   ]}
 *   pagination={{ pageSize: 10 }}
 *   searchable
 *   onRowClick={(user) => navigate(`/users/${user.id}`)}
 * />
 * ```
 */
export interface DataTableColumn<T> {
    /** Unique key (matches data field or custom) */
    key: string;
    /** Column header label */
    label: string;
    /** Is column sortable */
    sortable?: boolean;
    /** Custom render function */
    render?: (item: T, index: number) => ReactNode;
    /** Column width (CSS value) */
    width?: string;
    /** Column alignment */
    align?: 'left' | 'center' | 'right';
    /** Hide on mobile */
    hideOnMobile?: boolean;
    /** Sticky column */
    sticky?: 'left' | 'right';
}
export interface DataTablePagination {
    /** Items per page */
    pageSize: number;
    /** Available page sizes */
    pageSizeOptions?: number[];
    /** Show page size selector */
    showSizeSelector?: boolean;
}
export interface DataTableProps<T> {
    /** Data array */
    data: T[];
    /** Column definitions */
    columns: DataTableColumn<T>[];
    /** Loading state */
    loading?: boolean;
    /** Enable global search */
    searchable?: boolean;
    /** Search placeholder */
    searchPlaceholder?: string;
    /** Pagination config */
    pagination?: DataTablePagination;
    /** Row click handler */
    onRowClick?: (item: T, index: number) => void;
    /** Get unique key for each row */
    getRowKey?: (item: T, index: number) => string;
    /** Empty state message */
    emptyMessage?: string;
    /** Empty state icon */
    emptyIcon?: ReactNode;
    /** Custom header actions */
    headerActions?: ReactNode;
    /** Stripe rows */
    striped?: boolean;
    /** Compact mode */
    compact?: boolean;
    /** Custom className */
    className?: string;
    /** Enable row selection */
    selectable?: boolean;
    /** Selected row keys */
    selectedKeys?: Set<string>;
    /** Selection change handler */
    onSelectionChange?: (keys: Set<string>) => void;
    /** Custom search filter function */
    searchFilter?: (item: T, searchTerm: string) => boolean;
    /** Default sort column */
    defaultSortKey?: string;
    /** Default sort direction */
    defaultSortDirection?: 'asc' | 'desc';
}
export declare function DataTable<T>({ data, columns, loading, searchable, searchPlaceholder, pagination, onRowClick, getRowKey, emptyMessage, emptyIcon, headerActions, striped, compact, className, selectable, selectedKeys, onSelectionChange, searchFilter, defaultSortKey, defaultSortDirection, }: DataTableProps<T>): import("react/jsx-runtime").JSX.Element;
export default DataTable;
//# sourceMappingURL=DataTable.d.ts.map