import { useState, useMemo } from "react"; import { useQuery } from "@tanstack/react-query"; import { ChevronDown, ChevronUp, AlertTriangle, CheckCircle2, Pill, ShieldCheck, Search, FlaskConical, } from "lucide-react"; import { apiClient } from "@/lib/api-client"; import { RiskBadge } from "@/components/risk-badge"; import { diseaseCatalogSeed } from "@zeavis/shared/diseases"; export function CatalogPage() { const [expandedId, setExpandedId] = useState(null); const [searchQuery, setSearchQuery] = useState(""); const [riskFilter, setRiskFilter] = useState("all"); const { data: diseases, isLoading } = useQuery({ queryKey: ["diseases"], queryFn: () => apiClient.getDiseases(), }); const filteredDiseases = useMemo(() => { if (!diseases) return []; return diseases.filter((disease) => { const matchesSearch = disease.commonName.toLowerCase().includes(searchQuery.toLowerCase()) || disease.symptoms.some((symptom) => symptom.toLowerCase().includes(searchQuery.toLowerCase()), ); const matchesRisk = riskFilter === "all" || disease.riskLevel === riskFilter; return matchesSearch && matchesRisk; }); }, [diseases, searchQuery, riskFilter]); if (isLoading) { return (
Memuat pustaka penyakit...
); } return (
{/* Page Title */}

Pustaka Penyakit

Referensi lengkap penyakit dan kondisi daun jagung yang dapat dideteksi oleh sistem AI ZeaVis Edu

{/* Search and Filter */}
setSearchQuery(e.target.value)} className="w-full pl-9 pr-4 py-2 border border-slate-300 rounded-xl focus:outline-none focus:ring-2 focus:ring-[#214B11]/20 focus:border-[#214B11] transition-all" />
{/* Accordion List */}
{filteredDiseases.length === 0 ? (

Tidak ada penyakit yang sesuai dengan pencarianmu.

F
) : ( filteredDiseases.map((disease) => { const isExpanded = expandedId === disease.slug; const seedData = diseaseCatalogSeed.find(seed => seed.slug === disease.slug); const finalImageUrl = disease.imageUrl || seedData?.imageUrl || "https://placehold.co/100x100?text=Daun"; const finalMedicines = disease.medicineRecommendations || seedData?.medicineRecommendations; return (
setExpandedId(isExpanded ? null : disease.slug) } className={`bg-white rounded-2xl border transition-all duration-300 ${ isExpanded ? "border-[#214B11]/30 shadow-md ring-1 ring-[#214B11]/5" : "border-slate-200 hover:border-slate-300 hover:shadow-sm" }`} > {/* Accordion Header */}
{disease.commonName}

{disease.commonName}

{disease.label}

{isExpanded ? ( ) : ( )}
{/* Accordion Content */} {isExpanded && (
Detail Penyakit

Deskripsi

{disease.description || disease.summary}

Gejala

    {disease.symptoms?.map((symptom, idx) => (
  • {symptom}
  • ))}

Panduan Pencegahan

    {disease.recommendations?.map((rec, idx) => (
  • {rec}
  • ))}

Rekomendasi Obat

    {finalMedicines ? ( finalMedicines.map((obat, idx) => (
  • {obat}
  • )) ) : (
  • Belum ada data rekomendasi obat spesifik.
  • )}
)}
); }) )}
{/* Warning Box */}

Disclaimer: Informasi dalam pustaka ini bersifat edukatif dan disarikan dari literatur ilmiah. ZeaVis Edu bukan pengganti diagnosis lapangan oleh{" "} Petugas Pengamat Organisme Pengganggu Tanaman (POPT){" "} atau ahli pertanian berlisensi. Selalu konsultasikan kondisi tanaman Anda kepada dinas pertanian atau balai penelitian tanaman terkait.

); }