import { ReactNode } from 'react'; export type ITableHeader = { title?: ReactNode; key?: keyof T & string; sortable?: boolean; sortFunc?: (a: T, b: T, reverseOrder: boolean) => number; renderFunc?: (item: T) => ReactNode; tooltip?: ReactNode; width?: string; }; export interface SortData { sortBy: keyof T; reverseOrder: boolean; } export interface ITableOptions { page: number; sort?: SortData | undefined; total: number; } export interface ITableServerProps { options: ITableOptions; perPage: number; headers: ITableHeader[]; items: T[]; loading?: boolean; changeOptions?: (value: ITableOptions) => void; clickRow?: (item: T) => void; minHeight?: string; header?: ReactNode; emptyCard?: ReactNode; isSync?: boolean; } export interface ITableProps extends Omit, 'options' | 'changeOptions' | 'isSync'> { page: number; changePage?: (page: number) => void; }