import { Columns3Icon } from 'lucide-react' import { cn } from '../lib/cn' import { Button } from '../ui/button' import { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from '../ui/dropdown-menu' export type ColumnVisibilityItem = { id: string label: string visible: boolean } type ColumnVisibilityPickerProps = { items: ColumnVisibilityItem[] onToggle: (id: string, visible: boolean) => void onSetAll: (visible: boolean) => void className?: string } /** Toolbar dropdown listing hideable columns (spec ยง12). */ export function ColumnVisibilityPicker({ items, onToggle, onSetAll, className, }: ColumnVisibilityPickerProps) { const hiddenCount = items.filter((i) => !i.visible).length const allVisible = hiddenCount === 0 const allHidden = hiddenCount === items.length if (items.length === 0) return null return ( Toggle columns
{items.map((item) => ( e.preventDefault()} onCheckedChange={(checked) => onToggle(item.id, checked === true)} > {item.label} ))}
) }