root = Card([header, specialCallout, drinksSection, foodSection, vegFilter, hoursSection])
header = CardHeader("Cafe Menu", "Fresh coffee & kitchen")
specialCallout = Callout("success", "Today's Special", "Roasted veggie sourdough toast — $9.50, available until 2pm")
drinksSection = Card([drinksHeading, drinksTable], "sunk")
drinksHeading = Heading("Drinks", "h3")
drinksTable = Table([drinkName, drinkPrice, drinkVeg])
drinkName = Col("Drink", ["Espresso", "Cappuccino", "Flat White", "Matcha Latte", "Fresh Orange Juice"])
drinkPrice = Col("Price", ["$3.00", "$4.00", "$4.20", "$5.00", "$4.50"])
drinkVeg = Col("Veg", ["Yes", "Yes", "Yes", "Yes", "Yes"])
foodSection = Card([foodHeading, foodTable], "sunk")
foodHeading = Heading("Food", "h3")
foodTable = Table([foodName, foodPrice, foodVeg])
foodName = Col("Item", ["Avocado Toast", "Ham & Cheese Croissant", "Veggie Panini", "Greek Salad", "Banana Bread"])
foodPrice = Col("Price", ["$8.50", "$6.00", "$9.00", "$8.00", "$4.00"])
foodVeg = Col("Veg", ["Yes", "No", "Yes", "Yes", "Yes"])
vegFilter = Card([vegHint, vegButtons], "clear")
vegHint = TextContent("Show only vegetarian options")
vegButtons = Buttons([showVeg, showAll])
showVeg = Button("Vegetarian only")
showAll = Button("Show all", null, "secondary")
hoursSection = Card([hoursHeading, hoursList], "sunk")
hoursHeading = Heading("Opening Hours", "h3")
hoursList = ListBlock([monFri, sat, sun], "number")
monFri = ListItem("Mon–Fri", "7:00 AM – 6:00 PM")
sat = ListItem("Saturday", "8:00 AM – 5:00 PM")
sun = ListItem("Sunday", "8:00 AM – 3:00 PM")