root = Card([header, dateRange, kpiRow, visitorsChart, trafficSourcesChart, subscriberChart, campaignsTable, bestCampaign, exportBtn])
header = CardHeader("Marketing Weekly Dashboard", "Last 30 days · Updated today")
dateRange = Form("date-filter", dateButtons, [dateField])
dateField = FormControl("Date range", datePicker)
datePicker = DatePicker("range", "range", [], ["2024-01-01", "2024-01-30"])
dateButtons = Buttons([applyBtn])
applyBtn = Button("Apply")
kpiRow = Card([visitorsKpi, conversionKpi, subscribersKpi], "clear", "row", "m")
visitorsKpi = Card([visitorsLabel, visitorsValue], "sunk", "column", "xs")
visitorsLabel = TextContent("Site Visitors", "small")
visitorsValue = TextContent("128,450", "large-heavy")
conversionKpi = Card([conversionLabel, conversionValue], "sunk", "column", "xs")
conversionLabel = TextContent("Conversion Rate", "small")
conversionValue = TextContent("3.24%", "large-heavy")
subscribersKpi = Card([subscribersLabel, subscribersValue], "sunk", "column", "xs")
subscribersLabel = TextContent("Email Subscribers", "small")
subscribersValue = TextContent("42,180", "large-heavy")
visitorsChart = Card([visitorsHeading, visitorsLine], "sunk")
visitorsHeading = Heading("Daily Site Visitors", "h3")
visitorsLine = LineChart(visitorLabels, [visitorSeries], "natural", "Day", "Visitors")
visitorLabels = ["Day 1", "Day 2", "Day 3", "Day 4", "Day 5", "Day 6", "Day 7", "Day 8", "Day 9", "Day 10", "Day 11", "Day 12", "Day 13", "Day 14", "Day 15", "Day 16", "Day 17", "Day 18", "Day 19", "Day 20", "Day 21", "Day 22", "Day 23", "Day 24", "Day 25", "Day 26", "Day 27", "Day 28", "Day 29", "Day 30"]
visitorSeries = Series("Visitors", [3200, 3450, 3100, 3800, 4200, 3900, 3600, 4100, 4500, 4300, 4000, 4800, 5200, 4900, 4600, 5100, 5500, 5300, 5000, 5800, 6200, 5900, 5600, 6100, 6500, 6300, 6000, 6800, 7200, 6900])
trafficSourcesChart = Card([trafficHeading, trafficPie], "sunk")
trafficHeading = Heading("Top 5 Traffic Sources", "h3")
trafficPie = PieChart(trafficLabels, trafficValues, "donut", "circular")
trafficLabels = ["Organic Search", "Paid Search", "Direct", "Referral", "Social"]
trafficValues = [45, 25, 15, 10, 5]
subscriberChart = Card([subscriberHeading, subscriberArea], "sunk")
subscriberHeading = Heading("Email Subscriber Growth", "h3")
subscriberArea = AreaChart(subscriberLabels, [subscriberSeries], "natural", "Day", "Subscribers")
subscriberLabels = ["Week 1", "Week 2", "Week 3", "Week 4"]
subscriberSeries = Series("New Subscribers", [1200, 1850, 2100, 1950])
campaignsTable = Card([campaignsHeading, campaignsTableComp], "sunk")
campaignsHeading = Heading("Running Campaigns", "h3")
campaignsTableComp = Table([campaignName, campaignSpend, campaignImpressions, campaignClicks, campaignConversions, campaignCPA])
campaignName = Col("Campaign", ["Summer Sale", "Brand Awareness", "Retargeting", "Product Launch", "Newsletter Promo"])
campaignSpend = Col("Spend", [12500, 8200, 5600, 15000, 3200], "number")
campaignImpressions = Col("Impressions", [450000, 320000, 180000, 620000, 95000], "number")
campaignClicks = Col("Clicks", [12500, 8900, 5400, 18600, 3200], "number")
campaignConversions = Col("Conversions", [420, 180, 320, 680, 95], "number")
campaignCPA = Col("CPA", [29.76, 45.56, 17.50, 22.06, 33.68], "number")
bestCampaign = Callout("success", "Best Performing Campaign", "Retargeting campaign leads with a $17.50 CPA — 41% below average. Consider increasing budget allocation.")
exportBtn = Buttons([exportButton])
exportButton = Button("Export Report (CSV)")