Fluixi UI
GitHub ↗

Examples

Loading preview…

date-picker

Accessible, internationalised date picker — segmented field + popover calendar.


Pairs a @fluixi/date-field segmented input with a @fluixi/calendar popover over one shared value. Typing in the field and picking in the calendar stay in sync; choosing a day closes the popover. Locale drives everything — segment order, separators, calendar system, month/weekday names.

Installation

pnpm add @fluixi/date-picker

Usage

import {
  DatePicker,
  DatePickerLabel,
  DatePickerField,
  DatePickerContent,
} from '@fluixi/date-picker';

<DatePicker locale="en-US" onChange={console.log}>
  <DatePickerLabel>Pick a date</DatePickerLabel>
  <DatePickerField />
  <DatePickerContent />
</DatePicker>

DatePickerField renders the segmented input plus a calendar trigger button; DatePickerContent is the popover, which shows a default calendar bound to the shared value (pass children to override it).

Date range picker

DateRangePicker pairs two segmented fields (start / end) with a popover range calendar over one shared { start, end } value. Each endpoint holds its own partial entry; the committed value stays null until both ends are set.

import {
  DateRangePicker,
  DateRangePickerLabel,
  DateRangePickerField,
  DateRangePickerContent,
} from '@fluixi/date-picker';

<DateRangePicker locale="en-US" onChange={(r) => console.log(r?.start, r?.end)}>
  <DateRangePickerLabel>Trip dates</DateRangePickerLabel>
  <DateRangePickerField />
  <DateRangePickerContent />
</DateRangePicker>

Parts mirror the single picker: DateRangePicker, DateRangePickerLabel, DateRangePickerField, DateRangePickerTrigger, DateRangePickerContent, DateRangePickerCalendar. Props match DatePicker except value / defaultValue / onChange use DateRange ({ start, end }).

Props (DatePicker)

Prop Type Default Description
locale string BCP-47 locale for the field and calendar.
value DateValue | null Controlled value.
defaultValue DateValue | null Initial uncontrolled value.
onChange (value) => void Fired when the value changes (field or calendar).
granularity 'day' | 'hour' | 'minute' | 'second' 'day' Field precision.
hourCycle 12 | 24 locale Force a clock convention.
minValue / maxValue DateValue Selectable bounds.
isDateUnavailable (date) => boolean Disable individual dates.
isDisabled / isReadOnly boolean false Field/picker state.
name string Hidden input with the ISO value for forms.
open / defaultOpen / onOpenChange Control the popover.
placement Placement 'bottom-start' Popover placement.

Parts

Component Description
DatePicker Root; owns the shared value and popover state.
DatePickerLabel Field label.
DatePickerField Bordered control: segmented input + trigger button.
DatePickerTrigger The calendar button (rendered by DatePickerField by default).
DatePickerContent Floating popover; renders DatePickerCalendar by default.
DatePickerCalendar The default calendar bound to the shared value.