'use client'
import { format } from 'date-fns'
import type { GanttFilterState } from './types'
export interface GanttFilterBarProps {
filters: GanttFilterState
onFilterChange: (filters: GanttFilterState) => void
uniqueStatuses: string[]
uniqueCategories: string[]
}
export function GanttFilterBar({ filters, onFilterChange, uniqueStatuses, uniqueCategories }: GanttFilterBarProps) {
const hasActiveFilters =
filters.search !== '' ||
filters.statuses.length > 0 ||
filters.categories.length > 0 ||
filters.dateRange.start !== null ||
filters.dateRange.end !== null
return (
onFilterChange({ ...filters, search: e.target.value })}
/>
{uniqueStatuses.length > 0 && (
)}
{uniqueCategories.length > 0 && (
)}
onFilterChange({ ...filters, dateRange: { ...filters.dateRange, start: e.target.value ? new Date(e.target.value) : null } })}
title="Filter from date"
/>
onFilterChange({ ...filters, dateRange: { ...filters.dateRange, end: e.target.value ? new Date(e.target.value) : null } })}
title="Filter to date"
/>
{hasActiveFilters && (
)}
{/* Active filter pills */}
{filters.statuses.map((s) => (
{s.replace(/_/g, ' ')}
))}
{filters.categories.map((c) => (
{c}
))}
)
}