'use client'; import React, { useState } from 'react'; export interface Ingredient { _id: string; code: string; name: string; category: string; subcategory: string; quantity: number; unit: string; unitPrice: number; vat: number; supplier: string; createdAt: string; updatedAt: string; } interface IngredientTableProps { ingredients: Ingredient[]; } export default function IngredientTable({ ingredients }: IngredientTableProps) { const [selectedIngredients, setSelectedIngredients] = useState>(new Set()); const toggleIngredient = (id: string) => { const newSelected = new Set(selectedIngredients); if (newSelected.has(id)) { newSelected.delete(id); } else { newSelected.add(id); } setSelectedIngredients(newSelected); }; const toggleAll = () => { if (selectedIngredients.size === ingredients.length) { setSelectedIngredients(new Set()); } else { setSelectedIngredients(new Set(ingredients.map(i => i._id))); } }; const calculateNetPrice = (unitPrice: number, vat: number) => { return unitPrice * (1 + vat / 100); }; return ( <> {/* Desktop & Tablet Table View */}
{ingredients.map((ingredient) => ( ))}
0} onChange={toggleAll} className="w-4 h-4 rounded border-gray-300 text-blue-600 focus:ring-blue-500" /> Ingredient Category Subcategory Quantity Unit Price VAT Net Price Supplier Actions
toggleIngredient(ingredient._id)} className="w-4 h-4 rounded border-gray-300 text-blue-600 focus:ring-blue-500" />

{ingredient.name}

ID: {ingredient.code}

{ingredient.category} • {ingredient.quantity} {ingredient.unit}

{ingredient.category} {ingredient.subcategory} {ingredient.quantity} {ingredient.unit} €{ingredient.unitPrice.toFixed(2)} {ingredient.vat}% €{calculateNetPrice(ingredient.unitPrice, ingredient.vat).toFixed(2)} {ingredient.supplier}
{/* Mobile Card View */}
{ingredients.map((ingredient) => (
toggleIngredient(ingredient._id)} className="w-4 h-4 rounded border-gray-300 text-blue-600 focus:ring-blue-500 mt-1" />

{ingredient.name}

ID: {ingredient.code}

Category

{ingredient.category}

Subcategory

{ingredient.subcategory}

Quantity

{ingredient.quantity} {ingredient.unit}

Unit Price

€{ingredient.unitPrice.toFixed(2)}

VAT

{ingredient.vat}%

Net Price

€{calculateNetPrice(ingredient.unitPrice, ingredient.vat).toFixed(2)}

Updated

{new Date(ingredient.updatedAt).toLocaleDateString()}

))}
); }