root = Card([header, headcountCard, tableOpenRoles, listBlockCandidates, avgTimeText, pieChartDept, tableInterviews, lineChartAttrition, actionsButtons])
header = CardHeader("Hiring Overview", "Key Metrics")
headcountHeader = CardHeader("Current Headcount")
headcountText = TextContent("120", "large")
headcountCard = Card([headcountHeader, headcountText], "card", "column")
openRoleNames = ["Software Engineer", "Product Manager", "Designer"]
openDeptNames = ["Engineering", "Product", "Design"]
colRole = Col("Role", openRoleNames, "string")
colDept = Col("Department", openDeptNames, "string")
tableOpenRoles = Table([colRole, colDept])
listItemSourcing = ListItem("Sourcing", "30", null, null)
listItemScreening = ListItem("Screening", "20", null, null)
listItemInterview = ListItem("Interview", "15", null, null)
listItemOffer = ListItem("Offer", "10", null, null)
listItemHired = ListItem("Hired", "12", null, null)
listBlockCandidates = ListBlock([listItemSourcing, listItemScreening, listItemInterview, listItemOffer, listItemHired], "number")
avgTimeText = TextContent("Avg time to hire: 28 days", "large")
deptLabels = ["Engineering", "Product", "Design", "HR", "Sales"]
deptValues = [50, 35, 20, 10, 5]
pieChartDept = PieChart(deptLabels, deptValues, "pie", "circular")
scheduledRoles = ["Software Engineer", "Product Manager", "Designer"]
scheduledDates = ["Mon", "Tue", "Wed"]
colRole2 = Col("Role", scheduledRoles, "string")
colDate = Col("Date", scheduledDates, "string")
tableInterviews = Table([colRole2, colDate])
months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun"]
attritionSeries = Series("Attrition", [2,3,1,4,2,3])
attritionSeriesList = [attritionSeries]
lineChartAttrition = LineChart(months, attritionSeriesList, "natural", "Month", "Attrition Count")
addRoleBtn = Button("Add New Role", null, "primary")
actionsButtons = Buttons([addRoleBtn])