import { ThemeTypesModel, FontStyleTypeModel } from '../../Themes/theme_types'; import { Column } from 'react-table'; import { Size } from '../../types'; type availableSize = Size; interface DataTableProps { data: any; columns: Column[]; rowStyle?: 'bordered' | 'unbordered' | 'striped'; size?: availableSize; isInverse?: boolean; theme?: ThemeTypesModel; } type ColumnType = Column; interface CellProp { font: FontStyleTypeModel; paddingTop: number; paddingBottom: number; paddingRight: number; paddingLeft: number; } interface sizeScope { HeadCell: CellProp; BodyCell: CellProp; FootCell: CellProp; ModalFilterTitle: { font: FontStyleTypeModel; }; actionIcon: { marginRight: number; }; } interface dayTimeStyleCope { borderColor: string; HeadRow: { default: { bgColor: string; }; }; BodyRow: { default: { bgColor: string; }; striped: { bgColor: string; }; hover: { bgColor: string; }; active: { bgColor: string; hover: string; }; }; FooterRow: { bgColor: string; }; HeadCell: { fontColor: string; iconColor: string; default: { bgColor: string; }; hover: { bgColor: string; }; }; BodyCell: { fontColor: string; }; FooterCell: { fontColor: string; fontWeight: number; }; filterWindow: { title: { color: string; }; }; } interface viewModel { style: { day: dayTimeStyleCope; night: dayTimeStyleCope; }; size: { s: sizeScope; m: sizeScope; l: sizeScope; }; } interface HeadCellProps { dayTime: 'day' | 'night'; isSelection?: boolean; sorting?: boolean; focused: boolean; styled: viewModel; active?: boolean; align: 'center' | 'left' | 'right'; isLast?: boolean; size: availableSize; theme: ThemeTypesModel; } interface DataCellProps { styled: viewModel; textPosition: string; isLast?: boolean; size: availableSize; theme: ThemeTypesModel; dayTime: 'day' | 'night'; } interface HeadRowProps { styled: viewModel; dayTime: 'day' | 'night'; } interface FootRowProps { styled: viewModel; isBordered?: boolean; isStriped?: boolean; dayTime: 'day' | 'night'; } interface FootCellProps { styled: viewModel; dayTime: 'day' | 'night'; textPosition: 'left' | 'center' | 'right'; size: availableSize; theme: ThemeTypesModel; } interface CellRowProps { theme: ThemeTypesModel; dayTime: 'day' | 'night'; isBordered: boolean; focused?: boolean; isActive?: boolean; interactive?: boolean; selection?: boolean; isStriped: boolean; styled: viewModel; } interface ModalFilterProps { theme: ThemeTypesModel; styled: viewModel; dayTime: 'day' | 'night'; size: availableSize; } export type { ColumnType, DataTableProps, viewModel, HeadRowProps, FootRowProps, HeadCellProps, DataCellProps, CellRowProps, FootCellProps, ModalFilterProps, };