root = Card([header, metricsRow, filterRow, ticketsSection, newTicketTrigger])
header = CardHeader("Support Lead Morning View", "Live queue snapshot")
metricsRow = Card([openTicketsMetric, avgResponseMetric], "clear", "row", "l")
openTicketsMetric = Card([openTicketsLabel, openTicketsValue], "sunk", "column", "s", "center")
openTicketsLabel = TextContent("Open tickets", "small")
openTicketsValue = TextContent("24", "large-heavy")
avgResponseMetric = Card([avgResponseLabel, avgResponseValue], "sunk", "column", "s", "center")
avgResponseLabel = TextContent("Avg first response", "small")
avgResponseValue = TextContent("1h 42m", "large-heavy")
filterRow = Card([filterLabel, priorityFilter], "clear", "row", "m", "center")
filterLabel = TextContent("Filter:", "small-heavy")
priorityFilter = Buttons([allBtn, highOnlyBtn], "row")
allBtn = Button("All priorities", null, "secondary")
highOnlyBtn = Button("High only", null, "primary")
ticketsSection = Card([ticketsHeading, ticketsTable], "card", "column", "m")
ticketsHeading = Heading("Five most recent tickets", "h3")
ticketsTable = Table([ticketIdCol, ticketSubjectCol, ticketPriorityCol, ticketStatusCol, ticketAssigneeCol])
ticketIdCol = Col("ID", ["#1024", "#1023", "#1022", "#1021", "#1020"])
ticketSubjectCol = Col("Subject", ["Login fails on mobile", "Export CSV timeout", "Billing discrepancy", "API rate limit hit", "Password reset email not sent"])
ticketPriorityCol = Col("Priority", ["High", "Medium", "High", "Low", "High"])
ticketStatusCol = Col("Status", ["Open", "Open", "In progress", "Open", "Open"])
ticketAssigneeCol = Col("Assignee", ["M. Chen", "J. Patel", "A. Rossi", "S. Kim", "M. Chen"])
newTicketTrigger = DialogBlock("Open new ticket", "Create ticket", "Fill in the details below to open a new support ticket", newTicketForm, "primary")
newTicketForm = Form("new-ticket", formButtons, [subjectField, priorityField, descriptionField, assigneeField])
subjectField = FormControl("Subject", subjectInput, "Brief summary of the issue")
subjectInput = Input("subject", "e.g. Login fails on mobile Safari")
priorityField = FormControl("Priority", prioritySelect)
prioritySelect = Select("priority", [priorityLow, priorityMedium, priorityHigh, priorityUrgent], "Select priority")
priorityLow = SelectItem("low", "Low")
priorityMedium = SelectItem("medium", "Medium")
priorityHigh = SelectItem("high", "High")
priorityUrgent = SelectItem("urgent", "Urgent")
descriptionField = FormControl("Description", descriptionArea, "Steps to reproduce, expected vs actual behavior")
descriptionArea = TextArea("description", "Describe the issue...", 4)
assigneeField = FormControl("Assign to", assigneeSelect, "Optional — leave blank for auto-assignment")
assigneeSelect = Select("assignee", [assigneeUnassigned, assigneeChen, assigneePatel, assigneeRossi, assigneeKim], "Auto-assign")
assigneeUnassigned = SelectItem("", "— Auto-assign —")
assigneeChen = SelectItem("chen", "M. Chen")
assigneePatel = SelectItem("patel", "J. Patel")
assigneeRossi = SelectItem("rossi", "A. Rossi")
assigneeKim = SelectItem("kim", "S. Kim")
formButtons = Buttons([createBtn, cancelBtn])
createBtn = Button("Create ticket", null, "primary")
cancelBtn = Button("Cancel", null, "tertiary")