root = Card([dateHeader, missingAlert, updatesList, blockedSection, postForm], "card", "column", "l")
dateHeader = CardHeader("Async Standup", "Wednesday, Jun 12 — Remote Team")
missingAlert = Callout("warning", "2 updates still missing", "Alex and Priya haven't posted yet today.")
updatesList = ListBlock([updateMaya, updateSam, updateJon], "number")
updateMaya = ListItem("Maya Chen", "Shipped the auth refactor. Working on rate-limit tests this afternoon.", null, "View")
updateSam = ListItem("Sam Okafor", "Reviewed 3 PRs. Blocked on staging DB credentials — see below.", null, "View")
updateJon = ListItem("Jon Rivera", "Docs updated for the new API. Starting on onboarding flow.", null, "View")
blockedSection = Card([blockedHeading, blockedCallout], "sunk")
blockedHeading = Heading("Blocked", "h3")
blockedCallout = TextCallout("danger", "Sam Okafor", "Needs staging DB credentials from DevOps to continue integration work.")
postForm = Form("post-update", formButtons, [statusField, blockerField])
statusField = FormControl("What did you work on yesterday?", statusInput, "Keep it under 200 characters")
statusInput = TextArea("status", "Summarize your progress...", 3)
blockerField = FormControl("Any blockers? (optional)", blockerInput)
blockerInput = Input("blocker", "Describe anything blocking you")
formButtons = Buttons([postBtn])
postBtn = Button("Post update", null, "primary")