@vertisanpro/flowbite-react
Version:
Non-Official React components built for Flowbite and Tailwind CSS
32 lines (31 loc) • 1.45 kB
JavaScript
'use client';
import { twMerge } from '@vertisanpro/tailwind-merge';
import React from 'react';
import { mergeDeep } from '../../helpers/merge-deep';
import { getTheme } from '../../theme-store';
import { TableBody } from './TableBody';
import { TableCell } from './TableCell';
import { TableContext } from './TableContext';
import { TableHead } from './TableHead';
import { TableHeadCell } from './TableHeadCell';
import { TableRow } from './TableRow';
const TableComponent = ({ children, className, striped, hoverable, theme: customTheme = {}, ...props }) => {
const theme = mergeDeep(getTheme().table, customTheme);
return (React.createElement("div", { "data-testid": "table-element", className: twMerge(theme.root.wrapper) },
React.createElement(TableContext.Provider, { value: { theme, striped, hoverable } },
React.createElement("div", { className: twMerge(theme.root.shadow, className) }),
React.createElement("table", { className: twMerge(theme.root.base, className), ...props }, children))));
};
TableComponent.displayName = 'Table';
TableHead.displayName = 'Table.Head';
TableBody.displayName = 'Table.Body';
TableRow.displayName = 'Table.Row';
TableCell.displayName = 'Table.Cell';
TableHeadCell.displayName = 'Table.HeadCell';
export const Table = Object.assign(TableComponent, {
Head: TableHead,
Body: TableBody,
Row: TableRow,
Cell: TableCell,
HeadCell: TableHeadCell,
});