• CMSnpm version

    • Overview
    • ContentBuilder
    • InviteUserForm
    • LoginForm
    • RenewPasswordForm
    • WysiwygInput
  • UInpm version

    • Overview
    • Accordion
    • AlertBubble
    • AnnouncementBar
    • Avatar
    • AvatarFileInput
    • Badge
    • Button
    • ButtonGroup
    • ButtonList
    • Calendar
    • Checkbox
    • CheckboxButton
    • CheckboxInput
    • CheckboxList
    • Chip
    • ColorRadio
    • ColorRadioGroup
    • Combobox
    • DatePicker
    • DatePickerInput
    • DateRangePicker
    • DateRangePickerInput
    • DatetimePicker
    • DatetimePickerInput
    • Dialog
    • Dropdown
    • Dropzone
    • ErrorMessage
    • FileInput
    • FlashMessages
    • FormComponent
    • Icon
    • IconButton
    • ImageGallery
    • InfoBox
    • Input
    • Label
    • Layout
    • Lightbox
    • ListItem
    • Loader
    • Lozenge
    • Menu
    • Message
    • Modal
    • ✅ ModalDialog
    • ✅ ModalHeader
    • MultiCombobox
    • MultiSelect
    • Pagination
    • Paper
    • Popover
    • Radio
    • RadioGroup
    • RasterImage
    • Select
    • Switch
    • ✅ Tabs
    • TextInput
    • TextLink
    • Textarea
    • TimePicker
    • TimePickerInput
    • Toggle
    • Tooltip
    • Typography
  • Formnpm version

    • Overview
    • AvatarFileInput
    • CheckboxButton
    • CheckboxInput
    • CheckboxList
    • ColorRadioGroup
    • Combobox
    • DatePickerInput
    • DateRangePickerInput
    • DatetimePickerInput
    • Dropzone
    • FileInput
    • Form
    • FormRenderer
    • GpsInput
    • MoneyInput
    • MultiCombobox
    • MultiSelect
    • NumberInput
    • PasswordInput
    • RadioGroup
    • Select
    • TextInput
    • Textarea
    • TimePickerInput
    • Toggle
  • DataGridnpm version

    • Overview
    • DataGrid
    • DataGridCustomExample
    • ExportButton
    • FilterList
    • Filters
    • FiltersButton
    • FulltextInput
    • HiddenColumns
    • HiddenColumnsButton
    • Pagination
    • RowCounts
    • RowsPerPageSelect
    • SelectedRowsToolbar
    • TableV2
    • ToolbarControl
    • ToolbarCustoms
    • ToolbarTabs
  • Wysiwygnpm version

    • Overview
  • Resizernpm version

    • Overview
  • Routernpm version

    • Overview
  • Corenpm version

    • Overview
  • Core-Reactnpm version

    • Overview
  • DnDnpm version

    • Overview
  • Stylesnpm version

    • Overview
  • Localizenpm version

    • Overview
  • Analyticsnpm version

    • Overview
  • Datepickernpm version

    • Overview
  • Icons-generatornpm version

    • Overview
  • Smart-addressnpm version

    • Overview
  • E2Enpm version

    • Overview
  • E2E-Playwrightnpm version

    • Overview
View source on GitLab

DateRangePicker

Standalone date-range picker popover: pick a start and end date across one or more months. Controlled.

When to use

Use DateRangePicker when you need the range-calendar UI on its own (inside your own popover or inline panel). For a ready-made input field with a range popover use DateRangePickerInput; inside a @uxf/form form use @uxf/form/date-range-picker-input.

For selecting a single day, use DatePicker. There is no @uxf/form twin of DateRangePicker itself.

Usage

"use client";

import { noop } from "@uxf/core/utils/noop";
import { DateRangePicker, DateRangePickerValueType } from "@uxf/ui/date-range-picker";
import React, { useState } from "react";

export function BasicDateRangePicker() {
    const [value, setValue] = useState<DateRangePickerValueType>(null);

    return <DateRangePicker onChange={setValue} onClosePopover={noop} selectedDates={value} />;
}

Props

PropTypeDefaultDescription
selectedDatesDateRangePickerValueType—Required. Selected range { from: Date | null; to: Date | null } | null (controlled).
onChange(value: DateRangePickerValueType) => void—Required. Called whenever the range changes.
onClosePopover() => void—Required. Called to close a wrapping popover.
minDateDate—Earliest selectable date.
maxDateDate—Latest selectable date.
minSelectedDaysnumber—Minimum length of the range, in days.
exactSelectedDaysnumber—Locks the range to an exact number of days.
numberOfMonthsnumber1Number of months shown side by side.
datesConfigDatesConfig[]—Per-date CSS flags and disabled groups.
bottomContentReactNode—Arbitrary JSX rendered below the grid.
styleCSSProperties—Inline style on the root element.
unavailableDatesDate[]—Deprecated. Blocked dates; prefer datesConfig with isDisabled.

DateRangePickerValueType ({ from: Date | null; to: Date | null } | null) and ViewModeType ("month" | "year" | "decade") are exported. DatesConfig has the shape { flag?: string; dates: Date[]; isDisabled?: boolean }.

Variants & states

  • Constrained range: set minDate / maxDate; dates outside the window are dimmed and blocked.
  • Minimum / exact stay: minSelectedDays enforces a minimum span; exactSelectedDays pins the range to a fixed length (selecting a start auto-highlights the end).
  • Multi-month view: numberOfMonths={2} shows two months side by side for easier range selection.
  • Flagged / disabled dates: datesConfig attaches CSS flags and disables groups independently of unavailableDates.

Requirements

Client component ("use client"). Import the required stylesheets once in your global CSS (it reuses the single-date picker stylesheet):

@import url("@uxf/ui/css/button.css");
@import url("@uxf/ui/css/calendar.css");
@import url("@uxf/ui/css/date-picker.css");
@import url("@uxf/ui/css/date-range-picker.css");

Also requires the global @uxf/ui token layer, set up once per app — see @uxf/ui setup.

AllFeatures
Open in new tab
Basic
Open in new tab
DatesConfigFlags
Open in new tab
DstBoundaryOct2026
Open in new tab
ExactStayDays
Open in new tab
MinMaxDates
Open in new tab
MinStayDays
Open in new tab
PreSelected
Open in new tab
TwoMonthView
Open in new tab
UnavailableDates
Open in new tab
WithBottomContent
Open in new tab