import { ReactNode } from "react"; import { PaginationState, Row, HeaderGroup } from "@tanstack/react-table"; import { BaseComponentSizes, ClassName } from "@helpers/types"; import { TPaginationVariant } from "@components/Pagination/Pagination.interface"; export interface TableProps extends ITableBuiltInPaginationProps, ClassName { columns: ITableHeader[]; data: ITableItem[]; borderless?: boolean; zebraRows?: boolean; headerCellClassName?: string; selectionColumnClassName?: string; tableContentAlignment?: TTableContentAlignment; withRowSelection?: boolean; onSelectRows?(rows: ITableItem[]): void; pageSize?: number; pagination?: ReactNode; paginationState?: PaginationState; withBuiltInPagination?: boolean; tableFooterCell?: ReactNode; layoutFixed?: boolean; } export interface ITableHeader extends ITableItem { isSortable?: boolean; name: string; } export interface ITableItem extends Record { id: string; className?: string; } export interface ITableBodyProps extends ITableStylesProps { tableRows: Row[]; isPaginationMode: boolean; rowCellClassName?: string; } export interface ITableHeaderProps extends ITableStylesProps { headerGroups: HeaderGroup[]; headerClassName?: string; getColumnClassName(columnId: string): string; } export interface ITableStylesProps { borderless?: boolean; zebraRows?: boolean; } export interface ITableBuiltInPaginationProps { paginationPrevButtonTitle?: string; paginationNextButtonTitle?: string; paginationVariant?: TPaginationVariant; paginationSize?: BaseComponentSizes; } export type TTableContentAlignment = "left" | "right" | "center";