root = Card([header, missingBanner, teamUpdates, postForm], "card", "column", "l")
header = CardHeader("Async Standup", "December 19, 2024")
missingBanner = Callout("info", "Updates missing", "1 teammate hasn't posted yet — Eve")
teamUpdates = SectionBlock([aliceSection, bobSection, carolSection, daveSection, eveSection], true)
aliceSection = SectionItem("alice", "Alice Chen", [aliceStatus])
aliceStatus = TextContent("✅ Completed API integration for payments, writing unit tests for edge cases. No blockers.")
bobSection = SectionItem("bob", "Bob Martinez", [bobStatus, bobBlocked])
bobStatus = TextContent("🔄 Working on new dashboard components, waiting for design review from UX team.")
bobBlocked = Callout("warning", "Blocked", "Design review pending — UX team hasn't shared Figma specs yet. ETA unknown.")
carolSection = SectionItem("carol", "Carol Park", [carolStatus])
carolStatus = TextContent("✅ Deployed v2.3 to staging, monitoring error rates and latency. All green so far.")
daveSection = SectionItem("dave", "Dave Kim", [daveStatus])
daveStatus = TextContent("🔄 Writing database migration script for user_preferences table. Testing rollback plan.")
eveSection = SectionItem("eve", "Eve Johnson", [eveStatus])
eveStatus = TextContent("⏳ No update posted yet. Click \"Post your update\" below to add yours.")
postForm = Form("standup-update", postButtons, [updateField])
updateField = FormControl("Your update", updateInput, "What did you do yesterday? What's today? Any blockers?")
updateInput = TextArea("update", "Type your standup update here...", 4)
postButtons = Buttons([submitBtn])
submitBtn = Button("Post update", null, "primary")