/** * PolicyTableToolbar * * Toolbar above the data table with: * - Column visibility menu * - Density mode toggle (compact/comfortable) * - Export button (added later in Phase 5) * - Filter controls (added later in Phase 4) */ 'use client'; import { Button } from '@/components/ui/button'; import { ColumnVisibilityMenu } from './ColumnVisibilityMenu'; import { PolicyTypeFilter } from './PolicyTypeFilter'; import { ExportButton } from './ExportButton'; import { LayoutList, LayoutGrid, X } from 'lucide-react'; import { Badge } from '@/components/ui/badge'; import type { Table } from '@tanstack/react-table'; import type { PolicySettingRow } from '@/lib/types/policy-table'; interface PolicyTableToolbarProps { table: Table; density: 'compact' | 'comfortable'; onDensityChange: (density: 'compact' | 'comfortable') => void; // Filter props selectedPolicyTypes: string[]; onSelectedPolicyTypesChange: (types: string[]) => void; searchQuery: string; onSearchQueryChange: (query: string) => void; // Export props selectedRows: PolicySettingRow[]; selectedCount: number; totalCount: number; sortBy?: string; sortDir?: 'asc' | 'desc'; } export function PolicyTableToolbar({ table, density, onDensityChange, selectedPolicyTypes, onSelectedPolicyTypesChange, searchQuery, onSearchQueryChange, selectedRows, selectedCount, totalCount, sortBy, sortDir, }: PolicyTableToolbarProps) { const hasActiveFilters = selectedPolicyTypes.length > 0 || searchQuery.length > 0; const handleClearFilters = () => { onSelectedPolicyTypesChange([]); onSearchQueryChange(''); }; return (
{/* Policy Type Filter */} {/* Active Filter Badges */} {selectedPolicyTypes.length > 0 && (
{selectedPolicyTypes.slice(0, 2).map((type) => ( {type} ))} {selectedPolicyTypes.length > 2 && ( +{selectedPolicyTypes.length - 2} more )}
)} {/* Clear All Filters Button */} {hasActiveFilters && ( )}
{/* Density Toggle */} {/* Column Visibility Menu */} {/* Export Button */}
); }