{{define "title"}}{{.Title}}{{end}} {{define "main"}}

{{.Data.Month.Title}}

{{/* Quick add sits BESIDE New event, not instead of it. The sentence is the fast path; the form is the one that shows every field, and neither is a lesser version of the other. */}}
{{template "quickadd" .}} New event
{{template "calendar-toolbar" (dict "View" "month" "Noun" "month" "Prev" (printf "/month/%s" .Data.Month.PrevISO) "Today" (printf "/month/%s" .Data.TodayMonth) "Next" (printf "/month/%s" .Data.Month.NextISO) "Day" (printf "/day/%s" .Data.SelectedISO) "Week" (printf "/week/%s" .Data.SelectedISO) "Month" (printf "/month/%s?date=%s" .Data.Month.ISO .Data.SelectedISO) "Agenda" (printf "/agenda?from=%s" .Data.SelectedISO))}} {{/* A real table. A month IS tabular data — seven weekday columns against week rows — so the headers come free for a screen reader, and a scriptless page keeps semantics a div grid would have to rebuild with ARIA. */}} {{range .Data.Month.Weekdays}}{{end}} {{range .Data.Month.Weeks}} {{range .Days}} {{end}} {{end}}
{{.Data.Month.Title}}, by week
{{.}}
{{.Day}}{{if .IsToday}} (today){{end}} {{range .Chips}}{{template "chip" .}}{{end}} {{/* A month cell that grew to fit its fullest day would make every row that tall. The overflow links to the day, which is the only place that can show them all. */}} {{if .More}}+{{.More}} more{{end}}
{{end}} {{define "content"}}{{end}}