import { useState } from "preact/compat"; import { MenuItem } from "./types"; const CATEGORIES = [ { value: 'appetizer', label: 'Appetizer' }, { value: 'main_course', label: 'Main Course' }, { value: 'dessert', label: 'Dessert' }, { value: 'beverages', label: 'Beverages' }, { value: 'snack', label: 'Snack' }, ]; const emptyItem = (): MenuItem => ({ name: '', price: 0, category: '', description: '' }); interface MenuItemsModalProps { selected: Array; onSave: (items: Array) => void; onClose: () => void; } export default function MenuItemsModal({ selected, onSave, onClose }: MenuItemsModalProps) { const [items, setItems] = useState>(selected.length > 0 ? selected : [emptyItem()]); function onChange(idx: number, field: keyof MenuItem, value: string) { setItems(prev => prev.map((item, i) => i === idx ? { ...item, [field]: field === 'price' ? parseInt(value) || 0 : value } : item )); } function onAdd() { setItems(prev => [...prev, emptyItem()]); } function onDelete(idx: number) { setItems(prev => prev.filter((_, i) => i !== idx)); } function handleSave() { const valid = items.filter(item => item.name.trim() !== ''); onSave(valid); } return (
e.stopPropagation()}>
Restaurant Menu
{items.map((item, idx) => (
Name * onChange(idx, 'name', (e.target as HTMLInputElement).value)} placeholder="e.g. Nasi Goreng" />
Price (IDR) onChange(idx, 'price', (e.target as HTMLInputElement).value)} />
Category
Description onChange(idx, 'description', (e.target as HTMLInputElement).value)} placeholder="Optional" />
))}
{items.filter(i => i.name.trim()).length} item(s)
); }