# `FrappeUIPhx.Components.Calendar`
[🔗](https://github.com/moacirbishopcamata/frappe_ui_phx/blob/v0.3.1/lib/frappe_ui_phx/components/calendar.ex#L1)

Calendário mensal com eventos (visão de agenda). O mês exibido e o dia
selecionado são assigns do servidor; navegar e escolher são eventos
(`on_prev`, `on_next`, `on_today`, `on_select` com `%{"date" => "2026-03-09"}`).

Para *escolher uma data em formulário*, use `date_picker`. Experimental.

# `calendar`

## Attributes

* `id` (`:string`) (required)
* `month` (`:any`) - `Date` ou ISO de qualquer dia do mês (padrão: hoje). Defaults to `nil`.
* `events` (`:list`) - [%{date: Date | ISO, title: String, theme: atom}]. Defaults to `[]`.
* `selected` (`:any`) - Defaults to `nil`.
* `today` (`:any`) - sobrescreve "hoje" (testes). Defaults to `nil`.
* `on_prev` (`:string`) - Defaults to `nil`.
* `on_next` (`:string`) - Defaults to `nil`.
* `on_today` (`:string`) - Defaults to `nil`.
* `on_select` (`:string`) - Defaults to `nil`.
* `class` (`:any`) - Defaults to `nil`.
* Global attributes are accepted.

# `events_by_day`

```elixir
@spec events_by_day([map()]) :: %{required(Date.t()) =&gt; [map()]}
```

Agrupa eventos por dia (função pura); eventos com data inválida são descartados.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
