Skip to content

Calendar

Selector de fecha completo, con soporte para rangos y navegación por mes/año.


Import

jsx
import { Calendar } from '@imansi/ui';

Uso básico

jsx
import { useState } from 'react';

export function Ejemplo() {
  const [fecha, setFecha] = useState(new Date());

  return (
    <Calendar
      mode="single"
      selected={fecha}
      onSelect={setFecha}
      className="rounded-md border"
    />
  );
}

Rango de fechas

jsx
const [rango, setRango] = useState({ from: null, to: null });

<Calendar
  mode="range"
  selected={rango}
  onSelect={setRango}
  numberOfMonths={2}
  className="rounded-md border"
/>

Con fechas deshabilitadas

jsx
<Calendar
  mode="single"
  selected={fecha}
  onSelect={setFecha}
  disabled={(date) => date < new Date()}
  className="rounded-md border"
/>

Múltiples meses

jsx
<Calendar mode="single" numberOfMonths={2} />

Props

PropTipoDefaultDescripción
mode'single' | 'multiple' | 'range''single'Modo de selección
selectedDate | Date[] | {from, to}Fecha(s) seleccionada(s)
onSelect(date) => voidCallback al seleccionar
disabledboolean | ((date) => boolean)Fechas deshabilitadas
numberOfMonthsnumber1Cantidad de meses visibles
localeobjectLocale de date-fns (ej: es)
classNamestringClases adicionales

Accesibilidad

  • Navegable con Tab y Flechas
  • Enter / Space selecciona
  • Page Up/Down cambia de mes
  • Home / End van al inicio/fin de la semana
  • role="grid" con aria-selected en cada día

Hecho con ❤️ en Argentina