"use client"; import { DialogHeader, DialogTitle, } from "@/components/ui/dialog"; import type { UserMarker } from "@/components/leaflet-map"; export const FUZZY_BADGE: Record = { "SANGAT TINGGI": { bg: "#fef2f2", text: "#b91c1c", bar: "#ef4444" }, "TINGGI": { bg: "#fff7ed", text: "#c2410c", bar: "#f97316" }, "SEDANG": { bg: "#fffbeb", text: "#b45309", bar: "#f59e0b" }, "RENDAH": { bg: "#f0fdf4", text: "#15803d", bar: "#10b981" }, "TIDAK PRIORITAS": { bg: "#eff6ff", text: "#1d4ed8", bar: "#6b7280" }, }; const FACTOR_LABELS: Record = { penghasilan: "Penghasilan", tanggungan: "Tanggungan", kondisi_rumah: "Kondisi Rumah", kepemilikan_aset: "Kepemilikan Aset", }; interface FuzzyResultStepProps { marker: UserMarker; confirmLabel: string; onConfirm: () => void; } export function FuzzyResultStep({ marker, confirmLabel, onConfirm }: FuzzyResultStepProps) { const label = marker.meta?.fuzzy_label ?? ""; const score = marker.meta?.fuzzy_score ?? null; const detail = marker.meta?.fuzzy_detail ?? null; const badge = FUZZY_BADGE[label] ?? { bg: "#f3f4f6", text: "#374151", bar: "#6b7280" }; return (
Hasil Analisis Fuzzy

{marker.name}

{/* Priority badge */}
Tingkat Prioritas {label || "—"}
{/* Score bar */} {score != null && (
Skor Fuzzy {score.toFixed(1)}
0 100
)} {/* Factor breakdown — dominant fuzzy category per input */} {detail && (
Faktor Penilaian
{Object.entries(FACTOR_LABELS).map(([key, name]) => { const f = detail[key]; if (!f) return null; return (
{name} {f.kategori}
); })}
)} {/* Summary grid */}
Kemiskinan {marker.meta?.poverty_level ?? "—"} Tanggungan {marker.meta?.family_count ?? "—"} jiwa Penghasilan Rp {(marker.meta?.penghasilan ?? 0).toLocaleString("id-ID")}/bln Koordinat {marker.lat.toFixed(5)}, {marker.lng.toFixed(5)}
); }