import { useRef, useState } from "react"; import { ITEM_GROUPS, ITEM_TYPES, getItemTypeLabel, getZoneValues } from "../constants/classifications"; import "../styles/AddItemWithDetailsModal.css"; export default function AddItemWithDetailsModal({ itemName, onConfirm, onSkip, onCancel }) { const [selectedImage, setSelectedImage] = useState(null); const [imagePreview, setImagePreview] = useState(null); const [itemType, setItemType] = useState(""); const [itemGroup, setItemGroup] = useState(""); const [zone, setZone] = useState(""); const cameraInputRef = useRef(null); const galleryInputRef = useRef(null); const handleImageChange = (e) => { const file = e.target.files[0]; if (file) { setSelectedImage(file); const reader = new FileReader(); reader.onloadend = () => { setImagePreview(reader.result); }; reader.readAsDataURL(file); } }; const removeImage = () => { setSelectedImage(null); setImagePreview(null); }; const handleItemTypeChange = (e) => { const newType = e.target.value; setItemType(newType); // Reset item group when type changes setItemGroup(""); }; const handleConfirm = () => { // Validate classification if provided if (itemType && !itemGroup) { alert("Please select an item group"); return; } const classification = itemType ? { item_type: itemType, item_group: itemGroup, zone: zone || null } : null; onConfirm(selectedImage, classification); }; const handleSkip = () => { onSkip(); }; const handleCameraClick = () => { cameraInputRef.current?.click(); }; const handleGalleryClick = () => { galleryInputRef.current?.click(); }; const availableGroups = itemType ? ITEM_GROUPS[itemType] || [] : []; return (
e.stopPropagation()}>

Add Details for "{itemName}"

Add an image and classification to help organize your list

{/* Image Section */}

Item Image (Optional)

{!imagePreview ? (
) : (
Preview
)}
{/* Classification Section */}

Item Classification (Optional)

{itemType && (
)}
{/* Actions */}
); }