// AlignUI Table v0.0.0 import * as React from 'react'; import { ChevronDown, ChevronUp, ChevronsUpDown } from 'lucide-react'; import * as Divider from '@/components/ui/divider'; import { cn } from '@/utils/cn'; const Table = React.forwardRef< HTMLTableElement, React.TableHTMLAttributes >(({ className, ...rest }, forwardedRef) => { return (
); }); Table.displayName = 'Table'; const TableHeader = React.forwardRef< HTMLTableSectionElement, React.HTMLAttributes >(({ ...rest }, forwardedRef) => { return ; }); TableHeader.displayName = 'TableHeader'; const TableHead = React.forwardRef< HTMLTableCellElement, React.ThHTMLAttributes >(({ className, ...rest }, forwardedRef) => { return ( ); }); TableBody.displayName = 'TableBody'; const TableRow = React.forwardRef< HTMLTableRowElement, React.HTMLAttributes >(({ className, ...rest }, forwardedRef) => { return ( ); }); TableRow.displayName = 'TableRow'; function TableRowDivider({ className, dividerClassName, ...rest }: React.ComponentPropsWithoutRef & { dividerClassName?: string; }) { return ( ); } TableRowDivider.displayName = 'TableRowDivider'; const TableCell = React.forwardRef< HTMLTableCellElement, React.TdHTMLAttributes >(({ className, ...rest }, forwardedRef) => { return (
); }); TableHead.displayName = 'TableHead'; const TableBody = React.forwardRef< HTMLTableSectionElement, React.HTMLAttributes & { spacing?: number; } >(({ spacing = 8, ...rest }, forwardedRef) => { return ( <> {/* to have space between thead and tbody */}
); }); TableCell.displayName = 'TableCell'; const TableCaption = React.forwardRef< HTMLTableCaptionElement, React.HTMLAttributes >(({ className, ...rest }, forwardedRef) => (
)); TableCaption.displayName = 'TableCaption'; function TableSortableHeader({ children, sorted, onSort, className, }: { children: React.ReactNode; sorted: 'asc' | 'desc' | false; onSort: () => void; className?: string; }) { const SortingIcon = sorted === 'asc' ? ChevronUp : sorted === 'desc' ? ChevronDown : ChevronsUpDown; return (
{children}
); } TableSortableHeader.displayName = 'TableSortableHeader'; export { Table as Root, TableHeader as Header, TableBody as Body, TableHead as Head, TableRow as Row, TableRowDivider as RowDivider, TableCell as Cell, TableCaption as Caption, TableSortableHeader as SortableHeader, };