"use client" import { useState, useEffect } from "react" import type { FilterParams } from "@/lib/types" interface FilterPanelProps { filters: FilterParams onFiltersChange: (filters: FilterParams) => void availableGenres: string[] availableMoods: string[] availableInstruments: string[] availableKeys: string[] } export default function FilterPanel({ filters, onFiltersChange, availableGenres, availableMoods, availableInstruments, availableKeys, }: FilterPanelProps) { const [localFilters, setLocalFilters] = useState(filters) // Update local filters when parent changes useEffect(() => { setLocalFilters(filters) }, [filters]) const handleFilterChange = (key: keyof FilterParams, value: any) => { const newFilters = { ...localFilters, [key]: value } setLocalFilters(newFilters) onFiltersChange(newFilters) } const clearFilters = () => { const emptyFilters: FilterParams = {} setLocalFilters(emptyFilters) onFiltersChange(emptyFilters) } const hasActiveFilters = Object.keys(localFilters).length > 0 return (

Filters

{hasActiveFilters && ( )}
{/* Genre Filter */}
{/* Mood Filter */}
{/* Instrument Filter */}
{/* Key Filter */}
{/* Tempo Range Filter */}
{/* Sort By */}
{/* Sort Order */}
{/* Active Filters Display */} {hasActiveFilters && (
{localFilters.genre && ( Genre: {localFilters.genre} )} {localFilters.mood && ( Mood: {localFilters.mood} )} {localFilters.instrument && ( Instrument: {localFilters.instrument} )} {localFilters.key && ( Key: {localFilters.key} )} {localFilters.tempo_range && ( Tempo: {localFilters.tempo_range} )}
)}
) }