import { ReactNode } from 'react';
/** @deprecated Use types from `data-table` instead. */
export type TailwindBreakpoint = 'md' | 'lg' | 'xl' | '2xl';
/** @deprecated Use types from `data-table` instead. */
export interface TableColumn<T = any> {
    key: string;
    label: string;
    width?: string;
    align?: 'left' | 'center' | 'right';
    sortable?: boolean;
    filterable?: boolean;
    hideAt?: TailwindBreakpoint | TailwindBreakpoint[];
    renderCell?: (item: T, column: TableColumn<T>) => ReactNode;
    renderHeader?: () => ReactNode;
    className?: string;
    sortKey?: string;
    sortFunction?: (a: T, b: T) => number;
    filterOptions?: FilterOption[];
    filterKey?: string;
    filterFunction?: (item: T, filterValue: any) => boolean;
}
/** @deprecated Use types from `data-table` instead. */
export interface FilterOption {
    id: string;
    label: string;
    value: any;
}
/** @deprecated Use types from `data-table` instead. */
export interface FilterSection {
    id: string;
    title: string;
    type: 'checkbox' | 'radio' | 'select';
    options: FilterOption[];
    allowSelectAll?: boolean;
}
/** @deprecated Use types from `data-table` instead. */
export interface TableFilters {
    [columnKey: string]: any[];
}
/** @deprecated Use types from `data-table` instead. */
export interface CursorPagination {
    hasNextPage: boolean;
    hasPreviousPage?: boolean;
    isFirstPage?: boolean;
    startCursor?: string | null;
    endCursor?: string | null;
    currentCount?: number;
    totalCount?: number | null;
    onNext?: (cursor: string) => void;
    onPrevious?: (cursor: string) => void;
    onReset?: () => void;
    itemName?: string;
    showInfo?: boolean;
    compact?: boolean;
    resetButtonLabel?: string;
    resetButtonIcon?: 'home' | 'rotate';
}
/** @deprecated Use types from `data-table` instead. */
export interface PagePagination {
    currentPage: number;
    totalPages: number;
    pageSize?: number;
    totalItems?: number;
    onPageChange: (page: number) => void;
}
/** @deprecated Use types from `data-table` instead. */
export interface InfiniteScrollConfig {
    hasNextPage: boolean;
    isFetchingNextPage: boolean;
    onLoadMore: () => void;
    skeletonRows?: number;
}
/** @deprecated Use types from `data-table` instead. */
export interface TableProps<T = any> {
    data: T[];
    columns: TableColumn<T>[];
    rowKey: keyof T | ((item: T) => string);
    loading?: boolean;
    emptyMessage?: string;
    skeletonRows?: number;
    className?: string;
    containerClassName?: string;
    headerClassName?: string;
    rowClassName?: string | ((item: T, index: number) => string);
    /** Compact mode: smaller row height for dense data lists */
    compact?: boolean;
    onRowClick?: (item: T) => void;
    rowActions?: RowAction<T>[];
    renderRowActions?: (item: T) => ReactNode;
    /**
     * When provided, renders a right-pointing chevron link at the end of every row
     * pointing at rowHref(item). Uses the shared Button component with href support,
     * so middle-click / Cmd+click / right-click "open in new tab" work natively.
     */
    rowHref?: (item: T) => string | null | undefined;
    sortBy?: string;
    sortDirection?: 'asc' | 'desc';
    onSort?: (column: string, direction: 'asc' | 'desc') => void;
    defaultSort?: {
        column: string;
        direction: 'asc' | 'desc';
    };
    filters?: TableFilters;
    onFilterChange?: (filters: TableFilters) => void;
    showFilters?: boolean;
    selectable?: boolean;
    selectedRows?: T[];
    onSelectionChange?: (selected: T[]) => void;
    selectAllLabel?: string;
    bulkActions?: BulkAction<T>[];
    showToolbar?: boolean;
    cursorPagination?: CursorPagination;
    pagePagination?: PagePagination;
    paginationClassName?: string;
    infiniteScroll?: InfiniteScrollConfig;
    stickyHeader?: boolean;
    /** Tailwind top class for sticky header offset, e.g. "top-[72px]" */
    stickyHeaderOffset?: string;
}
/** @deprecated Use types from `data-table` instead. */
export interface BulkAction<T = any> {
    label: string;
    icon?: ReactNode;
    onClick: (selectedItems: T[]) => void;
    variant?: 'primary' | 'secondary' | 'outline' | 'ghost' | 'destructive';
    requiresSelection?: boolean;
    className?: string;
}
/** @deprecated Use types from `data-table` instead. */
export interface RowAction<T = any> {
    label: string;
    icon?: ReactNode;
    onClick: (item: T) => void;
    variant?: 'primary' | 'secondary' | 'outline' | 'ghost' | 'destructive';
    className?: string;
    hideOnMobile?: boolean;
}
/** @deprecated Use types from `data-table` instead. */
export interface TableHeaderProps<T = any> {
    columns: TableColumn<T>[];
    className?: string;
    sortBy?: string;
    sortDirection?: 'asc' | 'desc';
    onSort?: (column: string, direction: 'asc' | 'desc') => void;
    filters?: TableFilters;
    onFilterChange?: (filters: TableFilters) => void;
    selectable?: boolean;
    allSelected?: boolean;
    someSelected?: boolean;
    onSelectAll?: () => void;
    totalItemsCount: number;
    stickyHeader?: boolean;
    stickyHeaderOffset?: string;
}
/** @deprecated Use types from `data-table` instead. */
export interface TableRowProps<T = any> {
    item: T;
    columns: TableColumn<T>[];
    onClick?: (item: T) => void;
    href?: string;
    className?: string | ((item: T, index: number) => string);
    index: number;
    isMobile?: boolean;
    compact?: boolean;
    selectable?: boolean;
    selected?: boolean;
    onSelect?: (item: T) => void;
}
/** @deprecated Use types from `data-table` instead. */
export interface TableCellProps {
    children: ReactNode;
    align?: 'left' | 'center' | 'right';
    className?: string;
    width?: string;
}
/** @deprecated Use types from `data-table` instead. */
export interface TableCardSkeletonProps {
    columns: TableColumn[];
    rows?: number;
    hasActions?: boolean;
    hasChevron?: boolean;
    className?: string;
    rowClassName?: string;
}
/** @deprecated Use types from `data-table` instead. */
export interface TableEmptyStateProps {
    message?: string;
    icon?: ReactNode;
    action?: {
        label: string;
        onClick: () => void;
    };
    className?: string;
}
//# sourceMappingURL=types.d.ts.map