root = Card([header, enrollmentSection, applicationsSection, acceptanceSection, tuitionSection, coursesSection, facultySection, riskSection, scholarshipSection, housingSection, eventsSection, givingSection, focusSection, comparisonSection, waitlistSection, approvalSection, messageSection])
header = CardHeader("University Administrator Overview", "ACME University · Spring 2026")
enrollmentSection = Card([enrollHeader, enrollStat, enrollTrend, enrollChart], "sunk", "column", "m")
enrollHeader = Heading("Total enrollment", "h2")
enrollStat = TextContent("42,380 students", "large-heavy")
enrollTrend = Tag("↑ 1.2% vs last year", null, null, "success")
enrollChart = LineChart(["2021", "2022", "2023", "2024", "2025"], [enrollSeries], "natural", "Year", "Students")
enrollSeries = Series("Enrollment", [39420, 40210, 41180, 41890, 42380])
applicationsSection = Card([appHeader, appChart], "sunk", "column", "m")
appHeader = Heading("Applications by program", "h2")
appChart = HorizontalBarChart(["Computer Science", "Business", "Biology", "Psychology", "Engineering"], [appSeries], "grouped", "Applications", "Program")
appSeries = Series("Applications", [8420, 6230, 3890, 2940, 5180])
acceptanceSection = Card([acceptHeader, acceptStat, acceptProgress], "sunk", "column", "m")
acceptHeader = Heading("Acceptance rate", "h2")
acceptStat = TextContent("62.4% of applicants admitted", "large-heavy")
acceptProgress = Progress(62.4, "Admission rate")
tuitionSection = Card([tuitionHeader, tuitionStat, tuitionNote], "sunk", "column", "m")
tuitionHeader = Heading("Tuition revenue this year", "h2")
tuitionStat = TextContent("$184.2M", "large-heavy")
tuitionNote = TextContent("Tuition and fees collected, fiscal year to date", "small")
coursesSection = Card([coursesHeader, coursesTable], "sunk", "column", "m")
coursesHeader = Heading("Course offering capacity", "h2")
coursesTable = Table([courseCol, enrolledCol, capacityCol, fillCol])
courseCol = Col("Course", ["CS 101", "MATH 220", "BIO 310", "PSY 250", "ENG 110"])
enrolledCol = Col("Enrolled", [320, 95, 210, 150, 60])
capacityCol = Col("Capacity", [300, 120, 240, 160, 80])
fillCol = Col("Fill", ["107%", "79%", "88%", "94%", "75%"])
facultySection = Card([facultyHeader, loadChart], "sunk", "column", "m")
facultyHeader = Heading("Teaching load by faculty member", "h2")
loadChart = HorizontalBarChart(["Dr. Alvarez", "Dr. Chen", "Dr. Okafor", "Dr. Reyes", "Dr. Novak"], [loadSeries], "grouped", "Credit hours", "Faculty")
loadSeries = Series("Credit hours", [12, 9, 15, 12, 6])
riskSection = Card([riskHeader, riskAlert, riskList], "sunk", "column", "m")
riskHeader = Heading("Students at academic risk", "h2")
riskAlert = Alert("428 students flagged", "Below 2.0 GPA or on academic probation. 62 are first-year students.", "warning")
riskList = ListBlock([riskItem1, riskItem2, riskItem3, riskItem4], "number")
riskItem1 = ListItem("Probation — 231 students", "GPA below 2.0 for two consecutive terms")
riskItem2 = ListItem("At-risk alert — 197 students", "GPA 2.0–2.3 with downward trend")
riskItem3 = ListItem("First-year support — 62 students", "Targeted advising recommended")
riskItem4 = ListItem("STEM gateway — 48 students", "Failing calculus or intro CS")
scholarshipSection = Card([scholarHeader, scholarStat, scholarChart], "sunk", "column", "m")
scholarHeader = Heading("Scholarship budget utilization", "h2")
scholarStat = TextContent("$12.4M of $15.0M used", "large-heavy")
scholarChart = SingleStackedBarChart(["Used", "Remaining"], [12.4, 2.6])
housingSection = Card([housingHeader, housingStat, housingProgress], "sunk", "column", "m")
housingHeader = Heading("Housing occupancy", "h2")
housingStat = TextContent("94% occupied", "large-heavy")
housingProgress = Progress(94, "Residence hall occupancy")
eventsSection = Card([eventsHeader, eventsList], "sunk", "column", "m")
eventsHeader = Heading("Campus events this month", "h2")
eventsList = ListBlock([event1, event2, event3], "number")
event1 = ListItem("Spring Career Fair", "Mar 12 · Student Union Ballroom", null, "RSVP")
event2 = ListItem("Research Symposium", "Mar 18 · Innovation Center")
event3 = ListItem("Guest Lecture: Dr. Amara Diallo", "Mar 24 · Humanities Hall 200")
givingSection = Card([givingHeader, givingChart], "sunk", "column", "m")
givingHeader = Heading("Alumni giving", "h2")
givingChart = BarChart(["2023", "2024", "2025", "2026"], [givingSeries], "grouped", "Fiscal year", "Giving ($M)")
givingSeries = Series("Giving ($M)", [8.2, 9.1, 10.4, 11.6])
focusSection = Card([focusHeader, focusForm], "sunk", "column", "m")
focusHeader = Heading("Focus on one department", "h2")
focusForm = Form("department-focus", focusButtons, [focusDeptField])
focusDeptField = FormControl("Department", focusDeptSelect)
focusDeptSelect = Select("department", [deptCS, deptBusiness, deptBio, deptPsych, deptEng], "Choose department")
deptCS = SelectItem("cs", "Computer Science")
deptBusiness = SelectItem("business", "Business")
deptBio = SelectItem("bio", "Biology")
deptPsych = SelectItem("psych", "Psychology")
deptEng = SelectItem("eng", "Engineering")
focusButtons = Buttons([focusApply])
focusApply = Button("Apply filter", null, "primary")
comparisonSection = Card([compareHeader, compareTable], "sunk", "column", "m")
compareHeader = Heading("This semester vs last", "h2")
compareTable = Table([metricCol, lastSemCol, thisSemCol])
metricCol = Col("Metric", ["Enrolled students", "Average GPA", "Retention rate", "Average credit load"])
lastSemCol = Col("Fall 2025", [42010, 3.21, "91%", 14.2])
thisSemCol = Col("Spring 2026", [42380, 3.24, "92%", 14.5])
waitlistSection = Card([waitHeader, waitTable], "sunk", "column", "m")
waitHeader = Heading("Waitlisted students by program", "h2")
waitTable = Table([waitProgramCol, waitCountCol])
waitProgramCol = Col("Program", ["Computer Science", "Nursing", "Business", "Psychology", "Engineering"])
waitCountCol = Col("Waitlisted", [420, 255, 148, 96, 72])
approvalSection = Card([approveHeader, approveDialog], "sunk", "column", "m")
approveHeader = Heading("New course approval", "h2")
approveDialog = AlertDialogBlock("Approve new course", "Approve CS 450: Distributed Systems?", "3 credit hours · Instructor: Dr. Alvarez · Capacity: 60", "Approve", "Review later", "default")
messageSection = Card([messageHeader, messageForm], "sunk", "column", "m")
messageHeader = Heading("Message a student group", "h2")
messageForm = Form("student-message", messageButtons, [groupField, subjectField, bodyField])
groupField = FormControl("Recipient group", groupSelect)
groupSelect = Select("recipient", [groupAll, groupFreshmen, groupAthletes, groupGrad], "Select a group")
groupAll = SelectItem("all", "All students")
groupFreshmen = SelectItem("freshmen", "First-year students")
groupAthletes = SelectItem("athletes", "Student-athletes")
groupGrad = SelectItem("grad", "Graduate students")
subjectField = FormControl("Subject", subjectInput, "Keep it under 100 characters")
subjectInput = Input("subject", "Spring advising reminders")
bodyField = FormControl("Message", bodyTextArea)
bodyTextArea = TextArea("body", "Write your message...", 4)
messageButtons = Buttons([sendBtn])
sendBtn = Button("Send message", null, "primary")