/// import { AtomDivProps, AtomTrProps } from '../../element'; export type Size = { width?: string; height?: string; }; /** * @template V - Tipo del valor recibido del cuerpo. * @template K - Tipo de la clave asociada. * @template VR - Tipo del valor de la fila completa. */ export type RenderBodyProps = { value: V; key: K; row: number; column: number; valueRow: VR; }; /** * @template V - Tipo del valor del encabezado. * @template K - Tipo de la clave asociada. */ export type RenderHeadProps = { value: V; key: K; column: number; }; export type AnyType = T extends unknown ? any : T; /** * @template B - Tipo del cuerpo de la tabla. * @template H - Tipo del encabezado de la tabla. * @template C - Tipo de las claves de las columnas. */ export type TableKUIProps = AtomDivProps & { /** * @template C List To string * @example string[] * ['id', 'name', 'email'] */ keys: C[]; head: Record, H>; body: Record, AnyType>[]; limit?: number; neighbors?: number; renderHead?: (args: RenderHeadProps>) => JSX.Element; renderBody?: (args: RenderBodyProps, NoInfer, Record, AnyType>>) => JSX.Element; onRow?: (args: Record, AnyType>) => AtomTrProps; TableSx?: Size; }; export type RenderTableHeadProps = { keyType: C; renderHead?: (args: RenderHeadProps>) => JSX.Element; head: Record, H>; column: number; }; export type RenderTableBodyProps = { /** * @template C List To string * @example string[] * ['id', 'name', 'email'] */ keys: C[]; renderBody?: (args: RenderBodyProps, NoInfer, Record, AnyType>>) => JSX.Element; valueRow: Record, AnyType>; row: number; };