import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { Input } from "@/components/ui/input"; import { SearchIcon } from "@/components/ui/phosphor-icons"; import type { HouseholdRow } from "@/lib/poverty-types"; const SCORE_COLOR: Record = { "SANGAT TINGGI": "text-red-600", "TINGGI": "text-orange-600", "SEDANG": "text-amber-600", "RENDAH": "text-emerald-600", "TIDAK PRIORITAS": "text-blue-600", }; interface PovertyDirectoryProps { searchQuery: string; setSearchQuery: (query: string) => void; households: HouseholdRow[]; selectedId: number | null; onSelect: (household: HouseholdRow) => void; } export function PovertyDirectory({ searchQuery, setSearchQuery, households, selectedId, onSelect, }: PovertyDirectoryProps) { const filtered = households .filter((h) => h.head_name.toLowerCase().includes(searchQuery.toLowerCase())) .sort((a, b) => Number(b.fuzzy_score ?? -1) - Number(a.fuzzy_score ?? -1)); return ( Direktori Warga Prioritas Diurutkan dari skor fuzzy tertinggi. Pilih warga untuk melihat detail di panel inspektur.
setSearchQuery(e.target.value)} />
{filtered.length === 0 ? (
{households.length === 0 ? "Belum ada warga terdata. Tambah marker di peta untuk memulai." : "Tidak ada warga yang cocok dengan pencarian."}
) : (
{filtered.map((h) => { const isSelected = selectedId === h.id; const score = h.fuzzy_score != null ? Number(h.fuzzy_score).toFixed(1) : "—"; return (
onSelect(h)} className={`p-3 border rounded-lg cursor-pointer flex justify-between items-center transition-all ${ isSelected ? "border-primary bg-primary/5 text-primary font-semibold" : "border-border/60 hover:bg-muted" }`} > {h.head_name} {score}
); })}
)}
); }