root = Card([header, spentInfo, categoryChart, largestExpenseCallout, monthSelect, addExpenseBtn, dialog])
header = CardHeader("Monthly Budget Overview", "Your spending summary")
spentInfo = TextContent("Spent $3,200 of $5,000", "default")
categoryChart = PieChart(["Food","Rent","Transport","Entertainment","Other"], [800,1500,300,400,500], "pie", "circular")
largestExpense = {"category":"Rent","amount":1500}
largestExpenseDesc = "Rent - $" + largestExpense.amount
largestExpenseCallout = Callout("info", "Largest Expense", largestExpenseDesc)
monthJ = SelectItem("January","January")
monthF = SelectItem("February","February")
monthM = SelectItem("March","March")
monthA = SelectItem("April","April")
monthM = SelectItem("May","May")
monthItems = [monthJ, monthF, monthM, monthA, monthM]
monthSelect = Select("month", monthItems, "Choose month")
addExpenseBtn = Button("Add Expense", null, "primary")
expenseNameInput = Input("expense_name", "Expense name", "text")
expenseAmountInput = Input("expense_amount", "Amount", "number", ["required","min:0"], "0")
expenseCategorySelect = Select("expense_category", [catFood, catRent, catTransport, catEntertainment, catOther], "Category")
catFood = SelectItem("Food","Food")
catRent = SelectItem("Rent","Rent")
catTransport = SelectItem("Transport","Transport")
catEntertainment = SelectItem("Entertainment","Entertainment")
catOther = SelectItem("Other","Other")
expenseDatePicker = DatePicker("expense_date", "single", ["required"], "2025-10-01")
expenseNameCtrl = FormControl("Expense name", expenseNameInput)
expenseAmountCtrl = FormControl("Amount", expenseAmountInput)
expenseCategoryCtrl = FormControl("Category", expenseCategorySelect)
expenseDateCtrl = FormControl("Date", expenseDatePicker)
formButtons = Buttons([submitBtn, cancelBtn])
submitBtn = Button("Add", null, "primary")
cancelBtn = Button("Cancel", null, "secondary")
form = Form("expense-form", formButtons, [expenseNameCtrl, expenseAmountCtrl, expenseCategoryCtrl, expenseDateCtrl])
dialog = DialogBlock("Add Expense", "Add New Expense", "", [form], "primary")