fix ki modell

This commit is contained in:
nadja
2026-08-26 23:48:36 +02:00
parent fdb03daeb3
commit 828c38c779

View File

@@ -1,30 +1,53 @@
import { useState } from 'react';
import { useState, useMemo } from 'react';
function parseIngredientString(raw) {
if (typeof raw !== 'string') return raw;
const m = raw.match(/^([\d½¼¾⅓⅔.,\-]+\s*(?:g|kg|ml|l|EL|TL|Stück|Packung|Prise|Bund|Dose|Scheibe|cm|dick)?)\s*(.*)/i);
if (m) {
const amount = m[1].trim();
const rest = m[2].trim();
const unitMatch = rest.match(/^((?:g|kg|ml|l|EL|TL|Stück|Packung|Prise|Bund|Dose|Scheibe|dick)s?)\s+(.*)/i);
if (unitMatch) {
return { amount, unit: unitMatch[1], name: unitMatch[2] };
}
return { amount, unit: '', name: rest };
}
return { amount: '', unit: '', name: raw };
}
function normalizeIngredients(ingredients) {
return ingredients.map(ing =>
typeof ing === 'string' ? parseIngredientString(ing) : ing
);
}
export default function IngredientList({ ingredients, editable, onChange }) {
const [checked, setChecked] = useState({});
const normalized = useMemo(() => normalizeIngredients(ingredients), [ingredients]);
const toggle = (i) => setChecked(prev => ({ ...prev, [i]: !prev[i] }));
const updateIngredient = (i, field, value) => {
const updated = ingredients.map((ing, idx) =>
const updated = normalized.map((ing, idx) =>
idx === i ? { ...ing, [field]: value } : ing
);
onChange(updated);
};
const addIngredient = () => {
onChange([...ingredients, { name: '', amount: '', unit: '' }]);
onChange([...normalized, { name: '', amount: '', unit: '' }]);
};
const removeIngredient = (i) => {
onChange(ingredients.filter((_, idx) => idx !== i));
onChange(normalized.filter((_, idx) => idx !== i));
};
return (
<div>
<h3 className="font-semibold text-lg mb-3">Zutaten</h3>
<ul className="space-y-2">
{ingredients.map((ing, i) => (
{normalized.map((ing, i) => (
<li key={i} className="flex items-center gap-2">
{!editable && (
<input