/** * ColumnVisibilityMenu * * Dropdown menu to show/hide table columns. * Integrates with TanStack Table column visibility state. * * Features: * - Checkbox list of all columns * - Hide/show individual columns * - "Reset to default" button * - Persisted via localStorage */ 'use client'; import { Button } from '@/components/ui/button'; import { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from '@/components/ui/dropdown-menu'; import { Columns3 } from 'lucide-react'; import type { Table } from '@tanstack/react-table'; import type { PolicySettingRow } from '@/lib/types/policy-table'; interface ColumnVisibilityMenuProps { table: Table; } export function ColumnVisibilityMenu({ table }: ColumnVisibilityMenuProps) { const columns = table .getAllColumns() .filter((column) => column.getCanHide()); const hiddenCount = columns.filter((column) => !column.getIsVisible()).length; return ( Toggle columns {columns.map((column) => { return ( column.toggleVisibility(!!value)} > {/* Format column ID to human-readable label */} {column.id.replace(/([A-Z])/g, ' $1').trim()} ); })} ); }