/** * Trouve-KA — filtres de recherche en pastilles * Author: Simon-Pierre Boucher * Contact: contact@spboucher.ai */ "use client"; import { cn } from "@/lib/utils"; /** Filtres actifs de la page de résultats. */ export interface SearchFilters { category?: string; language?: string; quebecOnly: boolean; images?: boolean; } interface FilterPillsProps { filters: SearchFilters; onChange: (next: SearchFilters) => void; } interface Pill { label: string; active: boolean; next: SearchFilters; } export function FilterPills({ filters, onChange }: FilterPillsProps) { const allActive = !filters.category && !filters.language && !filters.quebecOnly && !filters.images; const pills: Pill[] = [ { label: "Tout", active: allActive, next: { quebecOnly: false } }, { label: "Images", active: Boolean(filters.images), next: { ...filters, images: !filters.images }, }, { label: "Actualités", active: filters.category === "news", next: { ...filters, category: filters.category === "news" ? undefined : "news", }, }, { label: "Gouvernement", active: filters.category === "government", next: { ...filters, category: filters.category === "government" ? undefined : "government", }, }, { label: "Français", active: filters.language === "fr", next: { ...filters, language: filters.language === "fr" ? undefined : "fr", }, }, { label: "English", active: filters.language === "en", next: { ...filters, language: filters.language === "en" ? undefined : "en", }, }, { label: "Québec seulement", active: filters.quebecOnly, next: { ...filters, quebecOnly: !filters.quebecOnly }, }, ]; return (