UNPKG

@codeworker.br/govbr-tw-react

Version:

Biblioteca de componentes React usando Tailwind CSS que implementa o Padrão Digital de Governo.

45 lines (44 loc) 1.88 kB
import { ComponentPropsWithoutRef, ReactNode, Ref } from "react"; import { VariantProps } from "class-variance-authority"; import { tableCellVariants, tableVariants } from "./variants"; type Alignment = "left" | "center" | "right"; interface TableCellContext<T extends Record<string, unknown>> { value: unknown; row: T; rowIndex: number; columnIndex: number; column: TableColumn<T>; } interface TableColumn<T extends Record<string, unknown>> { key: string; header: ReactNode; accessor?: keyof T | ((row: T, context: { rowIndex: number; columnIndex: number; }) => unknown); cell?: (context: TableCellContext<T>) => ReactNode; align?: Alignment; headerAlign?: Alignment; headerClassName?: string; cellClassName?: string; } interface TableProps<T extends Record<string, unknown>> extends Omit<ComponentPropsWithoutRef<"table">, "children">, VariantProps<typeof tableVariants>, Omit<VariantProps<typeof tableCellVariants>, "align"> { data: T[]; columns: TableColumn<T>[]; striped?: boolean; zebra?: boolean; emptyMessage?: ReactNode; rowKey?: (row: T, context: { rowIndex: number; }) => string | number; className?: string; sum?: (keyof T & string)[]; sumLabel?: ReactNode; sumFormatter?: (value: number, key: string) => ReactNode; } declare const TableComponent: <T extends Record<string, unknown>>({ className, data, columns, variant, bordered, rounded, density, striped, zebra, lined, emptyMessage, rowKey, sum, sumLabel, sumFormatter, ...props }: TableProps<T>, ref: Ref<HTMLTableElement>) => import("react/jsx-runtime").JSX.Element; declare const Table: <T extends Record<string, unknown>>(props: TableProps<T> & { ref?: Ref<HTMLTableElement>; }) => ReturnType<typeof TableComponent>; export type { TableColumn, TableProps }; export default Table;