import { flexRender, Header } from '@tanstack/react-table'; import { Button } from '@workspace/ui/components/button'; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, } from '@workspace/ui/components/dropdown-menu'; import { cn } from '@workspace/ui/lib/utils'; import { ArrowDownIcon, ArrowDownUpIcon, ArrowUpIcon, EyeOffIcon } from 'lucide-react'; 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)}> {text?.hide || 'Hide'} )}
); }