/** * Trouve-KA — contenu client de la page de résultats * Author: Simon-Pierre Boucher * Contact: contact@spboucher.ai */ "use client"; import Link from "next/link"; import { useRouter, useSearchParams } from "next/navigation"; import { useEffect, useState } from "react"; import { FilterPills, type SearchFilters } from "@/components/filter-pills"; import { GallerySkeleton, ImageGallery } from "@/components/image-gallery"; import { ResultItem } from "@/components/result-item"; import { SearchBar } from "@/components/search-bar"; import { Button } from "@/components/ui/button"; import { formatNumber } from "@/lib/format"; import type { SearchResponse } from "@/lib/types"; const PAGE_SIZE = 10; const GALLERY_PAGE_SIZE = 24; function buildSearchUrl( q: string, page: number, filters: SearchFilters, ): string { const params = new URLSearchParams({ q }); if (page > 1) params.set("page", String(page)); if (filters.category) params.set("category", filters.category); if (filters.language) params.set("language", filters.language); if (filters.quebecOnly) params.set("quebec_only", "true"); if (filters.images) params.set("images", "true"); return `/search?${params.toString()}`; } function ResultsSkeleton() { return (