root = Card([header, totalSpentCallout, budgetInfo, largestExpense, categoryTable, changeMonthButton, monthDialog, expenseForm, formButtons])
header = CardHeader("Budget Check", "Current month")
totalSpentCallout = Callout("info", "Total Spent", "Current month total: $1,200")
budgetInfo = Callout("neutral", "Budget", "Monthly budget: $2,000")
largestExpense = Callout("warning", "Largest Expense", "Rent: $800")
catCol = Col("Category", ["Rent", "Groceries", "Utilities", "Entertainment", "Transportation"], "string")
amountCol = Col("Amount", [800, 300, 150, 100, 50], "number")
categoryTable = Table(columns: [catCol, amountCol])
changeMonthButton = Button("Change Month")
monthItemJAN = ListItem("January")
monthItemFEB = ListItem("February")
monthItemMAR = ListItem("March")
monthList = ListBlock([monthItemJAN, monthItemFEB, monthItemMAR])
monthDialog = DialogBlock("Change Month", "Select Month", "Choose month to view", monthList, "default")
categorySelect = Select("category", [catS1, catS2, catS3, catS4, catS5], "Select category", null, null, "medium")
catS1 = SelectItem("Rent", "Rent")
catS2 = SelectItem("Groceries", "Groceries")
catS3 = SelectItem("Utilities", "Utilities")
catS4 = SelectItem("Entertainment", "Entertainment")
catS5 = SelectItem("Transportation", "Transportation")
amountInput = Input("amount", "0", "number", null, "0")
descriptionTextArea = TextArea("description", "New expense", 2, null, "")
formButtons = Buttons([submitBtn, cancelBtn])
submitBtn = Button("Add Expense", null, "primary")
cancelBtn = Button("Cancel", null, "tertiary")
expenseForm = Form("expenseForm", formButtons, [categoryField, amountField, descriptionField])
categoryField = FormControl("Category", categorySelect)
amountField = FormControl("Amount", amountInput)
descriptionField = FormControl("Description", descriptionTextArea)