Ravox KitFormulário

Calendário

Mês em grade com a semana começando no domingo e os nomes vindos do Intl, sem biblioteca de datas. Um dia, um intervalo (com prévia ao passar o mouse) ou vários dias; datas travadas, mínimo e máximo, dois meses lado a lado e troca rápida de mês e ano pelo título.

domsegterquaquisexsáb

Setembro 2026

Ajustes

Modo
Meses
Semana começa

Exemplos

Agenda com dias travados

domsegterquaquisexsáb

Riscados: domingo ou agenda lotada.

Setembro 2026

Reserva por período

domsegterquaquisexsáb

5 de out. – 8 de out.3 noites · R$ 1.020

Outubro 2026

Vários dias, semana na segunda

segterquaquisexsábdom

2 de 5 plantões escolhidos

Outubro 2026

Instalação

O shadcn cria components/ui/calendario.tsx no seu projeto e instala o tema junto. O arquivo é seu: edite à vontade.

npx shadcn@latest add https://ui.ravoxlabs.com/r/calendario.json

Opções

OpçãoTipoPadrãoO que faz
modo"unico" | "intervalo" | "multiplo""unico"O que se escolhe: um dia, início e fim, ou vários dias soltos.
valor / padraoDate | null · { inicio?, fim? } · Date[]—Valor controlado ou inicial, no formato do modo.
aoTrocar(valor) => void—Recebe o dia, o intervalo ou a lista de dias. No intervalo, é chamado no primeiro clique (só início) e no segundo.
min · maxDate—Primeiro e último dia possíveis. As setas e a troca de mês/ano respeitam os dois.
desabilitar(dia: Date) => boolean—Trava dias específicos (domingos, feriados, agenda lotada). Continuam navegáveis pelo teclado.
maximonumber—Com modo="multiplo": quantos dias no máximo.
meses1 | 21Meses lado a lado (no celular, um embaixo do outro).
mes · mesPadrao · aoTrocarMesDate · Date · (mes: Date) => void—Mês à mostra, controlado ou inicial (padrão: o do valor, ou o de hoje).
inicioSemana0 a 60Dia que abre a semana: 0 = domingo, 1 = segunda.
localidadestring"pt-BR"Idioma dos nomes de mês e de dia (Intl.DateTimeFormat).
diasForabooleantrueMostra apagados os dias dos meses vizinhos que completam a grade.
focarAoMontarbooleanfalsePõe o foco no dia escolhido (ou hoje) ao aparecer.
rodapeReactNode—Algo embaixo da grade: um resumo, um botão "Limpar".
...propsComponentProps<"div">—Vão para o bloco de fora (className, aria-label…).