Calendar grid
All copy is placeholder. Real strings come from the i18n layer.
Both layouts
Narrow is the base; chips are added at the breakpoint. The grid says where; a list beneath it says what.
narrow — count in the cell
wide — chips carry the detail
aria-pressed on the button.
What the component cannot decide
The first day of the week comes from the locale. Monday in much of the world, Sunday in much of the rest, Saturday in some. Same for the month and weekday names: locale data, which no translation catalogue reaches — recompute them when the language changes. The prototype computed them once at load and they stayed English.
Grouping is by the record's own calendar day, not by an
instant. An Event at 00:30 belongs to the day it is on at its Venue.
Converting an instant back to a day with toISOString lands it on the
previous day for anything east of UTC — which is the bug this screen is most likely
to have.
A busy day, and an empty month
A cell that grew to fit twelve items would reflow the month, so overflow is a "+2 more" that scrolls the list beneath to that day. A month with nothing in it keeps its grid — it still has to be navigable — and says so underneath.