import { useState } from 'react'; import { ArrowLeft, ChevronRight, Camera, X, Check, AlertTriangle, Minus, Plus } from 'lucide-react'; interface Zone { name: string; defaultDrippers: number; } interface IrrigationCheckData { zoneName: string; drippersTotal: number; drippersWorking: number; drippersFailed: string[]; waterFlow: boolean; nutrientsMixed: boolean; scheduleActive: boolean; photoUrl?: string; issues?: string; } interface IrrigationChecklistProps { onComplete: (checks: IrrigationCheckData[]) => void; onBack: () => void; isPhotoRequired: boolean; } export default function IrrigationChecklist({ onComplete, onBack, isPhotoRequired }: IrrigationChecklistProps) { const zones: Zone[] = [ { name: 'Veg Upstairs', defaultDrippers: 48 }, { name: 'Veg Downstairs', defaultDrippers: 48 }, { name: 'Flower Upstairs', defaultDrippers: 64 }, { name: 'Flower Downstairs', defaultDrippers: 64 }, ]; const [checks, setChecks] = useState>(new Map()); const [currentZoneIndex, setCurrentZoneIndex] = useState(0); const [drippersWorking, setDrippersWorking] = useState(zones[0].defaultDrippers); const [waterFlow, setWaterFlow] = useState(true); const [nutrientsMixed, setNutrientsMixed] = useState(true); const [scheduleActive, setScheduleActive] = useState(true); const [issues, setIssues] = useState(''); const [photo, setPhoto] = useState(null); const currentZone = zones[currentZoneIndex]; const isLastZone = currentZoneIndex === zones.length - 1; const drippersFailed = currentZone.defaultDrippers - drippersWorking; const allGood = waterFlow && nutrientsMixed && scheduleActive && drippersFailed === 0; const handleNext = () => { if (isPhotoRequired && !photo) { alert('Photo is required for this step.'); return; } const checkData: IrrigationCheckData = { zoneName: currentZone.name, drippersTotal: currentZone.defaultDrippers, drippersWorking, drippersFailed: drippersFailed > 0 ? [`${drippersFailed} drippers`] : [], waterFlow, nutrientsMixed, scheduleActive, issues: issues || undefined, photoUrl: photo || undefined }; const newChecks = new Map(checks); newChecks.set(currentZone.name, checkData); setChecks(newChecks); if (isLastZone) { onComplete(Array.from(newChecks.values())); } else { const nextZone = zones[currentZoneIndex + 1]; setCurrentZoneIndex(currentZoneIndex + 1); setDrippersWorking(nextZone.defaultDrippers); setWaterFlow(true); setNutrientsMixed(true); setScheduleActive(true); setIssues(''); setPhoto(null); } }; return (
{/* Header */}

Irrigation System

Zone {currentZoneIndex + 1} of {zones.length}

{/* Progress Bar */}
{/* Main Content - Two Column on Desktop */}
{/* Left Column - Drippers & Status */}
{/* Zone Info Card */}
🚿

{currentZone.name}

{currentZone.defaultDrippers} drippers total

{/* Status Badge */}
{allGood ? : } {allGood ? 'All Systems Operational' : 'Issues Detected'}
{/* Drippers Counter */}
{drippersWorking}
{drippersFailed > 0 && (
{drippersFailed} failed
)}
{/* Right Column - System Checks */}
{/* System Status Toggles */}
{/* Issues / Notes */} {!allGood && (