Vistas del calendario y detalle del día
El módulo de Calendario tiene dos pestañas y una barra de filtros siempre visible. Los valores por defecto están afinados para "qué está pasando este mes, en mi sede" — la pregunta más común — pero los filtros y el cambio de vista te permiten ampliar o estrechar según necesites.

La cuadrícula del mes
La pestaña Calendario es la superficie de aterrizaje por defecto. Renderiza una cuadrícula tradicional de mes con la fecha seleccionada resaltada y tres capas visuales en cada celda de día:
- Puntos de eventos — coloreados por el color elegido del evento. Un punto por evento, limitado visualmente para que un día ocupado no se desborde.
- Marcadores de cumpleaños — un pequeño ícono de pastel. Jalado directamente de
members.date_of_birth, no de ninguna fila de evento. - Subrayado de hoy — la fecha actual está subrayada, sin importar qué fecha hayas seleccionado.
Haz clic en cualquier fecha para cargar el panel de detalle del día debajo de la cuadrícula. Haz clic en el nombre del mes en el encabezado para saltar al selector de mes; haz clic en las flechas para avanzar un mes a la vez. La fecha seleccionada persiste cuando cambias de mes — el panel aún muestra cualquier fecha que fue elegida por última vez.
TIP
No tienes que entrar a un día para leer sus eventos — pasa el cursor sobre un punto de evento y aparece una tarjeta de vista previa con el título, hora y lugar.
Lo que la cuadrícula realmente consulta
La cuadrícula del mes corre una consulta de Supabase para la ventana visible: cada evento cuya event_date cae en el mes o cuyo recurring = true sin importar la fecha. El navegador luego expande las filas recurrentes en ocurrencias individuales usando la RRULE, filtrando fechas de excepción y fechas pasadas a recurrence_end_date. No hay un cron del servidor pre-computando filas de ocurrencias — todo se deriva sobre la marcha.
Eso significa que los cambios se propagan instantáneamente. Edita la RRULE de un evento recurrente y las nuevas fechas se renderizan en el siguiente render; agrega una excepción y la fecha cancelada desaparece el momento en que la consulta se revalida.
El panel de detalle del día
Debajo de la cuadrícula, una tarjeta muestra todo en la fecha actualmente seleccionada — primero eventos, luego cumpleaños, separados por un divisor cuando ambos están presentes. Cada tarjeta de evento lleva:
- Una barra coloreada que coincide con el color del evento.
- Título, hora de inicio/fin, lugar.
- Un ícono de repetir si la fecha vino de una expansión recurrente.
- Un distintivo de sede si el evento tiene alcance a una unidad org específica.
- Botones de editar y eliminar (visibles solo si tienes
events.edit/events.delete).
Haz clic en cualquier lugar de la tarjeta para abrir el diálogo de edición; haz clic en el ícono de basura para la confirmación de eliminado lógico. Las tarjetas de cumpleaños son cliqueables y enlazan directamente al perfil del miembro.
El estado vacío es intencional: si nada está en la fecha y tienes events.create, aparece un pequeño enlace "+ Agregar evento" en el panel vacío para que puedas llenarlo sin salir de la pantalla.
La lista próximos
La pestaña Próximos voltea el calendario: en lugar de presentar un mes, muestra los próximos veinte eventos desde hoy hacia adelante, en orden cronológico. Cada fila es la misma tarjeta compacta de evento que ves en el panel del día, más una etiqueta de fecha.
Usa esta pestaña cuando estés respondiendo "¿qué sigue?" en lugar de "¿qué hay el 14 de marzo?" — es la vista correcta para una reunión de líderes del lunes en la mañana donde estás revisando la semana por delante.
La consulta de próximos está acotada por el filtro de sede y por el rol del usuario. Un líder asignado a una sede solo ve los eventos de esa sede; un admin global ve los veinte de toda la org.
Filtrando por unidad org
La barra de herramientas lleva un solo menú desplegable etiquetado con un ícono de sede. Por defecto muestra tu sede asignada; los admins con alcance global ven "Todas las sedes."
El filtro aplica una cláusula OR org_unit_id IS NULL, lo que significa que los eventos de toda la org permanecen visibles sin importar qué sede elijas. Un servicio de Navidad marcado como de toda la org aparece en el calendario de cada sede. Solo los eventos específicos de sede (con un org_unit_id concreto) quedan fuera de alcance.
Los usuarios cuyo rol no abarca toda la org solo ven en el menú desplegable las sedes a las que están asignados. No hay "fuga" — elegir una sede a la que no estás asignado no es una opción en primer lugar.
WARNING
El filtro actualmente no soporta selección múltiple. Si necesitas comparar dos sedes específicas, alterna entre ellas; si necesitas una vista verdaderamente entre sedes, elige "Todas las sedes."
Filtrando por categoría de evento
Cada evento tiene una columna de texto category (configurada en el formulario de evento, separada del color) — valores como service, outreach, meeting, social. El calendario no surface la categoría como filtro de nivel superior hoy; se registra para uso por reportes y por futuras pasadas de filtro.
Si estás buscando un subconjunto de una sola categoría ahora mismo, el workaround es la lista próximos — escanea visualmente por color, ya que la mayoría de las orgs mapean color a categoría uno a uno (azul = servicio, verde = evangelización, etc.).
Permisos y lo que cada rol ve
Las reglas de vista son simples:
| Rol | Ve |
|---|---|
| Admin | Todo en la org, cada sede. |
| Pastor | Todo en sus sedes asignadas. |
| Líder | Eventos de toda la org + eventos de su sede asignada. |
| Miembro | Eventos de toda la org + eventos en su sede principal. |
El mismo permiso events.view controla la página por completo. Sin él, el ítem de menú está oculto.
Móvil y pantallas pequeñas
En un teléfono, la cuadrícula del mes mantiene su diseño completo pero cada celda se encoge; los puntos de eventos colapsan de barras coloreadas a pequeños círculos rellenos. El panel de detalle del día se apila debajo de la cuadrícula como una tarjeta separada — toca la fecha que quieres, desplázate hacia abajo. El filtro de sede y el selector de pestañas ambos se mueven a la barra de herramientas pegajosa para que permanezcan accesibles.
La instalación PWA es la mejor experiencia si vives en móvil — las vistas del calendario se sienten nativas y el objetivo de toque del detalle del día es más grande. Las notificaciones push también se vuelven posibles una vez instalado, lo que alimenta el flujo de recordatorios sin pasar por créditos de SMS o WhatsApp.
