'use client' import { Button } from '@thedaviddias/design-system/button' import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from '@thedaviddias/design-system/dropdown-menu' import { ChevronDown, Filter, Search, Users } from 'lucide-react' type MemberFilter = 'all' | 'contributors' | 'community' interface MembersSearchControlsProps { searchQuery: string memberFilter: MemberFilter totalMembers: number onSearchChange: (value: string) => void onFilterChange: (filter: MemberFilter) => void } /** * Search and filter controls for members list * @param props - Component props * @param props.searchQuery - Current search query * @param props.memberFilter - Current filter selection * @param props.totalMembers - Total number of members * @param props.onSearchChange - Callback for search input changes * @param props.onFilterChange - Callback for filter changes * @returns JSX component with search input and filter dropdown */ export function MembersSearchControls({ searchQuery, memberFilter, totalMembers, onSearchChange, onFilterChange }: MembersSearchControlsProps) { const filterLabels = { all: 'All Members', contributors: 'Contributors', community: 'Community' } return (
{/* Search Input */}
onSearchChange(e.target.value)} className="h-10 w-full rounded-md border border-input bg-background px-10 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50" /> {searchQuery && ( )}
{/* Filter Dropdown */}
onFilterChange('all')}> All Members onFilterChange('contributors')}> Contributors onFilterChange('community')}> Community
{totalMembers} member{totalMembers !== 1 ? 's' : ''}
) }