import React from "react"; import Link from "next/link"; import { notFound } from "next/navigation"; import { getPlantById, type Disease } from "@/data/plants"; import type { Metadata } from "next"; interface Props { params: Promise<{ plantId: string }>; } export async function generateStaticParams() { const { plants } = await import("@/data/plants"); return plants.map((plant) => ({ plantId: plant.id, })); } export async function generateMetadata({ params }: Props): Promise { const { plantId } = await params; const plant = getPlantById(plantId); if (!plant) { return { title: "Plant Not Found" }; } return { title: `${plant.commonName} — Diseases & Care`, description: `Learn about ${plant.commonName} (${plant.scientificName}) diseases, symptoms, causes, and treatments. ${plant.diseases.length} diseases documented.`, }; } /* ─── Severity badge ─── */ function SeverityBadge({ severity }: { severity: Disease["severity"] }) { const colors: Record = { low: "bg-leaf-green-100 text-leaf-green-800 dark:bg-leaf-green-900/40 dark:text-leaf-green-300", moderate: "bg-warning-amber-100 text-warning-amber-800 dark:bg-warning-amber-900/40 dark:text-warning-amber-300", high: "bg-red-100 text-red-800 dark:bg-red-900/40 dark:text-red-300", critical: "bg-red-100 text-red-800 dark:bg-red-900/40 dark:text-red-300", }; const labels: Record = { low: "Low", moderate: "Moderate", high: "High", critical: "Critical", }; return ( {severity === "critical" ? "🚨 " : ""} {labels[severity]} Severity ); } /* ─── Disease type badge ─── */ function TypeBadge({ type }: { type: Disease["type"] }) { const colors: Record = { fungal: "bg-purple-100 text-purple-800 dark:bg-purple-900/40 dark:text-purple-300", bacterial: "bg-blue-100 text-blue-800 dark:bg-blue-900/40 dark:text-blue-300", viral: "bg-pink-100 text-pink-800 dark:bg-pink-900/40 dark:text-pink-300", pest: "bg-orange-100 text-orange-800 dark:bg-orange-900/40 dark:text-orange-300", physiological: "bg-zinc-100 text-zinc-800 dark:bg-zinc-700 dark:text-zinc-300", }; return ( {type.charAt(0).toUpperCase() + type.slice(1)} ); } /* ─── Disease card (expandable) ─── */ function DiseaseCard({ disease }: { disease: Disease }) { return (
{/* Card header */}

{disease.name}

{disease.scientificName && (

{disease.scientificName}

)}

{disease.description}

{/* Details grid */}
{/* Symptoms */}

Symptoms

    {disease.symptoms.map((symptom, i) => (
  • {symptom}
  • ))}
{/* Causes */}

Causes

    {disease.causes.map((cause, i) => (
  • {cause}
  • ))}
{/* Treatment Steps */}

Treatment Steps

    {disease.treatmentSteps.map((step, i) => (
  1. {step}
  2. ))}
{/* Prevention Tips */}

Prevention Tips

    {disease.preventionTips.map((tip, i) => (
  • {tip}
  • ))}
); } /* ─── Plant Detail Page ─── */ export default async function PlantDetailPage({ params }: Props) { const { plantId } = await params; const plant = getPlantById(plantId); if (!plant) { notFound(); } return (
{/* Breadcrumb */} {/* Plant hero */}
{/* Emoji illustration */}

{plant.commonName}

{plant.scientificName}

Family: {plant.family} {" · "} Category:{" "} {plant.category}

{plant.description}

{plant.careSummary}
{/* Identify disease CTA */}

🧐 Spot a problem on your {plant.commonName.toLowerCase()}?

Upload a photo for AI-powered disease identification.

📸 Identify a Disease
{/* Disease list */}

Known Diseases

{plant.diseases.length === 0 ? "No diseases currently documented for this plant." : `${plant.diseases.length} ${plant.diseases.length === 1 ? "disease" : "diseases"} documented for ${plant.commonName}.`}

{plant.diseases.length > 0 ? (
{plant.diseases.map((disease) => ( ))}
) : (

Disease data for {plant.commonName} is being researched and will be added soon.

)}
); }