For AI agents: the complete documentation index is available at https://wallarm.github.io/design-system/llms.txt, the full documentation bundle is available at https://wallarm.github.io/design-system/llms-full.txt, and this page is available as Markdown at https://wallarm.github.io/design-system/components/date-range-input.md.

DateRangeInput

Two dates in one field, for a period the reader knows — pair it with Calendar in range mode when they need to see the months to choose. Same rules as DateInput: React Aria date objects, and order and hour cycle from DateFormatProvider rather than per input.

Source · Storybook

Usage

import { DateRangeInput, type DateRangeInputProps } from '@wallarm-org/design-system/DateRangeInput';

Examples

With icon

Decoration again, not a trigger — reach for Calendar when the icon should open a picker.

States

Default, disabled and error. The error applies to the range as a whole, since a start without an end is not yet an answer.

Sizes

The shared height scale. A range is wider than a single date, so check it against the column it lives in.

Filled

A complete range beside an empty one, which is the clearest way to see how much width the filled state needs.

Granularity

Both ends share one granularity. Add time only when the period genuinely turns on it — a report covering part of a day rather than whole days.

Date order comparison

Day-first against month-first from the provider, doubly worth seeing here because an ambiguous range is twice as easy to misread.

Hour cycle by context

12-hour against 24-hour from the provider, with no per-input override.

Read only

Both ends legible, no edit affordances.

Props

PropTypeDefaultDescription
showIconboolean | undefinedWhether to show the leading icon. Default: true.
errorboolean | undefinedWhether the input has an error state. Sets aria-invalid and error styling.
disabledboolean | undefinedWhether the input is disabled. Prevents user interaction.
readOnlyboolean | undefinedWhether the input is read-only. Segments are focusable but not editable.
placeholderstring | undefinedPlaceholder shown when no value is selected.
sizeTemporalInputSize | undefinedVisual size. Default: 'default' (36px).
titlestring | undefined
defaultCheckedboolean | undefined
autoFocusboolean | undefined
idstring | undefined
tabIndexnumber | undefined
relstring | undefined
data-testidstring | undefined
valuecomplexControlled value — range with start and end dates.
defaultValuecomplexDefault value for uncontrolled mode.
onChangecomplexCallback fired when the range value changes. Receives null on clear.
granularity"day" | undefined
showTimeDropdownundefined
timeStepundefined

DateRangeEndValue

PropTypeDefaultDescription
titlestring | undefined
defaultCheckedboolean | undefined
defaultValuestring | number | readonly string[] | undefined
autoFocusboolean | undefined
idstring | undefined
tabIndexnumber | undefined
relstring | undefined
onChangeChangeEventHandler<T, Element> | undefined
data-testidstring | undefined

DateRangeStartValue

PropTypeDefaultDescription
titlestring | undefined
defaultCheckedboolean | undefined
defaultValuestring | number | readonly string[] | undefined
autoFocusboolean | undefined
idstring | undefined
tabIndexnumber | undefined
relstring | undefined
onChangeChangeEventHandler<T, Element> | undefined
data-testidstring | undefined