'use client' import { useState, useCallback } from 'react' import { UseFiltersReturn, FilterState } from '../types' interface UseFiltersProps { initialFilters?: FilterState onChange?: (filters: FilterState) => void } export function useFilters({ initialFilters = {}, onChange, }: UseFiltersProps): UseFiltersReturn { const [filters, setFilters] = useState(initialFilters) const setFilter = useCallback((key: string, value: any) => { setFilters((prev) => { const next = { ...prev, [key]: value } onChange?.(next) return next }) }, [onChange]) const clearFilter = useCallback((key: string) => { setFilters((prev) => { const next = { ...prev } delete next[key] onChange?.(next) return next }) }, [onChange]) const clearAllFilters = useCallback(() => { setFilters({}) onChange?.({}) }, [onChange]) const hasActiveFilters = useCallback(() => { return Object.keys(filters).length > 0 }, [filters]) const getActiveFilterCount = useCallback(() => { return Object.keys(filters).length }, [filters]) return { filters, setFilter, clearFilter, clearAllFilters, hasActiveFilters, getActiveFilterCount, } }