root = Card([header, missingCallout, blockedSection, updatesSection, postForm], "card", "column", "l")
header = CardHeader("Async Standup", "Monday, January 15, 2024")
missingCallout = TextCallout("warning", "Updates missing", "3 of 8 teammates haven't posted yet")
blockedSection = Card([blockedHeading, blockedList], "sunk", "column", "m")
blockedHeading = Heading("🚫 Blocked", "h3")
blockedList = ListBlock([blockedItem1, blockedItem2], "number")
blockedItem1 = ListItem("Sarah Chen", "Waiting on API credentials from DevOps — ticket #4421", null, "View ticket")
blockedItem2 = ListItem("Marcus Johnson", "Design review stalled — need feedback from product by EOD", null, "Ping product")
updatesSection = Card([updatesHeading, updatesList], "clear", "column", "m")
updatesHeading = Heading("✅ Today's Updates", "h3")
updatesList = ListBlock([update1, update2, update3, update4, update5], "number")
update1 = ListItem("Alex Rivera", "Shipped user onboarding flow v2. Metrics look good — 23% completion rate increase. Starting on passwordless auth next.", null, null)
update2 = ListItem("Priya Patel", "Fixed the mobile checkout crash (iOS 17.2). Pushed hotfix to TestFlight. Writing regression tests today.", null, null)
update3 = ListItem("Jordan Kim", "Refactored notification service. Reduced latency by 40%. Deploying to staging this afternoon.", null, null)
update4 = ListItem("Taylor Brooks", "Completed Q4 retrospective doc. Sharing with leads for review. Prep for planning session Thursday.", null, null)
update5 = ListItem("Casey Morgan", "Investigating memory leak in data pipeline. Found root cause in batch processor. Fix in progress.", null, null)
postForm = Form("standup-update", postButtons, [updateField])
updateField = FormControl("Your update", updateInput, "What did you do yesterday? What's today? Any blockers?")
updateInput = TextArea("update", "Write your standup update...", 4, null, "")
postButtons = Buttons([submitBtn, skipBtn], "row")
submitBtn = Button("Post update", null, "primary")
skipBtn = Button("Skip for now", null, "tertiary")