Skip to content

TkxDatePicker

Single date

Selected: (none)

import { TkxDatePicker } from 'tekivex-ui';
const [date, setDate] = useState<Date | null>(null);
<TkxDatePicker
label="Pick a date"
value={date}
onChange={setDate}
/>
Range with built-in presets

(no range selected)

const [range, setRange] = useState<[Date | null, Date | null]>([null, null]);
<TkxDatePicker
label="Trip dates"
mode="range"
value={range}
onChange={setRange}
/>
<TkxDatePicker
mode="range"
value={range}
onChange={setRange}
showPresets // Today, Yesterday, Last 7/30/90 days, This/Last week, This/Last month
/>

Preset labels follow the active locale (currently localised in 17 languages with English fallback).

<TkxDatePicker
mode="range"
showPresets
customPresets={[
{
label: 'Q1 2026',
getValue: () => [new Date(2026, 0, 1), new Date(2026, 2, 31)],
},
{
label: 'Q2 2026',
getValue: () => [new Date(2026, 3, 1), new Date(2026, 5, 30)],
},
]}
/>
<TkxDatePicker
label="Birthday"
minDate={new Date(1900, 0, 1)}
maxDate={new Date()} // can't pick future dates
value={date}
onChange={setDate}
/>
<TkxDatePicker
showTime
timeValue={time}
onTimeChange={setTime}
value={date}
onChange={setDate}
/>

The display format follows the active locale via Intl.DateTimeFormat. To override:

<TkxDatePicker
dateFormat="yyyy-MM-dd" // ISO-style, locale-independent
value={date}
onChange={setDate}
/>
  • Trigger button has localised aria-label (e.g. “Select a date” / “تاريخ منتخب کریں”)
  • Calendar grid uses role="grid" with aria-rowcount / aria-colcount
  • Each day cell has role="gridcell" with aria-selected, aria-disabled
  • Keyboard:
    • Arrows — move by day
    • Page Up / Down — next/previous month
    • Shift+Page Up / Down — next/previous year
    • Home / End — start / end of week
    • Enter / Space — select
    • Escape — close calendar
  • Disabled dates skipped during keyboard navigation
PropTypeRequiredDescription
valueDate | null | [Date | null, Date | null]Single date or range.
onChange(value) => voidSelection change.
mode'single' | 'range'Defaults to single.
minDate / maxDateDateBounds.
showTimebooleanRender time picker alongside calendar.
showPresetsbooleanShow built-in preset shortcuts (range mode).
customPresetsDatePreset[]Override preset list.
dateFormatstringOverride locale-driven format.
placeholderstringDefaults to localised placeholder.
disabledboolean
isInvalidboolean

src/components/TkxDatePicker.tsx