root = Card([header, statusRow, kpiSection, recentSection, filterSection, newTicketSection])
header = CardHeader("Support Lead", "Morning overview")
statusRow = Card([statusTag, newTicketBtn], "sunk", "row", "m", "center", "between")
statusTag = Tag("12 open tickets", null, "md", "info")
newTicketBtn = Button("New ticket", null, "primary")
kpiSection = Card([kpiHeading, kpiTable], "sunk")
kpiHeading = Heading("Key metrics", "h3")
kpiTable = Table([kpiMetric, kpiValue])
kpiMetric = Col("Metric", ["Open tickets", "Avg first response"])
kpiValue = Col("Value", ["12", "1h 24m"])
recentSection = Card([recentHeading, recentTable])
recentHeading = Heading("Recent tickets", "h3")
recentTable = Table([ticketId, ticketSubject, ticketPriority, ticketAge])
ticketId = Col("ID", ["#4821", "#4820", "#4819", "#4818", "#4817"])
ticketSubject = Col("Subject", ["Login failure on iOS", "Billing invoice missing", "API rate limit error", "Password reset not emailed", "Export stuck at 90%"])
ticketPriority = Col("Priority", ["High", "Medium", "High", "Low", "Medium"])
ticketAge = Col("Age", ["2h", "4h", "6h", "9h", "11h"])
filterSection = Card([filterHeading, filterButtons], "sunk")
filterHeading = Heading("Filter", "h3")
filterButtons = Buttons([allBtn, highBtn])
allBtn = Button("All tickets", null, "secondary", null, "small")
highBtn = Button("High priority only", null, "secondary", null, "small")
newTicketSection = Card([formIntro, ticketForm])
formIntro = CardHeader("Open a new ticket", "Create a ticket for a reported issue")
ticketForm = Form("new-ticket", formButtons, [subjectField, priorityField])
subjectField = FormControl("Subject", subjectInput)
subjectInput = Input("subject", "Brief description of the issue")
priorityField = FormControl("Priority", prioritySelect)
prioritySelect = Select("priority", [priorityLow, priorityMedium, priorityHigh], "Choose priority")
priorityLow = SelectItem("low", "Low")
priorityMedium = SelectItem("medium", "Medium")
priorityHigh = SelectItem("high", "High")
formButtons = Buttons([submitBtn, cancelBtn])
submitBtn = Button("Create ticket", null, "primary")
cancelBtn = Button("Cancel", null, "tertiary")