import { useCallback, useState } from "react"; import React from "react"; import { Button } from "./Button"; interface FilterChipsProps { filters: T[]; onFilterClick: (filterName: T) => void; defaultFilter?: T; } export function FilterChips({ filters, onFilterClick, defaultFilter, }: FilterChipsProps) { const [selectedFilter, setSelectedFilter] = useState( defaultFilter && filters.includes(defaultFilter) ? defaultFilter : null ); const handleFilterClick = useCallback( (filterName: T) => { // Avoid unnecessary re-renders by only triggering event if filter has changed. if (filterName !== selectedFilter) { setSelectedFilter(filterName); onFilterClick(filterName); } }, [onFilterClick, selectedFilter] ); return (
{filters.map((filterName) => (
); }