Skip to content
v0.2.10

DatePicker

A segmented date field with an integrated calendar picker and shared form value.

Preview

Use DatePicker

DatePicker 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
date-picker.tsxTSX
"use client";

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

export function Example() {
  return (
    <FloodRoot>
      <DatePicker label="Start date" name="start" defaultValue="2026-10-26" today="2026-10-26" />
    </FloodRoot>
  );
}

Design notes

  • Composes Flood DateField, Calendar and Popover; text input and visual selection share one canonical value and form bridge.
  • Activate the calendar icon or Alt+ArrowDown in a segment. Escape/outside dismissal returns or preserves intended focus through the existing overlay engine. Selecting a day closes the calendar.
  • Read only and disabled prevent opening or date changes; native disabled fieldsets remain inert. Invalid/incomplete drafts retain native DateField validation.
  • Controlled value and open state are independently host-owned. Native form reset restores the initial uncontrolled date and preserves cancelled resets. Translate calendarLabel/openCalendarLabel, month navigation, segment labels and messages.
  • DateField remains the keyboard-entry primitive; Calendar remains independently usable. Introduced in the unpublished 0.2.7 source candidate.

API reference

PropValuesDefault
labelstringRequired
hideLabelboolean—
valuestring—
defaultValuestring—
onValueChange(value: string) => void—
minstring—
maxstring—
requiredboolean—
readOnlyboolean—
disabledboolean—
namestring—
formstring—
controlSize"sm" | "md" | "lg" | "xl""md"
invalidboolean—
status"error" | "warning" | "success" | "info"—
descriptionstring—
order"month-day-year" | "day-month-year" | "year-month-day"—
segmentLabelsPartial<Record<"day" | "month" | "year", string>>—
messages{ required?: string; invalid?: string; outOfRange?: string }—
validationMessagestring—
openboolean—
defaultOpenbooleanfalse
onOpenChange(open: boolean) => void—
calendarLabelstring—
openCalendarLabelstring—
localestring—
weekStartsOn0 | 1 | 2 | 3 | 4 | 5 | 6—
todaystring—
previousMonthLabelstring—
nextMonthLabelstring—
Native HTML propsOmit<Omit<HTMLAttributes<HTMLDivElement>, "defaultValue" | "onChange" | "children">, "end">Forwarded
View TypeScript source