Calendar
Calendário standalone para seleção de datas. Construído sobre `react-day-picker` v10 com estilização do design system. Suporta modo único, múltiplo e range.
Utilização
index.tsx
import { Calendar } from "@convertcompany/ui";
O dia atual recebe um dot discreto abaixo do número (em vez de fundo sólido), permitindo distinguir hoje sem competir com o estado de seleção.
Exemplos
Range (intervalo)
Localização (i18n)
Passe um Locale do @convertcompany/ui/locale — esse pacote já reexporta todos os locales do date-fns.
index.tsx
import { Calendar } from "@convertcompany/ui";
import { ptBR } from "@convertcompany/ui/locale";
<Calendar mode="single" locale={ptBR} />
Dropdown de mês/ano
Desabilitar dias
index.tsx
// função: desabilita datas no passado
<Calendar
mode="single"
disabled={(d) => d < new Date(new Date().setHours(0, 0, 0, 0))}
/>
// range explícito
<Calendar
mode="single"
disabled={{ from: new Date(2025, 0, 1), to: new Date(2025, 11, 31) }}
/>
// dia da semana
<Calendar mode="single" disabled={{ dayOfWeek: [0, 6] }} />
Props principais
| Propriedade | Tipo |
|---|---|
| modeModo de seleção. | single multiple range |
| selectedValor selecionado. Tipo depende do modo (Date, Date[] ou DateRange). | Date Date[] DateRange |
| onSelectCallback de seleção. | (value) => void |
| localeLocale do date-fns para localizar nomes de meses/dias. Importe de `@convertcompany/ui/locale`. | DayPickerLocale |
| numberOfMonthsQuantos meses exibir lado a lado. Default 1. | number |
| captionLayoutLayout do cabeçalho do mês. `dropdown` permite navegação por dropdown de mês/ano. | label dropdown dropdown-months dropdown-years |
| startMonth / endMonthLimites de navegação. Usado com captionLayout=dropdown. | Date |
| disabledDatas desabilitadas. Aceita Date, Date[], DateRange, função ou objeto matcher. | Matcher Matcher[] |
| showOutsideDaysExibe dias do mês anterior/seguinte. Default true. | boolean |
| buttonVariantVariant dos botões de navegação (anterior/próximo). | ghost outline default ... |
Para a lista completa de props, consulte a documentação do react-day-picker.