root = Card([header, current, outlookSection, sunTimes, footer])
header = CardHeader("Morning Weather Brief", "Bengaluru · Friday, 14 June")
current = Card([currentHeading, tempRow, conditionText], "sunk")
currentHeading = Heading("Current conditions", "h3")
tempRow = Card([tempValue, condTag], "clear", "row", "xs")
tempValue = TextContent("26°C", "large-heavy")
condTag = Tag("Partly cloudy", null, null, "info")
conditionText = TextContent("Feels like 27°C · Humidity 65% · Wind 12 km/h from the west")
outlookSection = Card([outlookHeading, outlookTable, outlookChart])
outlookHeading = Heading("Next three days", "h3")
outlookTable = Table([dayCol, hiCol, loCol, condCol])
dayCol = Col("Day", ["Sat 15", "Sun 16", "Mon 17"])
hiCol = Col("High", ["29°C", "30°C", "28°C"])
loCol = Col("Low", ["20°C", "21°C", "19°C"])
condCol = Col("Conditions", ["Sunny intervals", "Thunderstorms", "Light rain"])
outlookChart = LineChart(["Sat 15", "Sun 16", "Mon 17"], [hiSeries, loSeries], "natural", "Day", "Temperature (°C)")
hiSeries = Series("High", [29, 30, 28])
loSeries = Series("Low", [20, 21, 19])
sunTimes = Card([sunHeading, sunTable])
sunHeading = Heading("Sunrise & sunset", "h3")
sunTable = Table([eventCol, timeCol])
eventCol = Col("Event", ["Sunrise", "Sunset"])
timeCol = Col("Time", ["05:58", "18:46"])
footer = FollowUpBlock([follow1, follow2])
follow1 = FollowUpItem("Show me the hourly forecast")
follow2 = FollowUpItem("Will it rain this weekend?")