import type { ColumnPinningPosition, ColumnDef, RowData, TableState, OnChangeFn, RowSelectionState } from '@tanstack/react-table'; import { ReactNode } from 'react'; import { PAGE_SIZE_TABLE } from '../../constants'; export type TableType = 'basic' | 'zebra'; export type PageSizeType = typeof PAGE_SIZE_TABLE[number]; export interface TablePaginationProps { count?: number; page?: number; pageSize?: PageSizeType; onPageChange?: (page: number) => void; onPageSizeChange?: (pageSize: number) => void; } export type RowSelectionFn = OnChangeFn; export type InitialTableState = Partial; export type TableColumns = ColumnDef[]; export interface TableProps extends TablePaginationProps { data: TData[]; columns: TableColumns; className?: string; type?: TableType; hidePagination?: boolean; initialState: InitialTableState; fixedHeader?: boolean; height?: string; onRowSelectionChange?: RowSelectionFn; emptyMessage?: ReactNode; loading?: boolean; } export interface TableContainerProps { height?: string; fixedHeader?: boolean; } export interface THeadProps { fixedHeader?: boolean; } export interface TableContentProps { type?: TableType; } export interface THProps { pinningPosition?: ColumnPinningPosition; width?: number; } export interface TDProps { pinningPosition?: ColumnPinningPosition; }