Contextos

O pacote headless fornece provedores de Contexto que encapsulam os hooks e expõem seu estado via React Context. Isso habilita o padrão de componente composto (compound component pattern) — divida sua UI em subcomponentes pequenos e focados que leem o estado do contexto em vez de passar props.

Por que Contextos?

Sem contexto, você passaria cada parte do estado através de props:

// Sem contexto -- prop drilling
function MyDatePicker() {
const picker = useDatePicker({ value, onChange });
return (
<MyTrigger displayValue={picker.displayValue} onToggle={picker.handleToggle} />
<MyCalendar calendar={picker.calendar} getDayProps={picker.getDayProps} ... />
<MyFooter onConfirm={picker.handleConfirm} onCancel={picker.handleCancel} ... />
);
}

Com contexto, os subcomponentes consomem o que precisam diretamente:

// Com contexto -- componentes compostos
function MyDatePicker() {
return (
<DatePickerProvider value={value} onChange={onChange}>
<ExampleWrapper variant="headless" client:visible>
<MyTrigger client:visible />
</ExampleWrapper>
<ExampleWrapper variant="headless" client:visible>
<MyCalendar client:visible />
</ExampleWrapper>
<ExampleWrapper variant="headless" client:visible>
<MyFooter client:visible />
</ExampleWrapper>
</DatePickerProvider>
);
}
function MyTrigger() {
const { displayValue, handleToggle } = useDatePickerContext();
return <button onClick={handleToggle}>{displayValue}</button>;
}

Provedores Disponíveis

ProvedorHook Usado InternamenteHook Consumidor
DatePickerProvideruseDatePickeruseDatePickerContext()
DateRangePickerProvideruseDateRangePickeruseDateRangePickerContext()
DateTimePickerProvideruseDateTimePickeruseDateTimePickerContext()
DateRangeTimePickerProvideruseDateRangeTimePickeruseDateRangeTimePickerContext()

Cada provedor renderiza tanto um contexto tipado (específico para aquele tipo de seletor) quanto o PickerContext unificado (compartilhado entre todos os tipos).

import {
DatePickerProvider,
DateRangePickerProvider,
DateTimePickerProvider,
DateRangeTimePickerProvider,
} from "react-date-range-picker-headless";

DatePickerProvider

Encapsula useDatePicker. Fornece DatePickerContext + PickerContext.

import type { DatePickerProviderProps } from "react-date-range-picker-headless";
PropTipoDescrição
childrenReactNodeObrigatório. Componentes filhos.
valueDate | nullObrigatório. Data atual.
onChange(date: Date | null) => voidObrigatório. Manipulador de alteração.
inlinebooleanRenderiza em linha (sem popup).
sizeDatePickerSizeVariação de tamanho.
placeholderstringPlaceholder do acionador.
namestringNome do campo do formulário.
…restBaseDatePickerOptionsTodas as opções base (minDate, maxDate, locale, etc.).

Hook consumidor: useDatePickerContext() retorna UseDatePickerReturn.

DateRangePickerProvider

Encapsula useDateRangePicker. Fornece