root = Card([header, countdown, agendaSection, speakersSection, ticketsSection, registerSection], "card", "column", "l")
header = CardHeader("DevSummit 2025", "March 14–15, 2025 · Moscone Center, San Francisco")
countdown = Callout("info", "Only 67 days to go", "Early-bird pricing ends soon. Join 2,000+ engineers for two days of talks, workshops, and networking.")
agendaSection = Card([agendaHeader, agendaTable], "sunk", "column", "m")
agendaHeader = Heading("Agenda", "h2")
agendaTable = Table([timeCol, sessionCol, speakerCol])
timeCol = Col("Time", ["9:00 AM", "10:30 AM", "1:30 PM", "3:30 PM"])
sessionCol = Col("Session", ["Keynote: The Future of the Web", "Breakout: AI at the Edge", "Panel: Scaling Developer Platforms", "Workshop: Shipping with LLMs"])
speakerCol = Col("Speaker", ["Ada Chen", "Marcus Bell", "Anika Roy & Sam Osei", "Tomás Rivera"])
speakersSection = Card([speakersHeader, speakerList], "sunk", "column", "m")
speakersHeader = Heading("Speakers", "h2")
speakerList = ListBlock([speaker1, speaker2, speaker3, speaker4], "image")
speaker1 = ListItem("Ada Chen", "Staff engineer; writes about distributed systems.", [adaImg])
adaImg = "https://picsum.photos/seed/ada/80/80"
speaker2 = ListItem("Marcus Bell", "Principal designer; formerly at Figma.", [marcusImg])
marcusImg = "https://picsum.photos/seed/marcus/80/80"
speaker3 = ListItem("Priya Nair", "ML researcher focused on on-device models.", [priyaImg])
priyaImg = "https://picsum.photos/seed/priya/80/80"
speaker4 = ListItem("Tomás Rivera", "Maintainer of KiteDB; OSS advocate.", [tomasImg])
tomasImg = "https://picsum.photos/seed/tomas/80/80"
ticketsSection = Card([ticketsHeader, ticketsTable], "sunk", "column", "m")
ticketsHeader = Heading("Tickets", "h2")
ticketsTable = Table([tierCol, priceCol, perksCol])
tierCol = Col("Tier", ["Standard", "Premium", "VIP"])
priceCol = Col("Price", ["$299", "$499", "$799"])
perksCol = Col("Includes", ["All talks + swag bag", "All talks + workshops + priority seating", "Everything + lunch + after-party + mentor time"])
registerSection = Card([registerHeader, registerForm], "sunk", "column", "m")
registerHeader = Heading("Register", "h2")
registerForm = Form("conference-registration", registerButtons, [nameField, emailField])
nameField = FormControl("Full name", nameInput)
nameInput = Input("fullName", "Jane Doe", "text")
emailField = FormControl("Email", emailInput, "We'll send your ticket to this address")
emailInput = Input("email", "you@example.com", "email")
registerButtons = Buttons([registerBtn])
registerBtn = Button("Register", null, "primary")