import type { HTMLAttributes, ReactNode, TdHTMLAttributes } from 'react';
/**
* Root
props.
*/
export interface TableProps {
/** Table layout mode ("auto" or "fixed"). Default = "auto" */
layout?: 'fixed' | 'auto';
/** Additional classes applied to the table wrapper */
wrapperClass?: string;
/** Additional classes applied to the element */
className?: string;
/** Table content (Head + Body + Foot) */
children: ReactNode;
/** Accessible caption rendered as a element above the header */
caption?: ReactNode;
}
/**
* — table header section
*/
export interface TableHeadProps {
/** Additional classes applied to */
className?: string;
/** Header cells (TableHeaderCell components) */
children: ReactNode;
}
/**
* — table body section
*/
export interface TableBodyProps {
/** Additional classes applied to */
className?: string;
/** Show loading shimmer (overrides children) */
loading?: boolean;
/** Number of columns — needed for shimmer loader layout. Defaults to 1 when not provided. */
colSize?: number;
/** Number of shimmer rows to show when loading */
rowSize?: number;
/** Actual table rows */
children?: ReactNode;
}
/**
* — table footer
*/
export interface TableFootProps {
children: ReactNode;
}
/**
* — rendered when no data is available
*/
export interface EmptyTableRowProps {
/** Column span for empty row */
colSpan?: number;
/** Content shown in empty state */
children: ReactNode;
/** Optional custom styling */
contentClass?: string;
}
/**
* — regular table cell
*/
export interface TableCellProps extends TdHTMLAttributes {
/** Horizontal alignment */
align?: 'left' | 'center' | 'right';
/** Cell content */
children: ReactNode;
/** Additional classes */
className?: string;
}
/**
* — regular row
*/
export interface TableRowProps extends HTMLAttributes {
/** Whether the row highlights on hover */
hoverable?: boolean;
}
/**
* — header cell
*/
export interface TableHeaderCellProps extends HTMLAttributes {
/** Horizontal alignment */
align?: 'left' | 'center' | 'right';
/** Additional classes */
className?: string;
/** Label */
children: ReactNode;
}
/**
* shimmer-loader row
*/
export interface TableRowLoaderProps {
colSize: number;
rowSize: number;
}