shadcn.io is not affiliated with official shadcn/ui
Meal Prep Planner Chat Block for Vue
A coach's week plan in a thread: every lunch and dinner is a button with three swap options, and a shopping list beside it adds up the ingredients, counts what you have bought and copies as text.
Installation
Overview
Plan a week of meals and watch the shopping list follow, with this meal prep chat for Vue with Ark UI. A hairline frame with a plus mark on each corner holds a window for Panwell, a weekly meal-prep planner: Oona Strand, the coach, has posted next week as a card with a lunch and a dinner for each day, and pressing any meal opens a Popover of three alternatives. Choosing one swaps the dish and re-derives the "Shopping list" pane beside the thread, where every ingredient of the 14 meals is added up by name (a dish used twice adds up, "chickpeas 3 tins"), each line is a Checkbox meaning "bought", the header says "3 of 22 bought" and "Copy list" really copies the text. On a phone a Chat and List switch shows one pane at a time. The composer's Shine Button sends text to a short typed script, and the frame is ruled by Guides. It's the starting point for a meal planner, a grocery app or any plan that rewrites a list.
FAQ
What stays in the page, and how do I make it real?
Everything. The ten dishes and their ingredients are typed in the file, the replies come from a short script keyed on words such as "budget" and "prep", and "Copy list" copies to your clipboard but nothing is stored or sent. To wire it for real, load the plan and the recipes from your API, write a swap and each tick back where swap and tick run, and send post's text to your messaging service where the code says so.
How is the shopping list worked out?
One pure function walks the 14 meals, collects every ingredient, adds the quantities of equal names and sorts them alphabetically, so the list can never disagree with the card. Ticks are kept by ingredient name, so swapping a dish away keeps the ticks of what is still needed, and the "bought" count only counts lines that are on the list.
How do the three alternatives work?
Each meal is a button that names the day, the meal and the dish ("Thursday dinner: Chicken curry. Swap."). The popover lists three other dishes for the same meal, in list order, and choosing one closes it, returns focus to the button and says what changed in the status line.
Is it usable with a keyboard and a screen reader?
Yes. The log is a focusable region announced as a log, so new messages are read out once, and every message starts with a hidden "Oona Strand, 09:05" or "You, ...". Delivery is a glyph and a word, never a color. Every control is a real button, field or checkbox with a name, Enter sends and Shift and Enter add a line, and the avatars are hidden from assistive technology because names are always in text.