import { ArrowDownIcon, ArrowUpIcon, CaretSortIcon, EyeNoneIcon } from '@radix-ui/react-icons'; import { Button } from '@shadcn/ui/button'; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, } from '@shadcn/ui/dropdown-menu'; import { cn } from '@shadcn/ui/lib/utils'; import { flexRender, Header } from '@tanstack/react-table'; interface ColumnHeaderProps extends React.HTMLAttributes { header: Header; text?: Partial<{ asc: string; desc: string; hide: string; }>; } export function ColumnHeader({ header, className, text, }: ColumnHeaderProps) { const column = header.column; const title = header.isPlaceholder ? null : flexRender(header.column.columnDef.header, header.getContext()); if (!column.getCanSort()) { return
{title}
; } return (
column.toggleSorting(false)}> {text?.asc || 'ASC'} column.toggleSorting(true)}> {text?.desc || 'DESC'} {column.getCanHide() && ( <> column.toggleVisibility(false)}> Hide {text?.hide || 'Hide'} )}
); }