memorium/components/IngredientsList.tsx

34 lines
905 B
TypeScript
Raw Normal View History

2023-07-26 13:47:01 +02:00
import type { Ingredient, Ingredients } from "../lib/recipes.ts";
type IngredientsProps = {
ingredients: Ingredients;
};
function formatIngredient(ingredient: Ingredient) {
return `${
ingredient.amount && ingredient.unit &&
` - ${ingredient.amount} ${ingredient.unit}`
} ${ingredient.type}`;
}
export const IngredientsList = ({ ingredients }: IngredientsProps) => {
return (
<div>
{ingredients.map((item, index) => (
<div key={index} class="mb-4">
{"type" in item && formatIngredient(item)}
{"ingredients" in item && Array.isArray(item.ingredients) && (
<ul class="pl-4 list-disc">
{item.ingredients.map((ingredient, idx) => (
<li key={idx}>
{formatIngredient(ingredient)}
</li>
))}
</ul>
)}
</div>
))}
</div>
);
};