'use client' import { ToggleGroup, ToggleGroupItem } from '@thedaviddias/design-system/toggle-group' import { Clock, Heart, Search, SortAsc } from 'lucide-react' import { useRouter } from 'next/navigation' interface WebsitesSearchControlsProps { searchQuery: string setSearchQuery: (query: string) => void sortBy: 'name' | 'latest' setSortBy: (sort: 'name' | 'latest') => void showFavoritesOnly: boolean setShowFavoritesOnly: (show: boolean) => void hasFavorites: boolean filteredCount: number trackSearch: (query: string, count: number, source: string) => void trackSortChange: (from: string, to: string, source: string) => void } /** * Search and sort controls for the websites list */ export function WebsitesSearchControls({ searchQuery, setSearchQuery, sortBy, setSortBy, showFavoritesOnly, setShowFavoritesOnly, hasFavorites, filteredCount, trackSearch, trackSortChange }: WebsitesSearchControlsProps) { const router = useRouter() return (
{/* Search Input */}
{ e.preventDefault() if (searchQuery.trim()) { trackSearch(searchQuery, filteredCount, 'homepage-search') router.push(`/search?q=${encodeURIComponent(searchQuery)}`) } }} className="relative flex-1 max-w-md" > setSearchQuery(e.target.value)} className="w-full rounded-lg border border-input bg-background px-4 py-2 text-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2" />
{/* Filter and Sort Controls */}
{/* Favorites Filter */} {hasFavorites && (
)} {/* Sort Controls */}
Sort by: { if (value && value !== sortBy) { trackSortChange(sortBy, value, 'homepage-sort') setSortBy(value as 'name' | 'latest') } }} className="bg-background border rounded-md" > Name Latest
) }