Menu modifiers — sizes, temps, add-ons
Menu modifiers let you offer per-item options at order time — sizes, temperatures, add-ons — with optional price deltas.
Defining modifiers on a menu item:
• Open Restaurant → Menu → [item] → Modifiers.
• Add a modifier group, e.g. "Size", "Temperature", "Add-ons". Each group is required or optional.
• Add options to the group with an optional priceDelta (in cents). Example: Size → Small (0), Medium (+150), Large (+300).
• Set the min / max selections per group — e.g. "Add-ons" might allow 0–3 selections; "Size" requires exactly 1.
Order-time behavior:
• When the item is added to a check, the POS pops a modifier sheet showing every group and option.
• Required groups must have a selection before the item can be added.
• Selected options are persisted on the OrderItem.modifiers[] array; the receipt shows them as line-item children with their price deltas added to the line total.
Common patterns:
• Coffee — Size (Sm/Md/Lg), Temperature (Hot/Iced), Milk (none / 2% / oat / almond), required: Size + Temp, optional: Milk
• Burger — Doneness (rare → well-done) required, Toppings optional with deltas, Sides choose-1 required
• Pizza — Size required, Crust required, Toppings 0–10 optional with deltas
The modifier sheet is the same on the kitchen ticket — kitchen staff see exactly what the guest ordered, with deltas formatted as "+ extra cheese" or "- no onion".
If you change a modifier on an item that's already on a check, only future additions of the item pick up the new modifier — existing line items keep what they were ordered with.