'use client'; import { useState, useEffect } from 'react'; import { X } from 'lucide-react'; import QuantityDisplay from './QuantityDisplay'; import axios from 'axios'; import { Item } from '@/lib/db'; interface QuantityAdjustmentModalProps { item: Item | null; isOpen: boolean; onClose: () => void; } export default function QuantityAdjustmentModal({ item, isOpen, onClose, }: QuantityAdjustmentModalProps) { const [successMessage, setSuccessMessage] = useState(null); const [isClosing, setIsClosing] = useState(false); // Handle closing const handleClose = () => { setIsClosing(true); setTimeout(() => { onClose(); setIsClosing(false); setSuccessMessage(null); }, 300); }; // Handle quantity change via QuantityDisplay const handleQuantityChange = async (newQuantity: number) => { if (!item) return; try { const backendUrl = process.env.NEXT_PUBLIC_BACKEND_URL || 'http://localhost:8906'; await axios.patch(`${backendUrl}/items/${item.id}`, { quantity: newQuantity, }); setSuccessMessage(`Quantity updated to ${newQuantity}`); setTimeout(() => { setSuccessMessage(null); handleClose(); }, 1500); } catch (error) { const errorMsg = error instanceof Error ? error.message : 'Failed to update quantity'; console.error('Quantity update error:', errorMsg); throw error; } }; if (!isOpen || !item) return null; return (
{/* Header */}

Adjust Quantity

{/* Content */}
{/* Item Details */}

{item.name}

{item.part_number && (
Part Number: {item.part_number}
)} {item.barcode && (
Barcode: {item.barcode}
)} {item.category && (
Category: {item.category}
)}
{/* Success Message */} {successMessage && (
{successMessage}
)} {/* Quantity Adjustment */}
{/* Action Buttons */}
); }