• CMSnpm version

    • Overview
    • ContentBuilder
    • InviteUserForm
    • LoginForm
    • RenewPasswordForm
  • UInpm version

    • Overview
    • Accordion
    • AlertBubble
    • AnnouncementBar
    • Avatar
    • AvatarFileInput
    • Badge
    • Button
    • ButtonGroup
    • ButtonList
    • Calendar
    • Checkbox
    • CheckboxButton
    • CheckboxInput
    • CheckboxList
    • Chip
    • ColorRadio
    • ColorRadioGroup
    • Combobox
    • DatePicker
    • DatePickerInput
    • DateRangePicker
    • DateRangePickerInput
    • DatetimePicker
    • DatetimePickerInput
    • Dialog
    • Dropdown
    • Dropzone
    • ErrorMessage
    • FileInput
    • FlashMessages
    • FormComponent
    • Icon
    • IconButton
    • ImageGallery
    • InfoBox
    • Input
    • Label
    • Layout
    • Lightbox
    • ListItem
    • Loader
    • Lozenge
    • Menu
    • Message
    • Modal
    • ✅ ModalDialog
    • ✅ ModalHeader
    • MultiCombobox
    • MultiSelect
    • Pagination
    • Paper
    • Popover
    • Radio
    • RadioGroup
    • RasterImage
    • Select
    • ✅ Tabs
    • TextInput
    • TextLink
    • Textarea
    • TimePicker
    • TimePickerInput
    • Toggle
    • Tooltip
    • Typography
  • Formnpm version

    • Overview
    • AvatarFileInput
    • CheckboxButton
    • CheckboxInput
    • CheckboxList
    • ColorRadioGroup
    • Combobox
    • DatePickerInput
    • DateRangePickerInput
    • DatetimePickerInput
    • Dropzone
    • FileInput
    • Form
    • FormRenderer
    • GpsInput
    • MoneyInput
    • MultiCombobox
    • MultiSelect
    • NumberInput
    • PasswordInput
    • RadioGroup
    • Select
    • TextInput
    • Textarea
    • TimePickerInput
    • Toggle
  • DataGridnpm version

    • Overview
    • DataGrid
    • DataGridCustomExample
    • ExportButton
    • FilterList
    • Filters
    • FiltersButton
    • FulltextInput
    • HiddenColumns
    • HiddenColumnsButton
    • Pagination
    • RowCounts
    • RowsPerPageSelect
    • SelectedRowsToolbar
    • TableV2
    • ToolbarControl
    • ToolbarCustoms
    • ToolbarTabs
  • Wysiwygnpm version

    • Overview
  • Resizernpm version

    • Overview
  • Routernpm version

    • Overview
  • Corenpm version

    • Overview
  • Core-Reactnpm version

    • Overview
  • Stylesnpm version

    • Overview
  • Localizenpm version

    • Overview
  • Analyticsnpm version

    • Overview
  • Datepickernpm version

    • Overview
  • Icons-generatornpm version

    • Overview
  • Smart-addressnpm version

    • Overview
  • E2Enpm version

    • Overview
  • E2E-Playwrightnpm version

    • Overview
View source on GitLab

DatePicker

Standalone single-date picker popover: a month grid with month / year / decade navigation views. Controlled.

When to use

Use DatePicker when you need the calendar UI on its own (e.g. inside your own popover or inline panel). For a ready-made input field with a calendar popover use DatePickerInput; inside a @uxf/form form use @uxf/form/date-picker-input.

For selecting a range rather than a single day, use DateRangePicker. There is no @uxf/form twin of DatePicker itself.

Usage

"use client";

import { DatePicker } from "@uxf/ui/date-picker";
import React, { useState } from "react";

export function BasicDatePicker() {
    const [value, setValue] = useState<Date | null>(null);

    return <DatePicker onChange={setValue} selectedDate={value} />;
}

Props

Prop Type Default Description
selectedDate Date | null — Required. Currently selected date (controlled).
onChange (value: Date | null) => void — Required. Called when a day is picked.
minDate Date — Earliest selectable date; earlier dates are dimmed and blocked.
maxDate Date — Latest selectable date; later dates are dimmed and blocked.
datesConfig DatesConfig[] — Per-date CSS flags and disabled groups (see below).
onMonthChange (months: MonthType[]) => void — Fires when the visible month changes.
customButtonTitles CustomButtonTitles — Overrides for navigation button labels/titles (see below).
bottomContent ReactNode — Arbitrary JSX rendered below the grid (legend, CTA, …).
closePopoverHandler () => void — Called right after a date is selected; use it to close a wrapping popover.
preventScroll boolean — Passed to the day cell's focus() to suppress scrolling on auto-focus.
style CSSProperties — Inline style on the root element.
unavailableDates Date[] — Deprecated. Dates that cannot be selected. Prefer datesConfig with isDisabled.

Supporting types:

type DatesConfig = { flag?: string; dates: Date[]; isDisabled?: boolean };
type MonthType = { year: number; month: number; date: Date };

type CustomButtonTitles = {
    nextMonth?: string;
    prevMonth?: string;
    nextYear?: string;
    prevYear?: string;
    nextDecade?: string;
    prevDecade?: string;
    selectMonth?: string;
    selectYear?: string;
};

ViewModeType ("month" | "year" | "decade") is also exported for typing the internal navigation views.

Variants & states

  • Constrained range: set minDate / maxDate. Dates outside the window render dimmed and are non-selectable.
  • Flagged / disabled dates: pass datesConfig. Each entry attaches an optional flag (CSS class hook) to dates, and isDisabled: true blocks the whole group. This is the non-deprecated replacement for unavailableDates.
  • Navigation views: the popover switches between month, year and decade views; label the navigation buttons via customButtonTitles.

Requirements

Client component ("use client"). Import the required stylesheets once in your global CSS:

@import url("@uxf/ui/css/button.css");
@import url("@uxf/ui/css/calendar.css");
@import url("@uxf/ui/css/date-picker.css");

Also requires the global @uxf/ui token layer, set up once per app — see @uxf/ui setup.

AllFeatures
Open in new tab
Basic
Open in new tab
DatesConfigFlags
Open in new tab
MinMaxDates
Open in new tab
MinMaxWithUnavailable
Open in new tab
OnMonthChange
Open in new tab
PreSelected
Open in new tab
UnavailableDates
Open in new tab
WithBottomContent
Open in new tab