import React, { useState, useEffect } from 'react'; import { ChevronDown, Info } from 'lucide-react'; const MOCK_MEASUREMENTS = { 'Measurement_Section_1.png': { totalRoofArea: 87.87, ridges: 189.09, hips: 395.62, valleys: 284.06, rakes: 184.69, eaves: 600.90, stepFlashing: 112.00 }, 'Measurement_Section_2.png': { totalRoofArea: 33.91, ridges: 73.62, hips: 304.65, valleys: 140.44, rakes: 53.57, eaves: 275.52, stepFlashing: 39.48 }, 'Measurement_Section_3.png': { totalRoofArea: 81.79, ridges: 161.85, hips: 275.53, valleys: 172.23, rakes: 69.31, eaves: 459.65, stepFlashing: 6.49 } }; export default function MeasurementsModal({ isOpen, onCancel, onNext, selectedImageId }) { const [measurements, setMeasurements] = useState({ totalRoofArea: 0, ridges: 0, hips: 0, valleys: 0, rakes: 0, eaves: 0, stepFlashing: 0 }); useEffect(() => { if (selectedImageId && MOCK_MEASUREMENTS[selectedImageId]) { setMeasurements(MOCK_MEASUREMENTS[selectedImageId]); } }, [selectedImageId]); const handleChange = (field, value) => { setMeasurements(prev => ({ ...prev, [field]: parseFloat(value) || 0 })); }; if (!isOpen) return null; const fields = [ { label: 'Ridges', key: 'ridges', uom: 'LF' }, { label: 'Hips', key: 'hips', uom: 'LF' }, { label: 'Valleys', key: 'valleys', uom: 'LF' }, { label: 'Rakes', key: 'rakes', uom: 'LF' }, { label: 'Eaves', key: 'eaves', uom: 'LF' }, { label: 'Step Flashing', key: 'stepFlashing', uom: 'LF' }, ]; return (
e.stopPropagation()} > {/* Header */}

Measurements

{/* Info */}

The actual measurements below will be used to calculate your item quantities.

{/* Content */}
{/* Measurement Dropdown */}
{/* Measurements list */}
Actual
{/* Total Roof Area - prominent */}
Total Roof Area
handleChange('totalRoofArea', e.target.value)} className="w-24 bg-white dark:bg-zinc-800 border-2 border-zinc-800 dark:border-zinc-300 rounded px-3 py-1.5 text-right font-mono text-sm text-zinc-900 dark:text-zinc-100 outline-none focus:border-blue-500 focus:ring-1 focus:ring-blue-500" /> SQ
{fields.map(item => (
{item.label}
handleChange(item.key, e.target.value)} className="w-24 bg-white dark:bg-zinc-800 border border-zinc-200 dark:border-zinc-700 rounded px-3 py-1.5 text-right font-mono text-sm text-zinc-700 dark:text-zinc-300 outline-none focus:border-blue-400 focus:ring-1 focus:ring-blue-400 transition-all" /> {item.uom}
))}
{/* Footer */}
); }