Heading fonts

Choose a Google Fonts family. The selected font loads from Google Fonts; Inter and Geist Serif are bundled locally.

Search Reflow

Keyboard shortcuts

Use these keys while you are not typing in a field.

Search⌘K
Cycle themeT
Cycle accentA
Cycle heading fontF
Cycle radiusR
Cycle sizeS
Cycle iconsI
Cycle hoverH
Toggle navigation[
Toggle properties]
Previous / next demo slide←→
Show shortcuts?
Skip to content
Open navigationClose navigation

Make them yours

Theme
SystemT
Accent
BlueA
Heading font
InterF
Radius
RoundedR
Size
DefaultS
Icons
LucideI
Hover
FluidH

Playground variant

DatePicker

DatePicker

A date field with an anchored calendar and local ISO date values.

Installation

Import from the Reflow workspace package.

Playground

Open demo
12:00 AM
12:15 AM
12:30 AM
12:45 AM
1:00 AM
1:15 AM
1:30 AM
1:45 AM
2:00 AM
2:15 AM
2:30 AM
2:45 AM
3:00 AM
3:15 AM
3:30 AM
3:45 AM
4:00 AM
4:15 AM
4:30 AM
4:45 AM
5:00 AM
5:15 AM
5:30 AM
5:45 AM
6:00 AM
6:15 AM
6:30 AM
6:45 AM
7:00 AM
7:15 AM
7:30 AM
7:45 AM
8:00 AM
8:15 AM
8:30 AM
8:45 AM
9:00 AM
9:15 AM
9:30 AM
9:45 AM
10:00 AM
10:15 AM
10:30 AM
10:45 AM
11:00 AM
11:15 AM
11:30 AM
11:45 AM
12:00 PM
12:15 PM
12:30 PM
12:45 PM
1:00 PM
1:15 PM
1:30 PM
1:45 PM
2:00 PM
2:15 PM
2:30 PM
2:45 PM
3:00 PM
3:15 PM
3:30 PM
3:45 PM
4:00 PM
4:15 PM
4:30 PM
4:45 PM
5:00 PM
5:15 PM
5:30 PM
5:45 PM
6:00 PM
6:15 PM
6:30 PM
6:45 PM
7:00 PM
7:15 PM
7:30 PM
7:45 PM
8:00 PM
8:15 PM
8:30 PM
8:45 PM
9:00 PM
9:15 PM
9:30 PM
9:45 PM
10:00 PM
10:15 PM
10:30 PM
10:45 PM
11:00 PM
11:15 PM
11:30 PM
11:45 PM
1h 45min
11:15 AM15min
11:30 AM30min
11:45 AM45min
12:00 PM1h
12:15 PM1h 15min
12:30 PM1h 30min
12:45 PM1h 45min
1:00 PM2h
1:15 PM2h 15min
1:30 PM2h 30min
1:45 PM2h 45min
2:00 PM3h
2:15 PM3h 15min
2:30 PM3h 30min
2:45 PM3h 45min
3:00 PM4h
3:15 PM4h 15min
3:30 PM4h 30min
3:45 PM4h 45min
4:00 PM5h
4:15 PM5h 15min
4:30 PM5h 30min
4:45 PM5h 45min
5:00 PM6h
5:15 PM6h 15min
5:30 PM6h 30min
5:45 PM6h 45min
6:00 PM7h
6:15 PM7h 15min
6:30 PM7h 30min
6:45 PM7h 45min
7:00 PM8h
7:15 PM8h 15min
7:30 PM8h 30min
7:45 PM8h 45min
8:00 PM9h
8:15 PM9h 15min
8:30 PM9h 30min
8:45 PM9h 45min
9:00 PM10h
9:15 PM10h 15min
9:30 PM10h 30min
9:45 PM10h 45min
10:00 PM11h
10:15 PM11h 15min
10:30 PM11h 30min
10:45 PM11h 45min
11:00 PM12h
11:15 PM12h 15min
11:30 PM12h 30min
11:45 PM12h 45min

Date

Opens on the selected day, or today. Pick one and it closes.

Range with presets

Pick a start and an end, or a preset. It closes once the end is set.

Date and time

Type 1130 or 11:30am, or arrow through the slots. Changing the start preserves the duration.

12:00 AM
12:15 AM
12:30 AM
12:45 AM
1:00 AM
1:15 AM
1:30 AM
1:45 AM
2:00 AM
2:15 AM
2:30 AM
2:45 AM
3:00 AM
3:15 AM
3:30 AM
3:45 AM
4:00 AM
4:15 AM
4:30 AM
4:45 AM
5:00 AM
5:15 AM
5:30 AM
5:45 AM
6:00 AM
6:15 AM
6:30 AM
6:45 AM
7:00 AM
7:15 AM
7:30 AM
7:45 AM
8:00 AM
8:15 AM
8:30 AM
8:45 AM
9:00 AM
9:15 AM
9:30 AM
9:45 AM
10:00 AM
10:15 AM
10:30 AM
10:45 AM
11:00 AM
11:15 AM
11:30 AM
11:45 AM
12:00 PM
12:15 PM
12:30 PM
12:45 PM
1:00 PM
1:15 PM
1:30 PM
1:45 PM
2:00 PM
2:15 PM
2:30 PM
2:45 PM
3:00 PM
3:15 PM
3:30 PM
3:45 PM
4:00 PM
4:15 PM
4:30 PM
4:45 PM
5:00 PM
5:15 PM
5:30 PM
5:45 PM
6:00 PM
6:15 PM
6:30 PM
6:45 PM
7:00 PM
7:15 PM
7:30 PM
7:45 PM
8:00 PM
8:15 PM
8:30 PM
8:45 PM
9:00 PM
9:15 PM
9:30 PM
9:45 PM
10:00 PM
10:15 PM
10:30 PM
10:45 PM
11:00 PM
11:15 PM
11:30 PM
11:45 PM
1h 45min
11:15 AM15min
11:30 AM30min
11:45 AM45min
12:00 PM1h
12:15 PM1h 15min
12:30 PM1h 30min
12:45 PM1h 45min
1:00 PM2h
1:15 PM2h 15min
1:30 PM2h 30min
1:45 PM2h 45min
2:00 PM3h
2:15 PM3h 15min
2:30 PM3h 30min
2:45 PM3h 45min
3:00 PM4h
3:15 PM4h 15min
3:30 PM4h 30min
3:45 PM4h 45min
4:00 PM5h
4:15 PM5h 15min
4:30 PM5h 30min
4:45 PM5h 45min
5:00 PM6h
5:15 PM6h 15min
5:30 PM6h 30min
5:45 PM6h 45min
6:00 PM7h
6:15 PM7h 15min
6:30 PM7h 30min
6:45 PM7h 45min
7:00 PM8h
7:15 PM8h 15min
7:30 PM8h 30min
7:45 PM8h 45min
8:00 PM9h
8:15 PM9h 15min
8:30 PM9h 30min
8:45 PM9h 45min
9:00 PM10h
9:15 PM10h 15min
9:30 PM10h 30min
9:45 PM10h 45min
10:00 PM11h
10:15 PM11h 15min
10:30 PM11h 30min
10:45 PM11h 45min
11:00 PM12h
11:15 PM12h 15min
11:30 PM12h 30min
11:45 PM12h 45min

One time

time takes one time instead. Type a time or choose a slot.

12:00 AM
12:15 AM
12:30 AM
12:45 AM
1:00 AM
1:15 AM
1:30 AM
1:45 AM
2:00 AM
2:15 AM
2:30 AM
2:45 AM
3:00 AM
3:15 AM
3:30 AM
3:45 AM
4:00 AM
4:15 AM
4:30 AM
4:45 AM
5:00 AM
5:15 AM
5:30 AM
5:45 AM
6:00 AM
6:15 AM
6:30 AM
6:45 AM
7:00 AM
7:15 AM
7:30 AM
7:45 AM
8:00 AM
8:15 AM
8:30 AM
8:45 AM
9:00 AM
9:15 AM
9:30 AM
9:45 AM
10:00 AM
10:15 AM
10:30 AM
10:45 AM
11:00 AM
11:15 AM
11:30 AM
11:45 AM
12:00 PM
12:15 PM
12:30 PM
12:45 PM
1:00 PM
1:15 PM
1:30 PM
1:45 PM
2:00 PM
2:15 PM
2:30 PM
2:45 PM
3:00 PM
3:15 PM
3:30 PM
3:45 PM
4:00 PM
4:15 PM
4:30 PM
4:45 PM
5:00 PM
5:15 PM
5:30 PM
5:45 PM
6:00 PM
6:15 PM
6:30 PM
6:45 PM
7:00 PM
7:15 PM
7:30 PM
7:45 PM
8:00 PM
8:15 PM
8:30 PM
8:45 PM
9:00 PM
9:15 PM
9:30 PM
9:45 PM
10:00 PM
10:15 PM
10:30 PM
10:45 PM
11:00 PM
11:15 PM
11:30 PM
11:45 PM

Booked days

booked marks nights, min closes past days.

API Reference

Public props for the Reflow implementation. Native controls also accept their standard HTML attributes and Remix event mixes.

DatePicker

PropTypeDefaultDescription
clearableboolean—Adds a button that clears the selected date or range and returns focus to the picker.
placeholderstring—Hint shown while the value is empty.
disabledboolean—Prevents interaction and conveys the disabled state.
closeOnSelectbooleantrueCloses the calendar after a complete selection.
size"default" | "compact"—Control density or icon-button dimensions.
variant"ghost" | "outline"outlineVisual or layout treatment.
timeboolean—Includes a time field in the date picker.
timeRangeboolean—Adds start/end time slots and a duration. Editing the start preserves the duration up to 23:59.
stepnumber—Minutes between time slots; defaults to 15.
hourCycle12 | 24—Clock display; defaults to 12.
localestring—Time display locale; defaults to en-US for consistent server rendering.
timeValuestring—Controlled start time in HH:mm format.
defaultTimestring—Initial start time.
onTimeChange((value: string) => void)—Called when the start time changes.
endTimeValuestring—Controlled end time.
defaultEndTimestring—Initial end time.
onEndTimeChange((value: string) => void)—Called when the end time changes.
presetsreadonly { label: string; value: DateValue; }[]—Named date or date-range shortcuts.
labelstringChoose a dateAccessible name or visible label for the control.
mode"single" | "range"—Select one date or a date range.
valueDateValue—Current value when controlled by the parent.
defaultValueDateValuenullInitial value for an uncontrolled component.
onValueChange((value: DateValue) => void)—Called when the selected value changes.
minstring—Minimum allowed value.
maxstring—Maximum allowed value.
isDateDisabled((date: string) => boolean)—Determines whether a date is unavailable.
defaultMonthstring—Initially displayed month as a local ISO date.
todaystring—Pin today to a YYYY-MM-DD date shared by server and client. Otherwise the initial render uses UTC and switches to the visitor’s local day after hydration.
namestring—Name used when the control participates in a form.
weekStartsOn0 | 1—First weekday. Zero is Sunday and one is Monday.
showWeekNumbersboolean—Displays ISO week numbers.
numberOfMonths2 | 1—Number of calendar months shown together.
orientation"horizontal" | "vertical"—Layout direction.
bookedreadonly string[]—Dates marked as unavailable.
availablereadonly string[]—Explicit set of selectable dates.
minNightsnumber—Minimum nights in a selected date range.
maxNightsnumber—Maximum nights in a selected date range.
dayDetail((date: string) => RemixNode)—Additional content inside a date cell.
cellSizenumber—Date-cell dimension in pixels.

DateRange

PropTypeDefaultDescription
start*string—First date in the range.
endstring—Last date in the range.