Negocios

Calendar

Componente de seleção de datas baseado no react-day-picker. Suporta seleção única, múltipla e por intervalo.

Visão geral

O Calendar exibe um calendário interativo para seleção de datas. É a base do componente Date Picker.

Seleção única

May 2026

Selecionado: 09/05/2026

Import

import { Calendar } from "@/components/ui/calendar"

Dependência

O Calendar usa react-day-picker e date-fns como dependências. Ambas foram instaladas automaticamente via shadcn CLI.

Modos de seleção

O Calendar suporta três modos de seleção controlados pela prop mode.

Single

Seleciona uma data por vez.

May 2026

Selecionado: 09/05/2026

Range

Seleciona um intervalo de datas.

May 2026

De: até

Multiple

Seleciona múltiplas datas não contínuas.

May 2026

Selecionados: 0 dia(s)

Padrão de implementação

Snippets controlados para cada modo de seleção.

Seleção única (controlled)

"use client"
import * as React from "react"
import { Calendar } from "@/components/ui/calendar"

export function MeuCalendario() {
  const [date, setDate] = React.useState<Date | undefined>(new Date())

  return (
    <Calendar
      mode="single"
      selected={date}
      onSelect={setDate}
    />
  )
}

Intervalo de datas

"use client"
import * as React from "react"
import { Calendar } from "@/components/ui/calendar"
import type { DateRange } from "react-day-picker"

export function CalendarioRange() {
  const [range, setRange] = React.useState<DateRange>({ from: undefined })

  return (
    <Calendar
      mode="range"
      selected={range}
      onSelect={(r) => setRange(r ?? { from: undefined })}
    />
  )
}

Com datas desabilitadas

<Calendar
  mode="single"
  selected={date}
  onSelect={setDate}
  disabled={(date) => date < new Date()}
/>

Com layout de dropdown (mês/ano)

<Calendar
  mode="single"
  captionLayout="dropdown"
  selected={date}
  onSelect={setDate}
/>

Props e uso

Principais props disponíveis no componente Calendar.

Props principais

mode

"single" | "multiple" | "range"

Define o comportamento de seleção de datas.

selected

Date | Date[] | DateRange

Valor controlado. Tipo depende do mode.

onSelect

(date) => void

Callback chamado ao selecionar uma data.

disabled

Matcher | Matcher[]

Desabilita datas. Aceita função, data, range, entre outros.

captionLayout

"label" | "dropdown"

Define se o cabeçalho mostra label simples ou dropdowns de mês/ano.

showOutsideDays

boolean

Exibe os dias do mês anterior/próximo na grade. Padrão: true.

Acessibilidade

O Calendar herda a acessibilidade do react-day-picker, com navegação completa por teclado: setas para mover entre dias, Enter para selecionar, PageUp/PageDown para mudar de mês.

Para datas com restrições (disabled), certifique-se de que há uma mensagem clara explicando por que a data não está disponível.

Use em conjunto com o componente Popover para criar um Date Picker acessível (ver componente Date Picker).

MN Design System · Primary #5FC318 · Brand Green #AFF000 · Font: Inter