root = Card([header, statusRow, salesSection, trafficSection, sellersSection, stockSection, shiftSection, basketSection, returnsSection, promoSection, registerSection, reorderSection, storeSection, weekCompareSection, followups])

header = CardHeader("Store Manager Console", "Daily overview for Store #42")

statusRow = Card([statusTitle, statusBadge], "sunk", "row", "m", "center")
statusTitle = TextContent("Morning shift in progress")
statusBadge = Badge("Open", "success")

salesSection = Card([salesHeading, salesKpis, salesChart], "sunk")
salesHeading = Heading("Sales Today vs Target", "h3")
salesKpis = Table([salesMetric, salesValue])
salesMetric = Col("Metric", ["Sales today", "Target", "Progress"])
salesValue = Col("Value", ["$8,420", "$10,000", "84%"])
salesChart = BarChart(["8am", "10am", "12pm", "2pm", "4pm", "6pm"], [salesActual, salesTarget], "grouped", "Hour", "USD")
salesActual = Series("Actual", [420, 980, 1540, 2210, 2890, 3420])
salesTarget = Series("Target", [500, 1200, 1800, 2400, 3000, 3600])

trafficSection = Card([trafficHeading, trafficChart], "sunk")
trafficHeading = Heading("Foot Traffic Through the Day", "h3")
trafficChart = AreaChart(["8am", "10am", "12pm", "2pm", "4pm", "6pm"], [trafficSeries], "natural", "Hour", "Visitors")
trafficSeries = Series("Visitors", [40, 120, 260, 310, 220, 180])

sellersSection = Card([sellersHeading, sellersTable], "sunk")
sellersHeading = Heading("Best Sellers", "h3")
sellersTable = Table([sellerItem, sellerUnits])
sellerItem = Col("Item", ["Espresso Blend 1kg", "Cold Brew Can", "Pastry Assortment", "Ceramic Mug", "Filter Papers"])
sellerUnits = Col("Units sold", [86, 74, 61, 45, 38])

stockSection = Card([stockHeading, stockList], "sunk")
stockHeading = Heading("Out of Stock", "h3")
stockList = ListBlock([stock1, stock2, stock3])
stock1 = ListItem("Oat Milk 1L", "Restock needed — 0 on hand", null, "Reorder")
stock2 = ListItem("Caramel Syrup", "Restock needed — 0 on hand", null, "Reorder")
stock3 = ListItem("Paper Cups 12oz", "Restock needed — 0 on hand", null, "Reorder")

shiftSection = Card([shiftHeading, shiftList], "sunk")
shiftHeading = Heading("On Shift Today", "h3")
shiftList = ListBlock([shift1, shift2, shift3, shift4])
shift1 = ListItem("Maya Chen", "Barista · 7am – 3pm")
shift2 = ListItem("Diego Ruiz", "Cashier · 8am – 4pm")
shift3 = ListItem("Priya Patel", "Barista · 10am – 6pm")
shift4 = ListItem("Tom Novak", "Shift lead · 9am – 5pm")

basketSection = Card([basketHeading, basketValue, basketNote], "sunk")
basketHeading = Heading("Average Basket Size", "h3")
basketValue = Progress(72, "$7.20 average basket")
basketNote = TextCallout("info", "Up 8%", "Average basket is $7.20, up from $6.67 last week.")

returnsSection = Card([returnsHeading, returnsChart], "sunk")
returnsHeading = Heading("Returns This Week", "h3")
returnsChart = BarChart(["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"], [returnsSeries], "grouped", "Day", "Returns")
returnsSeries = Series("Returns", [3, 5, 2, 4, 6, 1, 2])

promoSection = Card([promoHeading, promoTable], "sunk")
promoHeading = Heading("Promotions Performance", "h3")
promoTable = Table([promoName, promoUnits, promoRevenue])
promoName = Col("Promotion", ["Happy Hour 20%", "Bundle Deal", "Loyalty Double Points"])
promoUnits = Col("Units", [120, 89, 210])
promoRevenue = Col("Revenue", ["$1,440", "$1,780", "$2,100"])

registerSection = Card([registerHeading, registerTable], "sunk")
registerHeading = Heading("Registers", "h3")
registerTable = Table([registerName, registerStatus])
registerName = Col("Register", ["Register 1", "Register 2", "Register 3", "Register 4"])
registerStatus = Col("Status", ["Open", "Open", "Closed", "Open"])

reorderSection = Card([reorderHeading, reorderForm], "sunk")
reorderHeading = Heading("Reorder an Item", "h3")
reorderForm = Form("reorder", reorderButtons, [reorderItemField, reorderQtyField])
reorderItemField = FormControl("Item", reorderSelect)
reorderSelect = Select("item", [reorderOpt1, reorderOpt2, reorderOpt3], "Choose an item")
reorderOpt1 = SelectItem("oat", "Oat Milk 1L")
reorderOpt2 = SelectItem("syrup", "Caramel Syrup")
reorderOpt3 = SelectItem("cups", "Paper Cups 12oz")
reorderQtyField = FormControl("Quantity", reorderQtyInput)
reorderQtyInput = Input("quantity", "e.g. 24", "number")
reorderButtons = Buttons([reorderSubmit])
reorderSubmit = Button("Submit reorder", null, "primary")

storeSection = Card([storeHeading, storeForm], "sunk")
storeHeading = Heading("View a Different Store", "h3")
storeForm = Form("store-select", storeButtons, [storeField])
storeField = FormControl("Store", storeSelect)
storeSelect = Select("store", [storeOpt1, storeOpt2, storeOpt3], "Choose a store")
storeOpt1 = SelectItem("42", "Store #42 — Downtown")
storeOpt2 = SelectItem("17", "Store #17 — Uptown")
storeOpt3 = SelectItem("88", "Store #88 — Mall")
storeButtons = Buttons([storeSubmit])
storeSubmit = Button("View store", null, "primary")

weekCompareSection = Card([weekCompareHeading, weekCompareChart], "sunk")
weekCompareHeading = Heading("This Week vs Last Week", "h3")
weekCompareChart = LineChart(["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"], [thisWeekSeries, lastWeekSeries], "linear", "Day", "Sales ($)")
thisWeekSeries = Series("This week", [1240, 1380, 1120, 1490, 1680, 2100, 1880])
lastWeekSeries = Series("Last week", [1100, 1250, 1180, 1320, 1540, 1950, 1720])

followups = FollowUpBlock([follow1, follow2, follow3])
follow1 = FollowUpItem("Show today's top-selling category")
follow2 = FollowUpItem("Compare register performance")
follow3 = FollowUpItem("View inventory reorder recommendations")