root = Card([header, missingCount, blockedSection, updatesSection, postForm], "card", "column", "l")
header = CardHeader("Async Standup — Team Sync", "Monday, January 15, 2024")
missingCount = TextContent("**3 updates still missing** — Alex, Jordan, and Taylor haven't posted yet", "default")
blockedSection = Card([blockedHeading, blockedList], "sunk", "column", "m")
blockedHeading = Heading("🚫 Blocked", "h3")
blockedList = ListBlock([blockedSam, blockedCasey], "number")
blockedSam = ListItem("Sam Chen", "Waiting on design review for checkout flow — pinged @design-team 2hrs ago", null, "View")
blockedCasey = ListItem("Casey Park", "API rate limit hit on payments integration — need infra to increase quota", null, "View")
updatesSection = Card([updatesHeading, updatesList], "clear", "column", "m")
updatesHeading = Heading("✅ Today's Updates", "h3")
updatesList = ListBlock([updateRiley, updateMorgan, updateSam, updateCasey, updateDrew], "number")
updateRiley = ListItem("Riley Kim", "Shipped mobile dark mode toggle • Fixed 3 layout bugs • Reviewing PR #247", null, "React")
updateMorgan = ListItem("Morgan Lee", "Finished user onboarding copy • A/B test variant B ready for review • Sync with PM at 2pm", null, "React")
updateSam = ListItem("Sam Chen", "Blocked: waiting on design review for checkout flow • Prepped migration script for tomorrow", null, "React")
updateCasey = ListItem("Casey Park", "Blocked: API rate limit on payments • Investigating fallback strategy • Docs update 80% done", null, "React")
updateDrew = ListItem("Drew Torres", "Deployed analytics event refactor • Verified event parity in staging • Pairing with Riley at 3pm", null, "React")
postForm = Form("standup-update", postButtons, [updateField, moodField])
updateField = FormControl("Your update", updateInput, "What did you do? What's next? Any blockers?")
updateInput = TextArea("update", "• Completed...\n• Next up...\n• Blocked by...", 5)
moodField = FormControl("How's your day going?", moodSelect)
moodSelect = Select("mood", [moodGreat, moodGood, moodMeh, moodTough], "Pick one")
moodGreat = SelectItem("great", "😄 Great — firing on all cylinders")
moodGood = SelectItem("good", "🙂 Good — steady progress")
moodMeh = SelectItem("meh", "😐 Meh — slow but moving")
moodTough = SelectItem("tough", "😰 Tough — need help")
postButtons = Buttons([postBtn, skipBtn])
postBtn = Button("Post update", null, "primary")
skipBtn = Button("Skip for now", null, "tertiary")