jotis.meRegula

CalendarView

Calendario mensual con eventos en cada día, cabecera con fecha de hoy y navegación.

Cuándo usarlo

Props. events [{date, title, time, color (colores de Badge)}], today, month, maxEvents (3; el resto como "N más…"), onSelectDate(date), subtitle, actions.

Visual. Celdas de 112px con borde border-secondary; días de otro mes en bg-secondary; hoy en círculo bg-brand-solid. Eventos como chips utility (-50 fondo, -200 borde, -700 texto).

Límites. Solo vista de mes. Las vistas de semana y día del archivo no están: si una app las necesita, se añaden.

Accesibilidad. Es una tabla de verdad: cabeceras Lu…Do y una fila por semana (en la guía era una rejilla sin filas, que no es ARIA válido). Cada día lleva su fecha completa para lectores de pantalla ("jueves, 29 de octubre, hoy"). Con onSelectDate, el número de cada día es un botón (teclado) y la celda entera responde al clic. Al cambiar de mes se anuncia el nuevo.

Detalles. El "hoy" sale de la prop today (por defecto, la fecha actual); fíjala si el servidor y el navegador pueden estar en días distintos.

Contraste de "N más…". En la guía va en utility-neutral-500, que en oscuro no llega a 4,5:1 (3,8:1 sobre los días de otro mes). Aquí va en text-quaternary: el mismo gris en claro y más claro en oscuro (7,7:1).

Ejemplos

Octubre 2026

Pagos y recordatorios

LuMaMiJuViSáDo
lunes, 28 de septiembre
martes, 29 de septiembre
miércoles, 30 de septiembre
jueves, 1 de octubre
Alquiler650 €
viernes, 2 de octubre
sábado, 3 de octubre
domingo, 4 de octubre
lunes, 5 de octubre
Electricidad
martes, 6 de octubre
miércoles, 7 de octubre
jueves, 8 de octubre
viernes, 9 de octubre
sábado, 10 de octubre
domingo, 11 de octubre
lunes, 12 de octubre
martes, 13 de octubre
miércoles, 14 de octubre
jueves, 15 de octubre
Seguro coche
Gimnasio
Netflix
1 más…
viernes, 16 de octubre
sábado, 17 de octubre
domingo, 18 de octubre
lunes, 19 de octubre
martes, 20 de octubre
miércoles, 21 de octubre
jueves, 22 de octubre
viernes, 23 de octubre
sábado, 24 de octubre
domingo, 25 de octubre
lunes, 26 de octubre
martes, 27 de octubre
miércoles, 28 de octubre
jueves, 29 de octubre, hoy
Revisión semanal18:00
viernes, 30 de octubre
sábado, 31 de octubre
domingo, 1 de noviembre

Props

PropTipoPor defectoDescripción
eventsCalendarEvent[][]
todayDate—El día que se marca como hoy (por defecto, la fecha del sistema).
monthDate—Mes que se ve al principio. Por defecto, el de today.
maxEventsnumber3Eventos por día; el resto se resume como "N más…".
onSelectDate((date: Date) => void)—Al pulsar un día (con ratón, o con teclado sobre su número).
subtitleReactNode—
actionsReactNode—Acciones a la derecha de la cabecera, como "Nuevo evento".
classNamestring—

Código

import { CalendarView } from "@jotis-me/react";

export default function Page() {
	return (
		<>
			<CalendarView
				events={[{ date: new Date(2026, 9, 29), title: "Pago del alquiler", color: "brand" }]}
				onSelectDate={(fecha) => abrirDia(fecha)}
			/>
		</>
	);
}

Sin directiva pinta el mes sin JavaScript. Cambiar de mes y onSelectDate necesitan una isla .tsx con client:load.