root = Card([header, kpiRow, filterRow, ticketsSection, newTicketBtn])
header = CardHeader("Support Morning View", "Live snapshot of open tickets and response times")
kpiRow = Card([openTicketsKpi, avgResponseKpi], "clear", "row", "l")
openTicketsKpi = Callout("info", "Open Tickets", "24")
avgResponseKpi = Callout("success", "Avg First Response", "1h 42m")
filterRow = Card([priorityFilter], "clear", "row", "m")
priorityFilter = Buttons([highPriorityBtn])
highPriorityBtn = Button("Show High Priority Only", null, "secondary")
ticketsSection = Card([ticketsTable], "sunk")
ticketsTable = Table([ticketIdCol, subjectCol, priorityCol, statusCol, createdCol])
ticketIdCol = Col("ID", ["#1042", "#1041", "#1040", "#1039", "#1038"])
subjectCol = Col("Subject", ["Login failure on mobile", "Billing discrepancy", "API rate limit exceeded", "Password reset not working", "Export feature request"])
priorityCol = Col("Priority", [highTag, highTag, mediumTag, lowTag, lowTag])
highTag = Tag("High", null, "md", "danger")
mediumTag = Tag("Medium", null, "md", "warning")
lowTag = Tag("Low", null, "md", "info")
statusCol = Col("Status", ["Open", "Open", "In Progress", "Open", "Waiting on Customer"])
createdCol = Col("Created", ["2h ago", "4h ago", "6h ago", "8h ago", "12h ago"])
newTicketBtn = Buttons([createTicketBtn])
createTicketBtn = Button("Open New Ticket", null, "primary")