> ## Documentation Index
> Fetch the complete documentation index at: https://docs.daylightcalendar.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Month View: Full Monthly Calendar Grid

> The Month view displays a monthly calendar grid with event chips. Configure overflow, week numbers, and detail options for your Home Assistant card.

The Month view renders a classic calendar grid — one row per week, one column per day — giving you an at-a-glance picture of the entire month. Events appear as colored chips on each day cell, and you can tap any chip to open the event detail panel. Use the arrow buttons in the card header to move between months, or swipe left and right directly on the grid.

## Activating Month View

Set `default_view` to `month` in your card configuration to open the card on the monthly grid by default:

```yaml theme={null}
type: custom:daylight-calendar-card
default_view: month
```

Users can still switch to other views using the view selector buttons in the card header. To hide those buttons and lock the card to Month view, add `hide_view_selector: true`.

## Configuration Options

<ParamField path="show_all_events_month" default="false" type="boolean">
  Used by **Month** only.

  By default, day cells truncate their event list and show a **+N more** overflow label when there are more events than fit in the cell. Set this to `true` to expand every day cell and display all events without truncation. This increases the row height dynamically, so the card will grow taller on busy weeks.
</ParamField>

<ParamField path="show_all_details_month" default="false" type="boolean">
  Used by **Month** only.

  When `true`, each event chip in the month grid includes the event start time and any additional detail text alongside the event title. This is also the flag that enables `show_event_location` / `use_short_location` rendering in Month — otherwise location is omitted from Month event chips.
</ParamField>

<ParamField path="show_week_numbers_month" default="false" type="boolean">
  Used by **Month** only.

  Adds an ISO week-number column on the left edge of the grid (e.g., **W 23**). Handy for work or project planning where teams reference week numbers.
</ParamField>

<ParamField path="month_day_tap_action" default="create" type="string">
  Used by **Month** only. Controls what happens when you tap an empty part of a day cell (tapping an event chip always opens that event's detail). Accepted values:

  * **`create`** (default) — preserves the existing behavior:
    * if event management is enabled **and** there is at least one writable calendar → open the new-event form prefilled with that date;
    * otherwise, if the day has visible events → open the day-events popup (see below);
    * otherwise (a day with no visible events and no way to create one) → nothing happens.
  * **`show_events`** — tapping a day that **has visible events** opens a popup listing that day's **visible** events (i.e. after hidden-calendar, hidden-style, and `past_event_mode` filtering); tap any event there to view, edit, or delete it. **Empty days still open the new-event form** (when event management is enabled and a writable calendar exists), so blank days stay quick to add to.

  In the `show_events` popup, an **Add Event** button (prefilled with that date) is shown when **all** of the following are true: event management is enabled, at least one writable calendar exists, and [`hide_add_event_button`](/configuration/event-management) is `false`.

  Within the popup, closing an event's details — or adding, editing, or deleting an event — returns you to the day-events list (refreshed), rather than dropping back to the calendar.

  This is handy on phones, where a busy day's chips can be hard to read in the grid.
</ParamField>

<ParamField path="rolling_weeks" default="null" type="number">
  Used by **Month** only.

  By default, Month view snaps to a full calendar month — every cell from the 1st to the last day of the current month, padded with neighboring days to fill complete weeks. Set `rolling_weeks` to a positive integer to switch to a **rolling N-week window** that always starts on the current week and looks forward `N` weeks.

  For example, `rolling_weeks: 4` renders four week rows: this week plus the next three. Navigation arrows shift the window one week at a time instead of one month.
</ParamField>

<ParamField path="first_day_of_week" default="0" type="number">
  Used by **Month**, **Week Compact**, and **Schedule**. In Week Compact and Schedule, only affects normal week mode — it is ignored in rolling-days mode.

  The day number (0–6) that anchors the left edge of the grid. Set to `1` to start each row on Monday.
</ParamField>

<ParamField path="shorten_event_times" default="false" type="boolean">
  Used by **Month**, **Week**, **Schedule**, and **Agenda**.

  When `true`, event time labels are abbreviated — for example `10 AM` instead of `10:00 AM`. In Month, time labels only appear on event chips when `show_all_details_month` is enabled.
</ParamField>

<ParamField path="use_24hr_schedule" default="false" type="boolean">
  Used by **Month**, **Week**, **Schedule**, and **Agenda**. Despite the name, it is used by the shared event-time formatter, not only the Schedule view.

  When `true`, event times use 24-hour format (e.g. `14:00`) instead of 12-hour format with AM/PM.
</ParamField>

<ParamField path="show_event_location" default="false" type="boolean">
  Used by **Week**, **Schedule**, and **Agenda**. Also applies to **Month** only when `show_all_details_month` is enabled — it does not affect normal Month event chips.

  When `true`, the location field of each event is displayed below the event title.
</ParamField>

<ParamField path="use_short_location" default="false" type="boolean">
  Used by **Week**, **Schedule**, and **Agenda**. Also applies to **Month** only when `show_all_details_month` is enabled. Has no visible effect unless `show_event_location` is also enabled.

  Truncates long location strings to a shorter form so they don't push event chips taller.
</ParamField>

<ParamField path="hide_times_for_calendars" default="[]" type="array">
  Used by **Month**, **Week**, **Schedule**, and **Agenda**.

  An array of calendar entity IDs whose events should not display time labels. Useful for all-day-style calendars where exact times are noise.
</ParamField>

<ParamField path="past_event_mode" default="none" type="string">
  Used by **Month**, **Week**, **Schedule**, and **Agenda**. Controls how events that have already ended are handled across the card. Accepted values:

  * `none` — past events look identical to upcoming events (default).
  * `muted` — past events are rendered at reduced opacity so today's and future events stand out.
  * `hide` — past events are not rendered at all.
</ParamField>

## Example Configuration

The following configuration activates Month view with week numbers, full event lists, and muted past events:

```yaml theme={null}
type: custom:daylight-calendar-card
default_view: month
show_all_events_month: true
show_all_details_month: false
show_week_numbers_month: true
past_event_mode: muted
```

## Tips

<Tip>
  If you place the Daylight Calendar Card inside a **panel** or **grid** dashboard layout where the card is expected to fill a fixed container, add `compact_height: true`. This makes the card match its parent container's height exactly instead of expanding to fit all content, preventing layout overflow on busy months.
</Tip>

<Tip>
  Combine `show_all_events_month: false` (the default) with `past_event_mode: muted` for the cleanest month view: upcoming events pop visually while past events fade into the background without disappearing entirely.
</Tip>
