Skip to content
v0.2.10

RangeCalendar

A Gregorian grid for selecting and previewing one continuous date interval.

Preview
Choose travel dates
October 2026
SunMonTueWedThuFriSat
Choose a start date.

Use RangeCalendar

RangeCalendar is a named export of @flood-md/react. Connect the package once, then import what you use.

First time here? Connect Flood
Example import style
range-calendar.tsxTSX
"use client";

import { FloodRoot, RangeCalendar } from "@flood-md/react";
import "@flood-md/react/styles.css";

export function Example() {
  return (
    <FloodRoot>
      <RangeCalendar label="Choose travel dates" today="2026-10-26" defaultValue={{start:"2026-10-12",end:"2026-10-18"}} />
    </FloodRoot>
  );
}

Design notes

  • The first activation chooses a start; the second completes a normalized ordered interval. Hover and focus can preview an unfinished interval without committing.
  • Controlled values include partial {start,end:""}; the host must accept that partial value to advance selection. onRangeSelect confirms an enabled completed interval.
  • isDateDisabled controls endpoints. isRangeDisabled validates the entire interval; interior blocked dates are not inferred by scanning arbitrary date spans.
  • Reuses the Calendar grid, month navigation, focus and localization contracts. Translate rangeLabels for instruction messages. Introduced in 0.2.7.

API reference

PropValuesDefault
labelstringRequired
showViewControlsboolean—
viewLabels{month?:string;year?:string;previous?:string;next?:string}—
visibleMonthstring—
defaultVisibleMonthstring—
onVisibleMonthChange(month: string) => void—
minstring—
maxstring—
disabledboolean—
readOnlyboolean—
isDateDisabled(date: string) => boolean—
weekStartsOn0 | 1 | 2 | 3 | 4 | 5 | 60
localestring"en-US"
autoFocusbooleanfalse
todaystring—
previousMonthLabelstring—
nextMonthLabelstring—
valueDateRangeValue—
defaultValueDateRangeValue—
onValueChange(range: DateRangeValue) => void—
onRangeSelect(range: DateRangeValue) => void—
isRangeDisabled(range: DateRangeValue) => boolean—
rangeLabels{ chooseStart?: string; chooseEnd?: string; unavailable?: string }—
Native HTML propsOmit<Omit<HTMLAttributes<HTMLDivElement>, "defaultValue" | "onChange" | "children">, "value" | "defaultValue" | "onValueChange" | "onDateSelect" | "granularity">Forwarded
View TypeScript source